관리 메뉴

SW

[2020 정보처리기사 필기] 통합 구현 본문

대학교/자격증

[2020 정보처리기사 필기] 통합 구현

SWKo 2020. 8. 17. 15:31

38. 단위 모듈 구현

1. 단위 모듈(Unit Module)의 개요

- 단위 모듈은 소프트웨어 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것이다.

- 단위 모듈로 구현되는 하나의 기능을 단위 기능이라고 부른다.

- 단위 모듈은 독립적 컴파일이 가능하며, 다른 모듈에 호출되거나 삽입되기도 한다.

- 단위 모듈을 구현하기 위해서는 단위 기능 명세서를 작성한 후 입출력 기능알고리즘을 구현해야 한다.

 

2. 단위 기능 명세서 작성

- 단위 기능 명세서는 설계 과정에서 작성하는 기능 및 코드 명세서나 설계 지침과 같이 단위 기능을 명세화한 문서들을 의미한다.

- 단위 기능 명세서를 작성하는 작성하는 단계에서는 복잡한 시스템을 단순하게 구현하기 위한 추상화 작업이 필요하다.

- 단위 기능별로 구분하고, 각 기능들을 계층적으로 구성하는 구조화 과정을 거친다.

- 정보 은닉의 원리를 고려한다.

 

3. 입출력 기능 구현

- 단위 모듈 간의 연동 또는 통신을 위한 입출력 데이터를 구현한다.

- CLI, GUI 와의 연동을 고려한다.

- 네트워크나 외부장치와의 입출력은 Open Source API를 이용하면 간편하게 구현할 수 있다.

 

4. IPC(Inter-Process Communication)

- 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합으로, 복수의 프로세스를 수행하여 이뤄지는 프로세스 간 통신까지 구현이 가능하다.

- IPC의 대표 메소드 5가지

       - Shared Memory : 다수의 프로세스가 공유 가능한 메모리를 구성하여 프로세스 간 통신을 수행

       - Socket : 네트워크 소켓을 이용해 네트워크를 경유하는 프로세스들 간 통신을 수행한다.

       - Semaphores : 공유 자원에 대한 접근 제어를 통해 프로세스 간 통신을 수행한다.

       - Pipes & names Pipes : 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신을 수행한다.

       - Message Queuing : 메시지가 발생하면 이를 전달하는 형태로 프로세스 간 통신을 수행한다.

 

5. 알고리즘 구현

- 입출력 데이터를 바탕으로 단위 기능별 요구 사항들을 구현 가능한 언어를 이용하여 모듈로 구현한다.

- 구현되는 모듈은 단위 기능의 종류에 따라 다음과 같이 나뉜다.

       - 디바이스 드라이버 모듈 : 하드웨어 주변 장치의 동작을 구현한 모듈

       - 네트워크 모듈 : 네트워크 장비 및 데이터 통신을 위한 기능을 구현한 모듈

       - 파일 모듈 : 컴퓨터 내부의 데이터 구조 영역에 접근하는 방법을 구현한 모듈

       - 메모리 모듈 : 파일을 프로세스의 가상 메모리에 매핑/해제하는 방법, 프로세스 사이의 통신 기능을 구현한 모듈

       - 프로세스 모듈 : 하나의 프로세스 안에서 다른 프로세스를 생성하는 방법을 구현한 모듈

 

핵심

- 단위 모듈 : 소프트웨어 구현을 위해 필요한 여러 동작 중 한 가지 동작을 수행하는 작은 기능을 모듈로 구현한 것

- 단위 모듈을 구현하기 위해서는 단위 기능 명세서 작성 -> 입출력 기능 구현 -> 알고리즘 구현

- IPC : Shared Memory, Sockert, Semaphres, Pipes, Message Queuing

- 단위 기능 종류에 따른 분류 : 디바이스 드라이버 모듈, 네트워크 모듈, 파일 모듈(컴퓨터 내부), 메모리 모듈(매핑), 프로세스 모듈


39. 단위 모듈 테스트

1. 단위 모듈 테스트의 개요

- 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것

- 단위 테스트(Unit Test)라고도 하며, 화이트 박스 테스트블랙박스 테스트 기법을 사용한다.

- 모듈을 단독적으로 실행할 수 있는 환경과 테스트에 필요한 데이터가 모두 준비되어야 한다.

- 모듈의 통합 이후에는 오랜 시간 추적해야 발견할 수 있는 에러들도 단위 모듈 테스트 수행하면 쉽게 발견하고 수정 가능하다.

- 시스템 수준의 오류는 잡아낼 수 없다.

 

2. 테스트 케이스(Test Case)

- 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서로 명세 기반 테스트의 설계 산출물에 해당한다.

- 테스트하기 전 입력 데이터, 테스트 조건, 예상 결과 등을 모아 테스트 케이스를 만든다.

- 테스트 케이스를 이용하지 않은 테스트는 인력과 시간을 낭비할 수 있다.

- 테스트 케이스의 구성요소 : 식별자, 테스트 항목, 입력 명세, 출력 명세, 환경 설정, 특수 절차 요구, 의존성 기술

 

3. 테스트 프로세스

- 테스트를 위해 수행하는 모든 작업들이 테스트의 목적과 조건을 달성할 수 있도록 도와주는 과정이다.

- 테스트 프로세스 5단계

1) 계획 및 제어 단계 : 테스트 목표를 달성하기 위한 계획을 수립, 계획대로 진행되도록 제어하는 단계

2) 분석 및 설계 단계 : 테스트 목표를 구체화하여 테스트 시나리오와 테스트 케이스를 작성하는 단계

3) 구현 및 실현 단계 : 테스트 케이스들을 조합하여 테스트 프로시저에 명세하는 단계

4) 평가 단계 : 테스트가 계획과 목표에 맞게 수행되었는지 평가하고 기록하는 단계

5) 완료 단계 : 이후의 테스트를 위한 참고 자료 및 테스트 수행에 대한 증거 자료로 활용하기 위해 수행 과정과 산출물을 기록 및 저장하는 단계

 

핵심

- 단위 모듈 테스트는 시스템 수준의 오류들을 찾아내기 어렵다.

- 테스트 케이스의 구성요소 : 식별자, 테스트 항목, 입력 명세, 출력 명세(예상 결과값), 환경 설정, 특수 절차 요구, 의존성 기술

- 테스트 프로세스 5단계 : 계획 및 제어(계획 수립), 분석 및 설계(테스트케이스 작성), 구현 및 실행(테스트 프로시저에 명세), 평가(평가하고 기록), 완료(산출물을 기록 및 저장)


40. 개발 지원 도구

1. 통합 개발 환경(IDE; Integrated Development Environment)

- 통합 개발 환경은 개발에 필요한 환경, 즉 편집기, 컴파일러, 디버거 등의 다양한 툴을 하나의 인터페이스로 통합하여 제공하는 것을 의미한다.

- 코드의 자동 생성 및 컴파일이 가능하고 추가 기능을 다운로드하여 추가할 수 있다.

- 오류가 발생한 부분을 시각화하므로 수정이 용이

- 외부의 다양한 서비스와 연동하여 개발에 편의를 제공

- Eclipse(Java, C, C++ 등), Visual Studio(Basic, C, C++ 등), XCode(C, C++, C#, Java, AppleScript 등), Android Studio(Java, C, C++ 등), IDEA(Java, JSP, Kotlin 등)

 

2. 빌드 도구

- 빌드는 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물을 말한다.

- 빌드 도구는 소스 코드를 소프트웨어로 변환하는 과정에 필요한 전처리(Preprocessing), 컴파일(Compile) 등의 작업들을 수행하는 소프트웨어를 말한다.

- 대표적인 도구로는 Ant, Maven, Gradle 등이 있다.

- Ant

       - 아파치에서 개발한 소프트웨어로, 자바 프로젝트의 공식적인 빌드 도구로 사용되고 있다.

       - XML 기반의 빌드 스크립트를 사용하며, 자유도와 유연성이 높아 복잡한 빌드 환경에도 대처가 가능하다.

       - 정해진 규칙이나 표준이 없어 개발자가 모든 것을 정의하며, 스크립트의 재사용이 어렵다.

- Maven

       - Ant의 대안으로 개발됨

       - 규칙이나 표준이 존재하여 예외 사항만 기록하면 되며, 컴파일과 빌드를 동시에 수행할 수 있다.

       - 의존성(Dependency)을 설정하여 라이브러리를 관리한다.

- Gradle

       - Ant와 Maven을 보완하여 개발된 빌드 도구

       - 안드로이드 스튜디오의 공식 빌드 도구로 채택된 소프트웨어

       - Maven과 동일하게 의존성을 활용하며, 그루비 기반의 빌드 스크립트를 사용한다.

 

3. 기타 협업 도구

- 개발에 참여하는 사람들이 서로 다른 작업 환경에서 원활히 프로젝트를 수행할 수 있도록 도와주는 도구로, 협업 소프트웨어, 그룹웨어 등으로 불린다.

- 협업 도구에는 일정 관리, 업무흐름 관리, 정보 공유, 커뮤니케이션 등의 업무 보조 도구가 포함되어 있다.

- 협업 도구는 웹 기반, PC, 스마트폰 등 다양한 플랫폼에서 사용할 수 있도록 제공된다.

- 프로젝트 및 일정 관리 : 구글 캘린더, 분더리스트(Wunderlist), 트렐로(Trello), 지라(Jira), 플로우(Flow) 등

- 정보 공유 및 커뮤니케이션 : 슬랙(Slack), 잔디(Jandi), 태스크월드(Taskworld) 등

- 디자인 : 스케치(Sketch), 제플린(Zeplin)

- 기타 : 아이디어 공유에 사용되는 에버노트(Evernote), API를 문서화하는 스웨거(Swagger), 깃의 웹호스팅 서비스인 깃허브(GitHub)

 

핵심

- IDE의 역할과 종류

- 빌드 도구의 역할과 종류

- 협업 도구의 역할과 종류

Comments