2과목 - 소프트웨어 개발
2장. 통합 구현
38. 단위 모듈 구현
단위 모듈 (Unit Module) 개요
- 단위 모듈은 소프트웨어 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
- 단위 모듈은 독립적인 컴파일이 가능하며 다른 모듈에 호출되거나 삽입 또한 가능
- 단위 모듈 구현 순서
- 단위 기능 명세서 작성
- 입출력 기능 구현
- 알고리즘 구현
단위 기능 명세서 작성
- 단위 기능 명세서를 작성하는 단계에서는 추상화 작업이 필요 (복잡한 시스템을 단순히 구현하기 위해)
- 대형 시스템을 분해아여 단위 기능별로 구분하고, 각 기능들을 계층적으로 구성
입출력 기능 구현
- 단위 기능 명세서에서 정의한 데이터 형식에 따라 데이터 구현
- 사용자 인터페이스인 CLI, GUI와의 연동 고려
- IPC (Inter-Process Communication) : 모듈 간 통신 방식을 구현하기 위해 사용되는 인터페이스 집합
- Shared Memory : 공유 가능한 메모리를 구성하여 프로세스 간 통신 구현
- Socket : 네트워크 소켓을 이용하여 프로세스 간 통신 수행
- Semaphores : 공유 자원에 대한 접근 제어를 통해 프로세스 간 통신 수행
- Pipes & named Pipes : 파이프를 여러 프로세스가 공유하여 통신 수행
- 하나의 파이프가 사용 중이면 다른 프로세스는 접근 불가
- Message Queueing : 메시지를 전달하는 형태로 프로세스 간 통신 수행
알고리즘 구현
- 입출력 데이터를 바탕으로 구현 가능한 언어를 이용하여 모듈로 구현
- 구현된 단위 기능들이 사용자의 요구와 일치하는지 확인
39. 단위 모듈 테스트
단위 모듈 테스트의 개요
- 프로그램의 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증
- 단위 테스트 기법
- 화이트박스 테스트 : 모듈의 소스 코드를 오픈시킨 상태에서 모든 논리적인 경로를 테스트
- 블랙박스 테스트 : 소프트웨어가 수행할 특정 기능이 완전히 작동되는 것을 입증하는 테스트
- 단위 모듈에 대한 테스트이므로 시스템 수준의 오류는 잡아낼 수 없음
테스트 케이스 (Test Case)
- 테스트 케이스를 이용하지 않고 수행하는 직관적인 테스트는 인력과 시간을 낭비할 수 있음
- ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스 구성 요소
- 식별자 (Identifier) : 항목 식별자, 일련번호
- 테스트 항목 (Test Item)
- 입력 명세 (Input Specification) : 입력 데이터 또는 테스트 조건
- 출력 명세 (Output Specification) : 테스트 케이스 수행 시 예상되는 결과
- 환경 설정 (Environmental Needs)
- 특수 절차 요구 (Special Procedure Requirement) : 테스트 케이스 수행 시 요구되는 절차
- 의존성 기술 (Inter-case Dependencies) : 테스트 케이스 간의 의존성
테스트 프로세스
- 계획 및 제어 단계
- 테스트 목표를 달성하기 위한 계획 수립
- 분석 및 설계 단계
- 테스트 시나리오와 테스트 케이스 작성
- 구현 및 실현 단계
- 효율적인 테스트 수행을 위해 테스트 프로시저 (테스트 실행 순서)에 명세
- 평가 단계
- 테스트가 목표에 맞게 수행되었는지 평가하고 기록
- 완료 단계
- 수행 과정과 산출물을 기록 및 저장
40. 개발 지원 도구
통합 개발 환경 (IDE, Integrated Development Environment)
- 통합 개발에 필요한 다양한 툴을 하나의 인터페이스로 통합하여 제공하는 것을 의미
- 코드의 자동 생성 및 컴파일이 가능하고 추가 기능을 위한 도구들을 다운로드하여 사용 가능
빌드 도구
- 빌드는 소스 파일을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 과정
- 빌드 도구는 변환하는 과정에 필요한 전처리, 컴파일 등의 작업을 수행하는 소프트웨어
- Ant (Another Neat Tool) : 아파치 소프트웨어 재단에서 개발
- 자바 프로젝트의 공식적인 빌드 도구
- 정해진 규칙이나 표준 없이 개발자가 모든 것을 정의하기 때문에 스크립트 재사용이 어려움
- Maven : 아파치 소프트웨어 재단에서 개발 (Ant의 대안)
- 규칙이나 표준이 존재하여 예외 사항만 기록
- 의존성을 설정하여 라이브러리 관리
- Gradle : 기존의 Ant와 Maven을 보완하여 개발된 빌드 도구
- 안드로이드 스튜디오의 공식 빌드 도구
- Groovy 기반의 빌드 스크립트 사용
- Ant (Another Neat Tool) : 아파치 소프트웨어 재단에서 개발
기타 협업 도구
- 협업 도구는 서로 다른 작업 환경에서 원활히 프로젝트를 수행할 수 있도록 도와주는 툴
- 일정 관리, 업무흐름 관리, 커뮤니케이션 등의 업무 보조 도구 포함
- PC 뿐만 아니라 웹, 스마트폰 등 다양한 플랫폼에서 사용할 수 있도록 제공