자격증/2020 정보처리기사 필기

2020 정보처리기사 필기 - 2.2 통합 구현

지식냠냠 2020. 4. 16. 12:17
반응형



▶ 038 단위 모듈 구현



단위 모듈(Unit Module)

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

- 단위 모듈로 구현되는 하나의 기능을 단위 기능이라고 칭함

- 단위 모듈은 사용자나 다른 모듈로부터 값을 전달받아 시작되는 작은 프로그램을 의미하기도 함

- 두 개의 단위 모듈이 합쳐지면 두개의 기능을 구현할 수 있음

- 단위 모듈의 구성 요소 : 처리문, 명령문, 데이터 구조 등

- 독립적인 컴파일 가능, 다른 모듈에 호출되거나 삽입되기도 함

- 단위 모듈 구현 순서 : 단위 기능 명세서 작성 → 입출력 기능 구현  알고리즘 구현 



1. 단위 기능 명세서 작성

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

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

- 이 단계에서는 대형 시스템을 분해해 단위 기능을 구분하고, 각 기능들을 계층적으로 구성하는 구조화 과정을 거침

- 단위 기능 명세서 작성 시 모듈의 독립적인 운용과 한 모듈 내의 정보가 다른 모듈에 영향을 주지 않도록 정보 은닉의 원리 고려



2. 입출력 기능 구현

단위 기능 명세서에서 정의한 데이터 형식에 따라 입출력 기능을 위한 알고리즘 및 데이터 구현

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

- 입출력 기능 구현 시 CLI, GUI와의 연동 고려

*CLI(Command Line Interface) : Telnet이나 DOS와 같이 키보드를 통해 명령어를 입력받음

*GUI(Graphical User Interface) : 윈도우, MacOS와 같이 키보드, 마우스 등의 도구를 통해 화면의 아이콘, 메뉴 등 그래픽 요소로 명령을 입력 받음

- 입부출력 기능 구현 시 네트워크나 외부 장치의 입출력은 Open Source API를 이용하면 간편 구현 가능


☞ IPC(Inter-Process Communication)

모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합

- 복수의 프로세스를 수행하며 이뤄지는 프로세스 간 통신까지 구현 가능

- IPC의 대표 메소드 5가지

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

> Socket : 네트워크 소켓을 이용해 네트워크를 공유하는 프로세스들 간 통신을 수행

> Semaphores : 공유 지원에 대한 접근 제어를 통해 프로세스 간 통신 수행

> Pipes & named Pipes : 'Pipe'라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신 수행

> Message Queuing : 메세지가 발생하면 이를 전달하는 형태로 프로세스 간 통신 수행 



3. 알고리즘 구현

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

- 구현된 단위 기능들이 사용자의 요구와 일치하는지 확인하는 과정 필요

- 구현되는 모듈의 종류를 단위 기능의 종류에 따라 다음으로 구분 할  

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

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

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

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

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



▶ 039 단위 모듈 테스트



단위 모듈 테스트

프로그램의 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것

- 단위 테스트라고도 하며, 화이트박스 테스트와 블랙박스 테스트 기법을 사용

*화이트박스 테스트 : 모듈의 소스 코드를 오픈시킨 상태에서 소스 코드의 모든 논리적 경로를 테스트하는 방법

*블랙박스 테스트 : 소프트웨어가 수행할 특정 기능이 완전히 작동되는 것을 입증하는 테스트

- 단위 모듈 테스트의 기준은 단위 모듈에 대한 코드이므로 시스템 수준의 오류는 잡아낼 수 없음 



테스트 케이스(Test Case)

모듈이 올바르게 작성되었는지 확인하기 위해 모듈에 입력될 수 있는 여러 값들과 예상 결과들을 나열해 목록을 만드는 과정

- 테스트 항목에 대한 명세서로, 명세 기반 테스트의 설계 산출물에 해당

- 테스트 케이스를 이용하지 않는 직관적인 테스트는 인력과 시간을 낭비할 수 있음

- ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스의 구성 요소는 다음과 같음

> 식별자(Identifier) : 항목 식별자, 일련번호

> 테스트 항목(Test Item) : 테스트 대상

> 입력 명세(Input Specification) :  입력 데이터 또는 테스트 조건

> 출력 명세(Output Specification) : 테스트 케이스 수행 시 예상되는 출력 결과

> 환경 설정(Environmental Needs) : 필요한 하드웨어나 소프트웨어의 환경

> 특수 절차 요구(Special Procedure Requirement) : 테스트 케이스 수행 시 특별히 요구되는 절차

> 의존성 기술(Inter-case Dependencies) : 테스트 케이스 간의 의존성



테스트 프로세스

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


• 테스트 프로세스 5단계

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

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

*테스트 시나리오 : 테스트 케이스들을 적용하는 구체적인 절차를 명세한 문서

③ 구현 및 실행 단계 : 효율적인 테스트 수행을 위해 테스트 케이스들을 조합해 테스트 프로시저에 명세하는 단계

*테스트 프로시저 : 테스트 케이스의 실행 순서를 의미

④ 평가 단계 : 테스트가 계획과 목표에 맞게 수행되었는지 평가, 기록

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



▶ 040 개발 지원 도구



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

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

- 통합 개발 환경을 제공하는 소프트웨어를 의미

- 코드의 자동 생성 및 컴파일 가능, 추가 기능을 위한 도구들을 다운로드 할 수 있음

- 코드를 실행하거나 테스트할 때 오류가 발생한 부분을 시각화하므로 수정 용이

- 외부의 다양한 서비스와 연동 가능 

- 통합 개발 환경을 지원하는 대표적인 도구는 다음과 같음

프로그램

개발사

플랫폼

운영체제 

지원 언어

이클립스(Eclipse) 

Eclipse Foundation, IBM

크로스 플랫폼

Windows, Linux, MacOS 등

JAVA, C++, C, PHP, JSP 등

비주얼 스튜디오

(Visual studio)

Microsoft

Win32, Win64

Windows 

Basic, C++, C, C#, .NET 등 

엑스 코드(Xcode) 

Apple 

Mac, iPhone

MacOS, iOS 

C++, C, C#, JAVA

안드로이스 스튜디오

(Android Studio)

Google 

Android 

Windows, Linux, MacOS 

JAVA, C, C++

IDEA 

JetBrains 

크로스 플랫폼 

Windows, Linux, MacOS 

JAVA, JSP, XML, GO, Kotlin 등



빌드 도구

소스 코드를 소프트웨어로 변환하는 과정에 필요한 전처리, 컴파일 등의 작업들을 수행하는 소프트웨어

*전처리(Preprocessing) : 컴파일에 앞서 코드에 삽입된 주석을 제거하거나 매크로들을 처리하는 과정

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

- 대표적인 도구

Ant

(Another Neat Tool)

아파치 소프트웨어 재단에서 개발한 소프트웨어, 자바 프로젝트의 공식적인 빌드 도구로 사용됨

XML 기반의 빌드 스크립트 사용

자유도와 유연성 높음, 복잡한 빌드 환경에도 대처 가능

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

 Maven

아파치 소프트웨어 재단에서 개발한 소프트웨어, Ant의 대안으로 개발 됨

의존성을 설정해 라이브러리를 관리

파일과 빌드 동시 수행 가능

- 규칙이나 표준이 존재해 예외 사항만 기록하면 됨

Gradle

기존의 Ant와 Maven을 보완해 개발된 빌드 도구

한스 토커 외 6인의 개발자가 모여 공동 개발함

안드로이드 스튜디오의 공식 빌드 도구로 채택된 도구

- 의존성 활용, 그루비(Groovy) 기반의 빌드 스크립트 사용 



기타 협업 도구

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

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

- 다양한 플랫폼에서 사용할 수 있도록 제공됨

- 협업 도구가 익숙하지 않거나 이용할 의지가 없으면 협업 도구가 요히려 협업의 방해 요소가 될 수 있음

- 협업 도구의 종류

프로젝트 및 일정 관리

전체 프로젝트와 개별 업무들의 진행 상태, 일정 등을 공유하는 기능 제공

- 구글 캘린더, 분더리스트(Wunderlist), 트렐로(Trello), 지라(Jira), 플로우(Flow) 등

정보 공유 및 커뮤니케이션

- 주체별로 구성원들을 지목해 방을 개설한 후 정보를 공유하고 대화하는 것 가능

파일 관리 간편, 의사소통 자유로움

- 슬랙(Slack), 잔디(Jandi), 태스크월드(Teskworld) 등

디자인

- 디자이너가 설계한 UI나 이미지의 정보들을 코드화하여 개발자에게 전달하는 기능 제공

- 스케치(Sketch), 제플린(Zeplin) 등

기타

- 아이디어 공유에 사용되는 에버노트(Evernote)

- API를 문서화해 개발자들 간 협업을 도와주는 스웨거(Swagger)

- 깃(Git)의 웹호스팅 서비스인 깃허브(Github)





반응형