[정처기 필기] 「2」 | 통합 구현 - (2.1) 단위 모듈 구현, 테스트, 개발 지원 도구
「1」 소프트웨어 설계
> 「2」 소프트웨어 개발
- 데이터 입 / 출력 구현, > 통합 구현, 제품 소프트웨어 패키징, 애플리케이션 테스트 관리, 인터페이스 구현
「3」 데이터베이스 구축
「4」 프로그래밍 언어 활용
「5」 정보시스템 구축 관리
> 1 단위 모듈 구현
> 2 단위 모듈 테스트
> 3 개발 지원 도구
1. 단위 모듈 구현
단위 모듈(Unit Module)의 개요
소프트웨어 구현에 필요한 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현
- 단위 모듈로 구현되는 하나의 기능을 단위 기능이라 부름
- 값을 전달받아 시작되는 작은 프로그램을 의미
- 두 개의 단위 모듈이 합쳐질 경우, 두 개의 기능 구현
- 구성 요소에는 처리문, 명령문, 데이터 구조 등
- 독립적인 컴파일 가능, 다른 모듈에 호출, 삽입
- 단위 기능 명세서를 작성 > 입 / 출력 기능 구현 > 알고리즘 구현
단위 기능 명세서 작성
설계 과정에서 작성하는 기능 / 코드 명세서, 설계 지침과 같이 단위 기능을 명세화한 문서
- 복잡한 시스템을 단순하게 구현, 추상화 작업 필요
- 대형 시스템을 분해, 단위 기능별로 구분, 각 기능들을 계층적으로 구성하는 구조화 과정을 거침
- 모듈의 독립적인 운용, 모듈 내의 정보가 다른 모듈에게 영향 주지 않도록 정보 은닉 고려
입 / 출력 기능 구현
단위 기능 명세서에서 정의한 데이터 형식에 따라 입 / 출력 기능을 위한 알고리즘, 데이터 구현
- 단위 모듈 간 연동, 외부와의 통신을 위한 입 / 출력 데이터 구현
- 사용자 인터페이스인 CLI, GUI와의 연동을 고려해야 함
- 네트워크나 외부 장치와의 입 / 출력은 Open Source API 이용
>IPC(Inter-Process Communication)<
모듈 간 통신 방식을 구현하기 위해 사용되는 프로그래밍 인터페이스 집합, 복수의 프로세스 수행, 프로세스 간 통신까지 구현 가능
- Shared Memory : 다수의 프로세스가 공유 가능한 메모리 구성, 프로세스 간 통신을 수행
- Socket : 네트워크 소켓을 이용하여, 네트워크를 경유하는 프로세스 간 통신을 수행
- Semaphores : 공유 자원에 대한 접근 제어를 통해 프로세스 간 통신을 수행
- Pipes&named Pipe : 'Pipe'라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신 수행
- Message Queueing : 메시지 발생, 이를 전달하는 형태로 프로세스 간 통신을 수행
알고리즘 구현
입 / 출력 데이터를 바탕으로 단위 기능별 요구 사항들을 구현가능한 언어로 모듈로 구현
- 구현된 단위 기능들이 요구와 일치하는지 확인하는 과정 필요
- 구현되는 모듈은 단위 기능의 종류에 따라 디바이스 드라이버 모듈, 네트워크 모듈, 파일 모듈, 메모리 모듈, 프로세스 모듈 등 구분
디바이스 드라이버 모듈
: 하드웨어 주변 장치의 동작을 구현한 모듈
네트워크 모듈
: 네트워크 장치 / 데이터 통신을 위한 기능을 구현한 모듈
파일 모듈
: 컴퓨터 내부의 데이터 구조 영역에 접근하는 방법을 구현한 모듈
메모리 모듈
: 파일을 프로세스의 가상 메모리에 매핑 / 해제하는 방법, 프로세서 사이의 통신 기능을 구현한 모듈
프로세스 모듈
: 하나의 프로세스 안에서 다른 프로세스를 생성하는 방법을 구현한 모듈
2. 단위 모듈 테스트
단위 모듈 테스트의 개요
프로그램 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증
- 단위 테스트(Unit Test)라고도 불리며, 화이트박스 테스트, 블랙박스 테스트 기법 이용
- 모듈을 단독적으로 실행할 수 있는 환경과 테스트에 필요한 데이터가 모두 준비되어야 함
- 모듈의 통합 이후 오랜시간 추적해야 발견할 수 있는 에러들도, 쉽게 발견, 수정
- 테스트의 기준은 단위 모듈에 대한 코드이므로 시스템 수준의 오류는 잡아낼 수 없음
테스트 케이스(Test Case)
설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서, 명세 기반 테스트의 설계 산출물에 해당
- 단위 모듈을 테스트 하기 전, 입력 데이터, 테스트 조건, 예상 결과를 모아 테스트 케이스 만듦
- 테스트 케이스를 사용하지 않는 직관적인 테스트는 검증이 누락되거나 불필요한 검증의 반복, 인력과 시간낭비 가능성
- ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스 구성 요소
: 식별자(Identifier) - 항목 식별자, 일련번호
: 테스트 항목(Test Item) - 테스트 대상(모듈, 기능)
: 입력 명세(Input Specification) - 입력 데이터, 테스트 조건
: 출력 명세(Output Sepcification) - 예상되는 출력 결과
: 환경 설정(Environmental Needs) - 필요한 하드웨어나 소프트웨어 환경
: 특수 절차 요구(Special Procedure Requirement) - 특별히 요구되는 절차
: 의존성 기술(Inter-case Dependencies) - 테스트 케이스 간의 의존성
테스트 프로세스
테스트를 위해 수행하는 모든 작업들이 테스트의 목적과 조건을 달성하게 도와주는 과정
1 계획 및 제어 : 테스트 목표 달성을 위한 계획 수립, 계획대로 진행되도록 제어
2 분석 및 설계 : 테스트 목표를 구체화, 테스트 시나리오와 테스트 케이스 작성
3 구현 및 실현 : 테스트 케이스를 조합하여 테스트 프로시저(테스트 케이스 실행 순서)에 명세, 모듈의 환경에 적합한 단위 테스트 도구 이용하여 테스트 수행
4 평가 : 계획과 목표에 맞게 수행되었는지 평가, 기록
5 완료 : 테스트를 위한 참고 자료, 테스트 수행에 대한 증거 자료로 활용하기 위해 수행과정과 산출물을 기록, 저장
3. 개발 지원 도구
통합 개발 환경(IDE; Integrated Development Environment)
코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램에서 처리할 수 있도록 제공하는 소프트웨어적 개발 환경
- 편집기, 컴파일러, 디버거 등 다양한 툴들을 하나의 인터페이스로 통합하여 제공
- 통합 개발 환경을 제공하는 소프트웨어
- 플랫폼, 운영체제, 언어별 다양하게 존재
- 대표적인 기능
: 코딩(Coding) - 프로그래밍 언어로 프로그램을 작성
: 컴파일(Compile) - 고급 언어로 된 프로그램을 컴퓨터가 이해할 수 있는 저급언어로 된 목적 프로그램으로 번역, 컴퓨터에서 실행 가능한 형태로 변환
: 디버깅(Debugging) - 소프트웨어나 하드웨어의 오류나 잘못된 동작, 버그(Bug)를 찾아 수정하는 기능
: 배포(Deployment) - 소프트웨어를 사용자에게 전달하는 기능
빌드 도구
소스 코드 파일들을 컴퓨터에서 실행 할 수 있는 제품 소프트웨어로 변환하는 과정, 결과물
- 변환하는 과정에 필요한 전처리(Preprocessing). 컴파일(Compile) 등의 작업들을 수행하는 소프트웨어
- Ant, Maven, Gradle 등
Ant(Another Neat Tool)
: 아파치 소프트웨어 재단에서 개발한 소프트웨어, 자바 프로젝트의 공식적인 빌드 도구로 사용
: XML 기반의 빌드 스크립트 사용, 자유도와 유연성 높아 복잡한 빌드 환경에도 대처 가능
: 정해진 규칙이나 표준이 없어 개발자가 모든 것을 정의, 스크립트의 재사용이 어려움
Maven
: 아파치 소프트웨어 재단에서 개발한 소프트웨어, Ant의 대안으로 개발
: 규칙이나 표준이 존재하여, 예외 사항만 기록, 컴파일과 빌드를 동시에 수행
: 의존성을 활용하여 라이브러리 관리
Gradle
: Ant와 Maven을 보완하여 개발된 빌드 도구
: 한스 도커 외 6인의 개발자가 모여 공동 개발
: 안드로이드 스튜디오의 공식 빌드 도구로 채택된 소프트웨어
: 의존성을 활용하여 그루비(Groovy) 기반의 빌드 스크립트를 사용
기타 협업 도구
개발에 참여하는 사람들이 서로 다른 작업 환경에서 원활히 프로젝트를 수행하도록 도와주는 도구(Tool), == 협업 소프트웨어, 그룹웨어(Groupware)
협업 도구의 종류
- 프로젝트 및 일정 관리
: 진행 상태, 일정 등을 공유하는 기능을 제공
: 구글 캘린더(Google Calendar), 분더리스트(Wunderlist), 트렐로(Trello), 지라(Jira), 플로우(Flow) 등
- 정보 공유 및 커뮤니케이션
: 주제별로 구성원들을 지목하여 방 개설, 정보 공유, 대화
: 파일 관리 간편, 의사소통이 자유로움
: 슬랙(Slack), 잔디(Jandi), 태스크월드(Taskworld) 등
- 디자인
: 디자이너가 설계한 UI, 이미지의 정보를 코드화하여 개발자에게 전달하는 기능
: 스케치(Sketch), 제플린(Zeplin) 등
- 기타
: 아이디어 공유에 사용되는 에버노트(Evernote)
: API를 문서화하여 개발자간 협업을 도와주는 스웨거(Swagger)
: 깃(Git)의 웹 호스팅 서비스인 깃허브(GitHub)
출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)
'💠기타 > 자격증' 카테고리의 다른 글
[정처기 필기] 「2」 | 제품 소프트웨어 패키징 - (3.2) 소프트웨어 버전 등록, 관리 기구, 빌드 자동화 기구 (0) | 2024.01.29 |
---|---|
[정처기 필기] 「2」 | 제품 소프트웨어 패키징 - (3.1) 소프트웨어 패키징, 디지털 저작권 관리, 소프트웨어 설치, 사용자 매뉴얼 작성 (0) | 2024.01.28 |
[정처기 필기] 「2」 | 데이터 입 / 출력 구현 - (1.3) 데이터베이스 개요, 절차형 SQL (0) | 2024.01.26 |
[정처기 필기] 「2」 | 데이터 입 / 출력 구현 - (1.2) 정렬, 검색 - 이분 검색 / 해싱 (1) | 2024.01.26 |
[정처기 필기] 「2」 | 데이터 입 / 출력 구현 - (1.1) 자료구조, 트리 (1) | 2024.01.25 |