1. 단위 기능 명세서
- 설계 과정에서 단위 기능을 명세화한 문서
- 추상화: 복잡한 시스템을 단순히 구현
- 구조화: 시스템을 분해하여 단위 기능별로 구분하고 계층적으로 구성
- 정보 은닉: 단위 모듈(Unit Module)의 독립적 운용과 다른 모듈의 접근/변경 막도록 고려
2. IPC
- Inter-Process Communication
- 모듈 간 통신 방식을 구현하는 프로그래밍 인터페이스 집합
- 복수 프로세스 수행시 이루어지는 프로세스 간 통신 구현
- Shared Memory: 다수 프로세스가 공유 메모리 구성하여 통신
- Socket: 네트워크 소켓 이용하여 경유 프로세스 간 통신
- Semaphores: 공유 자원에 대한 접근 제어
- Pipes & named Pipes: 파이프(선입선출)로 구성된 메모리를 프로세스 간 공유하고 한 파이프가 이용 중이면 다른 프로세스 접근 못함
- Message Queueing: 메시지 발생 시 전달
3. 테스트 케이스
- Test Case
- 명세 기반 테스트의 설계 산출물로 모듈이 제대로 작성되었는지 확인하기 위해 입력될 수 있는 값들과 예상 결과를 나열한 목록의 명세서
- 단위 모듈 테스트(Unit Test)를 하기 전에 만듦
- 테스트 케이스를 이용하지 않는 직관적 테스트는 검증 누락/반복으로 인한 인력/시간 낭비 우려
- 식별자(Identifier): 항목, 일련번호
- 테스트 항목(Test Item): 대상(모듈/기능)
- 입력 명세(Input Specification): 데이터 또는 테스트 조건
- 출력 명세(Output Specification): 수행시 기대 출력 결과
- 환경 설정(Envirionmental Needs): 필요 하드웨어/소프트웨어 환경
- 특수 절차 요구(Special Procedure Requirement): 특별 요구 절차
- 의존성 기술(Inter-case Dependencies): 테스트 케이스 간 의존성
4. 단위 모듈 테스트
- Unit Test
- 프로그램의 단위 기능 구현 모듈이 정해진 기능을 정확히 수행하는지 검증
- 화이트박스 테스트: 소스 코드 오픈 상태에서 논리적 경로 테스트
- 블랙박스 테스트: 소프트웨어의 특정 기능이 완전히 작동하는지 입증
- 모듈 단독 실행 환경과 테스트에 필요한 데이터 준비돼야
- 통합 후 오래 추척해야 발견할 에러를 단위 모듈 테스트로 쉽게 수정
- 시스템 수준 오류는 못잡음
5. 테스트 프로세스
- 테스트 시 수행하는 모든 작업이 목적과 조건을 달성해야
- 5단계
1. 계획 및 제어: 계획 수립 후 그대로 진행되도록 제어
2. 분석 및 설계: 목표를 구체화하여 테스트 케이스와 적용 순서대로 묶어 명세한 테스트 시나리오(Test Scenario) 작성
3. 구현 및 실현: 테스트 케이스의 실행 순서인 테스트 프로시저(Test Procedure)/테스트 스크립트(Test Script)를 명세하고 모듈의 환경에 맞는 단위 테스트 도구 이용하여 수행
4. 평가: 테스트가 계획과 목표대로 수행되었는지 평가 및 기록
5. 완료: 수행 증거자료와 차후 테스트를 위한 참고자료로 쓰기 위해 수행 과정과 산출물 기록/저장
6. IDE
- Integrated Development Environment(통합 개발 환경)
- 편집기(Editor), 컴파일러(Compiler), 디버거(Debugger) 등을 하나의 인터페이스로 제공하는 소프트웨어
- 코드 자동 생성 혹은 컴파일(Compile)
- 툴 다운로드하여 추가
- 코드 실행 및 테스트 시 발생 오류를 시각화
- 외부 서비스(배포/버전 관리/오픈소스 커뮤니티)와 연동
- 플랫폼, 운영체제, 언어별로 다양
- 대표적 도구
- 이클립스(Eclipse)
- 비주얼 스튜디오(Visual Studio)
- 엑스 코드(Xcode)
- 안드로이드 스튜디오(Android Studio)
- IDEA
7. 빌드 도구
- 소스 코드 파일을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로의 변환 과정에 필요한 전처리, 컴파일 등 수행
- Preprocessing: 컴파일 전 코드의 주석, 매크로 등 처리
8. 단위 모듈
- Unit Module
- 소프트웨어에 필요한 동작들 중 하나의 기능(단위 기능)만을 구현한 모듈
- 두 모듈이 합쳐지면 두 기능 구현
- 전달받은 값으로 시작하는 작은 프로그램
- 처리문, 명령문, 데이터 구조 등으로 구성
- 독립적으로 컴파일 가능
- 다른 모듈로 호출되거나 삽입 가능
- 단위 기능 명세서 작성하고 입/출력 기능과 알고리즘 구현
- 입/출력 기능
- 데이터 형식에 따라 단위 모듈 간 연동/통신을 위한 데이터 구현
- CLI(Command Line Interface), GUI(Graphical User Interface)와의 연동 고려
- Open source API로 네트워크나 외부 장치와의 입/출력 간단 구현
- 알고리즘 구현
- 단위 기능별 요구사항을 구현 가능한 언어로
- 사용자 요구와 일치하는지 확인 필요
- 디바이스 드러이버 모듈, 네트워크 모듈, 파일 모듈, 메모리 모듈, 프로세스 모듈
9. Ant
- Another Neat Tool
- 아파치 소프트웨어 재단(Apache Software Foundation)의 자바 프로젝트 공식 빌드 도구
- XML 기반 빌드 스크립트 사용
- 자유도와 유연성 높아 복잡한 빌드 환경에 대처
- 개발자가 모든 규칙과 표준 정의
- 스크립트 재사용 어려움
10. Maven
- Ant의 대안으로 아파치에서 개발
- 규칙과 표준 존재
- 예외사항만 기록
- 컴파일과 빌드 동시 수행
- 의존성(Dependency) 설정하여 라이브러리(Library) 관리