본문 바로가기
  • Always Awake
정보처리기사/2과목

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

by NerdyBoy 2022. 2. 11.

단위 모듈 구현

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

  • 두개의 단위모듈 합쳐질 경우 두개의 기능 구현 가능
  • 단위 모듈 구현위해서는 단위 기능 명세서 작성 - 입 출력 기능 구현 - 알고리즘 구현 단계를 밟아야함

 

1. 단위 기능 명세서 작성

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

  • 추상화 작업
  • 단위 기능별로 구분하고, 구조화 과정 거침
  • 정보 은닉 고려

 

2. 입 출력 기능 구현

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

  • 사용자 인터페이스인 CLI/GUI와의 연동 고려
  • 외부장치와의 입 출력은 Open Source API 이용하면 간편하게 구현 가능

IPC(Inter-Process Communication)

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

Shared Memory 다수의 프로세스가 공유 가능한 메모리를 구성하여 프로세스 간 통신을 수행
Socket 네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스들 간 통신을 수행
Semaphores 공유 자원에 대한 접근 제어를 통ㅇ해 프로세스 간 통신을 수행
Pipes&named Pipes Pipe라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신을 수행
Message Queueing 메시지가 발생하면 이를 전달하는 형태로 프로세스 간 통신 수행

3. 알고리즘 구현

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

  • 구현한 단위 기능들이 사용자의 요구와 일치하는지 확인

구현되는 모듈 목록

디바이스 드라이버 모듈 하드웨어 주변장치 동작 구현
네트워크 모듈 네트워크 장비 및 데이터 통신위한 기능 구현
파일 모듈 컴퓨터 내부 데이터 구조에 접근하는 방법 구현
메모리 모듈 프로세스의 가상 메모리에 매핑/해제 하는 방법, 프로세스 사이 통신 구현
프로세스 모듈 하나의 프로세스 안에서 다른 프로세스 생성하는 방법 구현

 

 

단위 모듈 테스트

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

  • 단위 테스트 라고도함
  • 화이트박스 테스트블랙박스 테스트 기법 사용
  • 통합 이후에는 발견 어려운 오류들도 쉽게 발견 가능
  • 시스템 수준의 오류는 잡아낼 수 없다

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

 

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

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

 

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

식별자(Identifier) 항목 식별자, 일련번호
테스트 항목(Test Item) 테스트 대상(모듈 또는 기능)
입력 명세(Input Specification) 입력 데이터 또는 테스트 조건
출력 명세(Output Sepcification) 테스트 케이스 수행시 예상되는 출력 결과
환경 설정(Environmental Needs) 필요한 하드웨어나 소프트웨어의 환경
특수 절차 요구(Special Procedure Requirement) 테스트 케이스 수행 시 특별히 요구되는 절차
의존성 기술(Inter-case Dependencies) 테스트 케이스 간의 의존성

 

2. 테스트 프로세스

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

테스트 프로세스 5단계

  1. 계획 및 제어 단계 : 계획 수립, 제어
  2. 분석 및 설계 단계 : 테스트 시나리오 와 테스트 케이스 작성
  3. 구현 및 실현 단계 : 테스트 케이스들을 조합하여 테스트 프로시저에 명세 
  4. 평가 단계 : 계획과 목표에 맞게 수행되었는지 평가
  5. 완료 단계 : 수행 과정과 산출물 기록 및 저장

 

개발 지원 도구

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

편집기, 컴파일러, 디버거 등을 하나의 인터페이스로 통합하여 제공

프로그램 개발사 플랫폼 운영체제 지원 언어
이클립스(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, AppleScript 등
안드로이드 스튜디오(Android Studio) Google Android Windows, Linux, MacOS Java, C, C++
IDEA JetBrains(이전 IntelliJ) 크로스 플랫폼 Windows, Linux, MacOS Java, JSP, XML, Go, Kotlin, PHP 등

 

2. 빌드 도구

  • 빌드는 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물
  • 빌드 도구는 소스 코드를 소프트웨어로 변환하는 과정에 필요한 전처리(Preprocessing), 컴파일(Compile) 등의 작업 수행 소프트웨어
Ant(Another Neat Tool) 아파치 소프트웨어 재단에서 개발한 소프트웨어로, 자바 프로젝트의 공식적인 빌드 도구
XML기반 빌드 스크립트 사용, 자유도와 유연성 높음
개발자가 모든것을 정의, 스크립트 재사용 어려움
Maven Ant 와 동일한 아파치 소프트웨어 재단에서 개발된 것으로, Ant 의 대안
규칙이나 표준이 존재하여 예외사항만 기록하면 되며, 컴파일과 빌드 동시에 수행 가능
의존성(Dependency)을 설정하여 라이브러리 관리
Gradle 기존의 Ant와 Maven을 보완하여 개발된 빌드 도구
한스 도커(Hans Dockter)외 6인의 개발자 공동 개발
안드로이드 스튜디오의 공식 빌드도구
Maven과 동일하게 의존성 활용, Groovy 기반의 빌드 스크립트 사용

 

3. 기타 협업 도구

개발에 참여하는 사람들이 원활히 프로젝트를 수행할 수 있도록 도와주는 도구. Groupware 라고도 불린다.

협업 도구 종류

프로젝트 및 일정관리 구글 캘린더(Google Calender), 분더 리스트(Wunderlist), 트렐로(Trello), 지라(Jira), 플로우(Flow) 등
정보 공유 및 커뮤니케이션 주제별로 구성원들을 지목하여 정보를 공유하고 대화하는것이 가능
슬랙(Slack), 잔디(Jandi), 태스크월드(Taskworld) 등
디자인 디자이너가 설계한것을 개발자에게 전달
스케치(Sketch), 제플린(Zeplin) 등
기타 아이디어 공유에 사용되는 에버토느(Evernote)
API 문서화 하여 협업 돕는 스웨거(Swagger)
깃(Git)의 웹호스팅 서비스인 깃허브(Github)

 

출처

자료 참고: 

시나공 정보처리기사 필기 2022를 참고하여 작성되었습니다

표지

 

댓글