11주차 소프트웨어 공학: 구현 및 테스트
01. 프로그래밍 언어의 역사
포트란 (FORTRAN)
- FORmula TRANslation
- IBM이 우주항공 분야에서 사용하기 위해 만든 초창기 고급 언어
베이직 (BASIC)
- Beginner's All-purpose Symbolic Instruction Code
- 교육용으로 만든 쉬운 문법의 언어
C언어
- 현재 가장 널리 쓰이는 명령형 언어
- 거의 모든 환경에서 사용 가능
C++
- C 언어에 객체지향 개념 추가
C#
- 마이크로소프트가 닷넷 프레임워크 일부로 만든 객체지향 프로그래밍 언어
자바 (Java)
- 선 마이크로시스템즈의 제임스 고슬링이 개발
- JVM을 사용하여 플랫폼 독립적
02. 표준 코딩 규칙의 필요성
표준 코딩 규칙의 장점
- 높은 가독성
- 간결하고 명확한 코딩
- 개발 시간 단축 및 유지보수 향상
코딩 규칙 예시
- 나쁜 예와 좋은 예를 통해 규칙 준수 필요성 설명
03. 주요 표준 코딩 규칙
명칭 규칙
- 명칭은 31자 이내
- 변수명과 함수명은 별도로 구별
- 특수 문자는 언더바(_)만 사용
- 명칭 규칙: 매크로명과 상수명은 대문자, 변수명과 함수명은 소문자로 시작
- 포인터 변수명은 앞에 'p'를 붙임
소스 형식 규칙
- 소스 파일은 200줄 이내, 한 줄은 80자 이내
- 함수의 크기는 70줄 이내
- 여는 중괄호는 문장 끝, 닫는 중괄호는 문장 시작에 위치
주석 규칙
- 주석 내용: 최초 작성자, 작성일, 목적, 개정 이력, 저작권
- 메서드 정의 앞에 목적, 매개변수, 반환 값, 변경 이력을 주석으로 작성
변수 선언 및 자료형 규칙
- 용도가 같은 변수는 한 줄에 작성
- 배열 선언 시 요소 수 명시하거나 초기화
- 배열 초기화 시 중괄호 적절히 사용
- 지역 변수는 선언 시 초기화
- 부호 없는 자료형은 끝에 'u'를 붙임
상수 규칙
- 상수는 10진수, 16진수로 표현
- 숫자 리터럴은 const 변수를 사용
수식 규칙
- 단항 연산자는 피연산자와 붙여 씀
- 이항 연산자는 전후에 공백을 넣음
- 삼항 연산자는 맨 앞의 수식을 괄호로 묶음
문장 규칙
- switch 문에서 case 문을 빠져나오기 위해 break 문 사용
- goto 문 사용 자제
- for 문을 제어하는 수식에 실수 값 사용 불허
- if~else 문의 끝은 else 문으로 종료
04. 테스트
테스트 이해
- 소프트웨어 테스트는 울타리를 치는 것과 같음 (사후약방문 방지)
- 테스트는 결함이 있음을 보여줄 뿐, 결함이 없음을 증명할 수는 없음
테스트 분류
- 확인 테스트: 개발자의 시각에서 테스트
- 검증 테스트: 사용자의 요구 사항대로 만들었는지 테스트
사용 목적에 따른 테스트
- 성능, 강건성, 스트레스, 부하, 보안, 안정성, 신뢰성, 사용성 테스트 등
프로그램 실행 여부에 따른 테스트
- 정적 테스트: 프로그램 실행 없이 코드를 검토하며 오류를 찾는 방법
- 동적 테스트: 프로그램을 실행하면서 오류를 찾는 방법
05. 소프트웨어 개발 단계에 따른 테스트
단위 테스트
- 프로그램의 기본 단위인 모듈을 테스트
- 단위 테스트 시 테스트 드라이버와 스텁 사용
통합 테스트
- 단위 테스트가 끝난 모듈을 통합하여 발생할 수 있는 오류를 찾는 테스트
- Big-bang 테스트, 하향식(top-down) 기법, 상향식(bottom-up) 기법
시스템 테스트
- 시스템 전체가 정상적으로 작동하는지를 체크
- 주로 부하 상황에서 수행
인수 테스트
- 시스템이 예상대로 동작하는지 확인하고 요구 사항에 맞는지 확신하기 위해 사용자 주도로 진행
- 알파 테스트, 베타 테스트
회귀 테스트
- 원시 코드의 결함을 수정한 후 제대로 수정되었는지 확인하는 테스트
- 관련된 모듈까지 문제가 없는지 테스트
추가 항목들
구현 기반 테스트 (화이트박스 테스트)
- 입력 데이터를 가지고 실행 상태를 추적하여 오류를 찾아내는 동적 테스트
- 프로그램 내부 구조를 테스트 설계의 기반으로 사용
- 테스트 데이터 적합성 기준 선정, 테스트 데이터 생성, 테스트 실행 절차 포함.
명세 기반 테스트 (블랙박스 테스트)
- 입력 값에 대한 예상 출력 값을 정해놓고 결과가 나오는지를 체크
- 문법 기법, 동등 분할 기법, 경계 값 분석 기법, 원인-결과 그래프 기법 사용.
테스트 케이스 작성
- 테스트 기법 결정 후 테스트 케이스 도출
- 원시 데이터를 작성하여 테스트 실행 및 결과 문서화.
오류 추적 및 수정
- 테스트 결과를 분석하고, 오류 수정 계획을 세우고, 디버깅 도구를 이용해 수정
- 수정된 내용을 검토한 후 결과 보고서 작성
Comments 0