[정처기 필기] 「2」 | 통합 구현 - (2.1) 단위 모듈 구현, 테스트, 개발 지원 도구

728x90

[정처기 필기] 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 기본서 (길벗알앤디)

 

728x90