소프트웨어 개발 2. 통합 구현

박유현·2020년 5월 17일
0

1. 단위 기능 명세서

  • 설계 과정에서 단위 기능을 명세화한 문서
    - 추상화: 복잡한 시스템을 단순히 구현
    - 구조화: 시스템을 분해하여 단위 기능별로 구분하고 계층적으로 구성
    - 정보 은닉: 단위 모듈(Unit Module)의 독립적 운용과 다른 모듈의 접근/변경 막도록 고려

2. IPC

  • Inter-Process Communication
    - 모듈 간 통신 방식을 구현하는 프로그래밍 인터페이스 집합
    - 복수 프로세스 수행시 이루어지는 프로세스 간 통신 구현
    • Shared Memory: 다수 프로세스가 공유 메모리 구성하여 통신
    • Socket: 네트워크 소켓 이용하여 경유 프로세스 간 통신
    • Semaphores: 공유 자원에 대한 접근 제어
    • Pipes & named Pipes: 파이프(선입선출)로 구성된 메모리를 프로세스 간 공유하고 한 파이프가 이용 중이면 다른 프로세스 접근 못함
    • Message Queueing: 메시지 발생 시 전달

3. 테스트 케이스

  • Test Case
    - 명세 기반 테스트의 설계 산출물로 모듈이 제대로 작성되었는지 확인하기 위해 입력될 수 있는 값들과 예상 결과를 나열한 목록의 명세서
    - 단위 모듈 테스트(Unit Test)를 하기 전에 만듦
    - 테스트 케이스를 이용하지 않는 직관적 테스트는 검증 누락/반복으로 인한 인력/시간 낭비 우려
  • 식별자(Identifier): 항목, 일련번호
  • 테스트 항목(Test Item): 대상(모듈/기능)
  • 입력 명세(Input Specification): 데이터 또는 테스트 조건
  • 출력 명세(Output Specification): 수행시 기대 출력 결과
  • 환경 설정(Envirionmental Needs): 필요 하드웨어/소프트웨어 환경
  • 특수 절차 요구(Special Procedure Requirement): 특별 요구 절차
  • 의존성 기술(Inter-case Dependencies): 테스트 케이스 간 의존성

4. 단위 모듈 테스트

  • Unit Test
    - 프로그램의 단위 기능 구현 모듈이 정해진 기능을 정확히 수행하는지 검증
    • 화이트박스 테스트: 소스 코드 오픈 상태에서 논리적 경로 테스트
    • 블랙박스 테스트: 소프트웨어의 특정 기능이 완전히 작동하는지 입증
  • 모듈 단독 실행 환경과 테스트에 필요한 데이터 준비돼야
  • 통합 후 오래 추척해야 발견할 에러를 단위 모듈 테스트로 쉽게 수정
  • 시스템 수준 오류는 못잡음

5. 테스트 프로세스

  • 테스트 시 수행하는 모든 작업이 목적과 조건을 달성해야
  • 5단계
    1. 계획 및 제어: 계획 수립 후 그대로 진행되도록 제어
    2. 분석 및 설계: 목표를 구체화하여 테스트 케이스와 적용 순서대로 묶어 명세한 테스트 시나리오(Test Scenario) 작성
    3. 구현 및 실현: 테스트 케이스의 실행 순서인 테스트 프로시저(Test Procedure)/테스트 스크립트(Test Script)를 명세하고 모듈의 환경에 맞는 단위 테스트 도구 이용하여 수행
    4. 평가: 테스트가 계획과 목표대로 수행되었는지 평가 및 기록
    5. 완료: 수행 증거자료와 차후 테스트를 위한 참고자료로 쓰기 위해 수행 과정과 산출물 기록/저장

6. IDE

  • Integrated Development Environment(통합 개발 환경)
    - 편집기(Editor), 컴파일러(Compiler), 디버거(Debugger) 등을 하나의 인터페이스로 제공하는 소프트웨어
  • 코드 자동 생성 혹은 컴파일(Compile)
  • 툴 다운로드하여 추가
  • 코드 실행 및 테스트 시 발생 오류를 시각화
  • 외부 서비스(배포/버전 관리/오픈소스 커뮤니티)와 연동
  • 플랫폼, 운영체제, 언어별로 다양
    - 대표적 도구
    • 이클립스(Eclipse)
    • 비주얼 스튜디오(Visual Studio)
    • 엑스 코드(Xcode)
    • 안드로이드 스튜디오(Android Studio)
    • IDEA

7. 빌드 도구

  • 소스 코드 파일을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로의 변환 과정에 필요한 전처리, 컴파일 등 수행
    - Preprocessing: 컴파일 전 코드의 주석, 매크로 등 처리

8. 단위 모듈

  • Unit Module
    - 소프트웨어에 필요한 동작들 중 하나의 기능(단위 기능)만을 구현한 모듈
    - 두 모듈이 합쳐지면 두 기능 구현
    - 전달받은 값으로 시작하는 작은 프로그램
    - 처리문, 명령문, 데이터 구조 등으로 구성
    - 독립적으로 컴파일 가능
    - 다른 모듈로 호출되거나 삽입 가능
    - 단위 기능 명세서 작성하고 입/출력 기능과 알고리즘 구현
    • 입/출력 기능
      • 데이터 형식에 따라 단위 모듈 간 연동/통신을 위한 데이터 구현
      • CLI(Command Line Interface), GUI(Graphical User Interface)와의 연동 고려
      • Open source API로 네트워크나 외부 장치와의 입/출력 간단 구현
    • 알고리즘 구현
      • 단위 기능별 요구사항을 구현 가능한 언어로
      • 사용자 요구와 일치하는지 확인 필요
      • 디바이스 드러이버 모듈, 네트워크 모듈, 파일 모듈, 메모리 모듈, 프로세스 모듈

9. Ant

  • Another Neat Tool
    - 아파치 소프트웨어 재단(Apache Software Foundation)의 자바 프로젝트 공식 빌드 도구
    • XML 기반 빌드 스크립트 사용
    • 자유도와 유연성 높아 복잡한 빌드 환경에 대처
    • 개발자가 모든 규칙과 표준 정의
    • 스크립트 재사용 어려움

10. Maven

  • Ant의 대안으로 아파치에서 개발
    • 규칙과 표준 존재
    • 예외사항만 기록
    • 컴파일과 빌드 동시 수행
    • 의존성(Dependency) 설정하여 라이브러리(Library) 관리

0개의 댓글