-
[정보처리기사] 2장 소프트웨어 개발 : 2장. 통합 구현정보처리기사 2022. 2. 28. 19:17728x90반응형
1. 단위 모듈 구현
2. 단위 모듈 테스트
3. 개발 지원 도구1. 단위 모듈 구현
단위 모듈의 개요
- 소프트웨어 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
- 사용자나 다른 모듈로부터 값을 전달받아 시작되는 작은 프로그램을 의미
- 단위 모듈의 구성요소: 처리문, 명령문, 데이터 구조
- 독립적인 컴파일이 가능하며, 다른 모듈에 호출되거나 삽압되기도 함
1) 단위 기능 명세서 작성
- 설계 과정에서 작성하는 기능 및 코드 명세서나 설계 지침과 같이 단위 기능을 명세화한 문서
- 복잡한 시스템을 단순하게 구현하기 위한 추상화 작업이 필요
- 대형 시스템을 분해하여 단위 기능별로 구분하고, 각 기능들을 계층적으로 구성하는 구조화 과정을 거침
- 모듈의 독립적인 운용과 한 모듈 내의 정보가 다른 모듈에 영향을 주지 않도록 정보 은닉의 원리를 고려
2) 입출력 기능 구현
- 단위 기능 명세서에서 정의한 데이터 형식에 따라 입출력 기능을 위한 알고리즘 및 데이터를 구현
- 단위 모듈 간의 연동 또는 통신을 위한 입출력 데이터 구현
- 사용자 인터페이스인 CLI, GUI와의 연동을 고려
- 네트워크나 외부 장치와의 입출력은 무료로 공개되어 있는 Open Source API를 이용하면 간편하게 구현 가능
IPC
- 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합으로,
복수의 프로세스를 수행하며 이뤄지는 프로세스 간 통신까지 구현 가능
- 대표 메소드: Shared Memory, Socket, Semaphores, Pipes&named Pipes, Message Queueing
3) 알고리즘 구현
- 입출력 데이터를 바탕으로 단위 기능별 요구 사항들을 구현 가능한 언어를 이용하여 모듈로 구현
- 구현된 단위 기능들이 사용자의 요구와 일치하는지 확인하는 과정 필요
(1) 디바이스 드라이버 모듈: 하드웨어 주변 장치의 동작을 구현한 모듈
(2) 네트워크 모듈: 네트워크 장비 및 데이터 통신을 위한 기능을 구현한 모듈
(3) 파일 모듈: 컴퓨터 내부의 데이터 구조 영역에 접근하는 방법을 구현한 모듈
(4) 메모리 모듈: 파일을 프로세스의 가상 메모리에 매핑/해제하는 방법, 프로세스 사이의 통신 기능을 구현한 모듈
(5) 프로세스 모듈: 하나의 프로세스 안에서 다른 프로세스를 생성하는 방법을 구현한 모듈
2. 단위 모듈 테스트
단위 모듈 테스트의 개요
- 프로그램의 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것
- 단위 테스트라고도 하며, 화이트박스 테스트와 블랙박스 테스트 기법을 사용
(* 화이트박스 테스트: 모듈의 소스 코드를 오픈시킨 상태에서 소스 코드의 모든 논리적인 경로를 테스트하는 방법/
블랙박스 테스트: 소프트웨어가 수행할 특정 기능이 완전히 작동되는 것을 입증하는 테스트)
- 모듈을 단독적으로 실행할 수 있는 환경과 테스트에 필요한 데이터가 모두 준비되어야 함
- 모듈의 통합 이후에는 오랜 시간 추적해야 발견할 수 있는 에러들도 단위 모듈 테스트를 수행하면 쉽게 발견하고 수정할 수 있음
- 단위 모듈 테스트의 기준은 단위 모듈에 대한 코드이므로 시스템 수준의 오류는 잡아낼 수 없음
테스트 케이스
- 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서로, 명세 기반 테스트의 설계 산출물에 해당됨
- 단위 모듈을 테스트하기 전에 테스트에 필요한 입력 데이터, 테스트 조건, 예상 결과 들을 모아 테스트 케이스를 만듦
- 테스트 케이스를 이용하지 않고 수행하는 직관적인 테스트는 특정 요소에 대한 검증이 누락되거나 불필요한 검증의 반복으로 인해 인력과 시간을 낭비할 수 있음
테스트 케이스의 구성 요소 (ISO/IEC/IEEE 29119-3 표준)
- 식별자, 테스트 항목, 입력 명세, 출력 명세, 환경 설정, 특수 절차 요구, 의존성 기술
테스트 프로세스
- 테스트를 위해 수행하는 모든 작업들이 테스트의 목적과 조건을 달성할 수 있도록 도와주는 과정
3. 개발 지원 도구
통합 개발 환경(IDE)
- 개발에 필요한 환경, 즉 편집기, 컴파일러, 디버거 등의 다양한 툴을 하나의 인터페이스로 통합하여 제공하는 것
- 코드의 자동 생성 및 컴파일이 가능하고 추가 기능을 위한 도구들을 다운로드하여 추가할 수 있음
- Eclipse, Visual Studio, Xcode, Android Studio, IDEA
빌드 도구
- 빌드는 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물
- 빌드 도구는 소스 코드를 소프트웨어로 변환하는 과정에서 필요한 전처리, 컴파일 등의 작업을 수행하는 소프트웨어
1) Ant
- 아파치 소프트웨어 재단에서 개발한 소프트웨어로, 자바 프로젝트의 공식적인 빌드 도구로 사용됨
- XML 기반의 빌드 스크립트를 사용하며, 자유도와 유연성이 높아 복잡한 빌드 환경에서도 대처 가능
- 정해진 규칙이나 표준이 없어 개발자가 모든 것을 정의하며, 스크립트의 재사용이 어려움
2) Maven
- Ant와 동일한 아파치 소프트웨어 재단에서 개발된 것으로 Ant의 대안으로 개발됨
- 규칙이나 표준이 존재하여 예외 사항만 기록하면 되며, 컴파일과 빌드를 동시에 수행할 수 있음
- 의존성을 설정하여 라이브러리를 관리
3) Gradle
- 기존의 Ant와 Maven을 보완하여 개발된 빌드 도구
- 한스 도커 외 6인 개발자가 모여 공동 개발
- 안드로이드 스튜디오의 공식 빌드 도구로 채택된 소프트웨어
- Maven과 동일하게 의존성을 활용하며 그루비 기반의 빌드 스크립트를 사용
기타 협업 도구
- 개발에 참여하는 사람들이 서로 다른 작업 환경에서 원활히 프로젝트를 수행할 수 있도록 도와주는 도구로, 협업 소프트웨어, 그룹웨어 등으로 불림
협업 도구의 종류
1) 프로젝트 및 일정 관리: 구글 캘린더, 분더리스트, 트렐로, 지라, 플로우
2) 정보 공유 및 커뮤니케이션: 슬랙, 잔디, 태스크월드
3) 디자인: 스케치, 제플린
4) 기타: 에버노트, 스웨거, 깃허브
LIST'정보처리기사' 카테고리의 다른 글
[정보처리기사] 2장 소프트웨어 개발 : 3장. 소프트웨어 패키징 (0) 2022.02.28 [정보처리기사] 2과목 소프트웨어 개발 : 1장. 데이터 입출력 구현 (0) 2022.02.28 [정보처리기사] 3과목 데이터베이스 구축 : 5장. 데이터 전환 (0) 2022.02.25 [정보처리기사] 3과목 데이터베이스 구축 : 4장. SQL 활용 (0) 2022.02.25 [정보처리기사] 3과목 데이터베이스 구축 : 2장. 물리 데이터베이스 설계 (0) 2022.02.25