도서 개발 공부/정보 처리 기사 필기

2. 소프트웨어 개발 - 통합 구현 (단위 모듈 구현, 단위 모듈 테스트, 개발 지원 도구)

캐티시 2022. 3. 30. 20:02

42. 단위 모듈

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

식당의 업무 전체가 소프트웨어라고하면, 업무 과정 중 하나인 결제는 단위 모듈이 될 것이다.

  • 단위 기능 : 단위 모듈로 구현되는 하나의 기능
  • 단위 모듈은 사용자나 다른 모듈로부터 값을 전달받아 시작된다
  • 단위모듈은 처리문, 명령문, 데이터 구조 등으로 구성된다
  • 단위 모듈은 독립적인 컴파일이 가능하고, 다른 모듈에 삽입되거나, 호출되기도 한다

 

1) 단위 모듈의 구현

단위 기능 명세서 작성 입출력 기능 구현 알고리즘 구현

1. 단위 기능 명세서 작성

: 단위 기능을 명세화한 문서 (ex. 기능 명세서, 코드 명세서, 설계 지침, etc.)

  • 추상화 : 복잡한 시스템을 단순하게 구현해야 한다
  • 구조화 : 대형 시스템을 분해하여 단위 기능별로 구분하고 각 단위 기능을 계층적으로 구성한다
  • 정보 은닉 : 모듈의 독립성을 위해 정보 은닉의 원리를 고려한다

 

2. 입출력 기능 구현

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

  • 모듈 간 연동 및 통신에 쓰이는 입출력 데이터를 구현한다
  • 사용자 인터페이스(CUI, GUI, etc)와의 연동을 고려한다
  • 오픈 소스 API를 사용하여 네트워크 및 외부 장치와의 입력을 간편하게 구현할 수 있다

 

※ IPC (Inter-Process Communication)

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

메소드 설명
공유 메모리 (Shared Memory) 여러 프로세스가 공유 가능한 메모리를 구성해 통신 수행
소켓 (Socket) 네트워크 소켓을 이용해 통신 수행
세마포어 (Semaphores) 공유 자원에 대한 접근 제어를 통해 통신 수행
파이프 (Pipes, Named pipes) 선입선출 형태의 메모리인 Pipe를 여러 프로세스가 공유하여 통신 수행
- Pipe는 동시에 하나의 프로세스만 이용 가능함
메시지 큐잉 (Message Queueing) 발생한 메시지를 전달하는 형태로 통신 수행

 

3. 알고리즘 구현

: 입출력 데이터를 바탕으로 단위 기능별 요구 사항을 모듈로 구현

  • 구현된 단위 기능들이 요구사항과 일치하는지 확인
  • 모듈의 종류 (단위 기능의 종류에 따라)
    • 디바이스 드라이버 모듈 : 하드웨어 주변 장치의 동작을 구현하는 모듈
    • 네트워크 모듈 : 네트워크 장비 및 데이터 통신 기능을 구현하는 모듈
    • 파일 모듈 : 컴퓨터 내부의 데이터 구조 영역에 접근하는 방법을 구현하는 모듈
    • 메모리 모듈 : 파일을 프로세스의 가상 메모리에 매핑/해제하는 방법, 프로세스 간 통신 기능을 구현하는 모듈
    • 프로세스 모듈 : 프로세스 내에서 다른 프로세스를 생성하는 모듈

43. 단위 모듈 테스트

: 특정 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증하는 과정 (단위 테스트, Unit Test)

  • 모듈을 단독적으로 실행할 수 있는 환경과 테스트에 사용할 데이터가 준비되어 있어야 한다
  • 단위 모듈에 대한 코드를 기준으로 하므로 시스템 수준 오류는 잡아낼 수 없다
  • 테스트 기법
    • 화이트박스 테스트 : 모듈의 내부 구조와 논리적 경로를 테스트하는 방법
    • 블랙박스 테스 : 모듈의 내부 구조를 참고하지 않고 정해진 기능을 완벽히 수행하는지 테스트하는 방법

 

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

: 단위 모듈 테스트를 위한 테스트 항목에 대한 명세서

  • 명세 기반 테스트의 설계 산출물이 된다
  • 입력 데이터, 테스트 조건, 예상 결과 등으로 구성된다

 

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

  • 항목 식별자 (Identifier)
  • 테스트 항목 (Test Item)
  • 입력 명세 (Input Specification)
  • 출력 명세 (Output Specification)
  • 환경 설정 (Environmental Needs)
  • 특수 절차 요구 (Special Procedure Requirement)
  • 의존성 기술 (Inter-case Dependencies)

 

2) 테스트 프로세스

: 모든 테스트 수행 과정에서 테스트 목적과 조건을 달성할 수 있도록 하는 과정


계획 및 제어
- 테스트 목표 달성을 위한 계획 수립

- 테스트가 계획대로 진행되도록 제어
 
분석 및 설계 - 테스트 시나리오 및 테스트 케이스 작성
 


구현 및 실현
- 테스트 케이스를 조합하여 테스트 프로시저 명세
※ 테스트 프로시저 : 테스트 케이스 실행 순서

- 적절한 테스트 도구를 이용하여 테스트 수행
 
평가 - 테스트가 계획과 목표에 맞게 수행되었는지 평가 및 기록
 
완료 - 테스트 수행 과정 및 산출물 기록 및 저장

44. 개발 지원 도구

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

: 편집기, 컴파일러, 디버거 등의 개발에 필요한 툴을 하나의 인터페이스로 통합하여 제공하는 것

Visual Studio, 마이크로소프트가 제공하는 IDE이다.

  • 통합 개발 환경 도구 : 통합 개발 환경을 제공하는 소프트웨어
  • 코드의 자동 생성 및 컴파일이 가능하며, 필요한 추가 기능을 다운로드할 수 있다
  • 코드 실행 및 테스트 시에 오류가 발생한 부분을 시각화하여 수정이 용이하다
  • 외부의 다양한 서비스와 연동하여 개발 편의를 제공하고 정보 공유를 가능케 한다
  • ex) Eclipse(Eclipse Foundation, IBM), Visual Studio(Microsoft), Xcode(Apple), Android Studio(Google), IDEA(JetBrains)

 

2) 빌드 도구

: 소스 파일을 실행가능한 제품 소프트웨어로 변환하는 빌드(Build)를 지원하는 소프트웨어

  • 소스 코드를 소프트웨어로 변환하는데 필요한 전처리, 컴파일 등의 작업을 수행한다
  • ex
    • ANT (Another Neat Tool) : 아파치 재단의 빌드 도구. XML 기반. 정해진 규칙이나 표준이 없으며 스크립트 재사용이 어렵다
    • Maven : 아파치 재단의 빌드 도구. 규칙과 표준이 존재한다. 컴파일과 빌드를 동시에 수행할 수 있다. 의존성을 설정하여 라이브러리를 관리한다
    • Gradle : Ant와 Maven을 보완한 빌드 도구. 의존성을 활용하여 라이브러리를 관리한다. Groovy 기반

 

3) 기타 협업 도구

: 개발 참여자들이 서로 다른 작업 환경에서 원활히 프로젝트를 수행할 수 있도록 도와주는 도구

(협업 소프트웨어, 협업 툴, 그룹웨어)

 

- 협업 도구의 종류

  • 프로젝트 및 일정 관리
    • ex) 구글 캘린더, 분더리스트, 트렐로, 지라, 플로우
  • 정보 공유 및 커뮤니케이션
    • ex) 슬랙, 잔디, 태스크월드
  • 디자인
    • ex) 스케치, 제플린
  • 이 외에 에버노트(아이디어 공유), 스웨거(API 문서화), 깃허브 등이 존재