ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [정보처리기사] 2장 소프트웨어 개발 : 2장. 통합 구현
    정보처리기사 2022. 2. 28. 19:17
    728x90
    반응형
    1. 단위 모듈 구현
    2. 단위 모듈 테스트
    3. 개발 지원 도구

     

     

    1. 단위 모듈 구현

     

    단위 모듈의 개요

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

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

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

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

    1) 단위 기능 명세서 작성

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

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

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

    - 모듈의 독립적인 운용과 한 모듈 내의 정보가 다른 모듈에 영향을 주지 않도록 정보 은닉의 원리를 고려

    2) 입출력 기능 구현

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

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

    - 사용자 인터페이스인 CLI, GUI와의 연동을 고려

    - 네트워크나 외부 장치와의 입출력은 무료로 공개되어 있는 Open Source API를 이용하면 간편하게 구현 가능

     

    IPC

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

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

    - 대표 메소드: Shared Memory, Socket, Semaphores, Pipes&named Pipes, Message Queueing

    3) 알고리즘 구현

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

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

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

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

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

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

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

     

     

     

    2. 단위 모듈 테스트

     

    단위 모듈 테스트의 개요

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

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

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

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

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

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

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

    테스트 케이스

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

    - 단위 모듈을 테스트하기 전에 테스트에 필요한 입력 데이터, 테스트 조건, 예상 결과 들을 모아 테스트 케이스를 만듦

    - 테스트 케이스를 이용하지 않고 수행하는 직관적인 테스트는 특정 요소에 대한 검증이 누락되거나 불필요한 검증의 반복으로 인해 인력과 시간을 낭비할 수 있음

    테스트 케이스의 구성 요소 (ISO/IEC/IEEE 29119-3 표준)

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

    테스트 프로세스

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

     

     

     

    3. 개발 지원 도구

     

    통합 개발 환경(IDE)

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

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

    - Eclipse, Visual Studio, Xcode, Android Studio, IDEA

    빌드 도구

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

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

    1) Ant

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

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

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

    2) Maven

    - Ant와 동일한 아파치 소프트웨어 재단에서 개발된 것으로 Ant의 대안으로 개발됨

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

    - 의존성을 설정하여 라이브러리를 관리

    3) Gradle

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

    - 한스 도커 외 6인 개발자가 모여 공동 개발

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

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

    기타 협업 도구

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

    협업 도구의 종류

    1) 프로젝트 및 일정 관리: 구글 캘린더, 분더리스트, 트렐로, 지라, 플로우

    2) 정보 공유 및 커뮤니케이션: 슬랙, 잔디, 태스크월드

    3) 디자인: 스케치, 제플린

    4) 기타: 에버노트, 스웨거, 깃허브

    LIST
Designed by Tistory.