본문 바로가기

정보처리기사

[정보처리기사] 실기 노트 - 서버 프로그램 구현 2

  1. 모듈의 개념과 특징
    1. 모듈의 개념
      1. 모듈 (Module): 모듈화를 통해 분리된 시스템의 각 기능으로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등을 의미
      2. 결합도 (Coulping): 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계
        1. 결합도의 종류: 내용 결합도 (Content Coupling), 공통 (공유) 결합도 (Common Coupling), 외부 결합도 (External Coupling), 제어 결합도 (Control Coupling), 스탬프(검인) 결합도 (Stamp Coupling), 자료 결합도 (Data Coupling)
        2. 결합도의 강도: 내용 결합도 > 공통(공유) 결합도 > 외부 결합도 > 스탬프(검인) 결합도 > 자료 결합도
      3. 응집도 (Cohension): 모듈의 내부 요소들이 서로 관련되어 있는 정도
        1. 응집도의 종류: 기능적 응집도 (Functional Cohesion), 순차적 응집도 (Sequential Cohesion), 교환 (통신)적 응집도 (Communication Cohesion), 절차적 응집도 (Procedual Cohesion), 시간적 응집도 (Temporal Cohesion), 논리적 응집도 (Logical Cohesion), 우연적 응집도 (Coincidental Cohesion)
        2. 응집도의 강도: 기능적 응집도 > 순차적 응집도 > 교환(통신)적 응집도 > 절차적 응집도 > 시간적 응집도 > 논리적 응집도 > 우연적 응집도
      4. 팬인 (Fan-In) / 팬아웃 (Fan-Out)
        1. 팬인 (Fan-In): 어떤 모듈을 제어하는 모듈의 수
        2. 팬아웃 (Fan-Out): 어떤 모듈에 의해 제어되는 모듈의 수를 의미
      5. N-S 차트 (Nassi-Schneiderman Chart): 논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법
  2. 단위모듈
    1. 단위 모듈 (Unit Module)의 구현
      1. 단위 모듈의 개요
        1. 단위 모듈: 소프트웨어 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
        2. 단위 모듈의 구현 과정: 단위 기능 명세서 작성 -> 입출력 기능 구현 -> 알고리즘 구현
      2. 단위 기능 명세서 작성: 셀계 과정에서 작성하는 기능 및 코드 명세서나 설계 지침과 같이 단위 기능을 명세화한 문서들을 의미
      3. 입출력 기능 구현: 단위 기능 명세서에서 정의한 데이터 형식에 따라 입출력 기능을 위한 알고리즘 및 데이터를 구현함
      4. 알고리즘 구현: 입출력 데이터를 바탕으로 단위 기능별 요구 사항들을 구현 가능한 언어를 이용하여 모듈로 구현함
      5. IPC (Inter-Process Communication)
        1. IPC: 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
        2. IPC의 대표 메소드 5가지: Shared Memory, Socket, Semaphores, Pipes & named Pipes, Message Queueing
    2. 단위 모듈 테스트
      1. 단위 모듈 테스트의 개요
        1. 단위 모듈 테스트: 프로그램의 단위 기능으로 구현된 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것
        2. 단위 테스트 (Unit Test)라고도 하며, 화이트박스 테스트와 블랙박스 테스트 기법을 사용함
      2. 테스트 케이스 (Test Case)
        1. 테스트 케이스: 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 값, 시행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서
        2. ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스의 구성 요소
          1. 식별자 (Identifier)
          2. 테스트 항목 (Test Item)
          3. 입력 명세 (Input Specification)
          4. 출력 명세 (Output Specification)
          5. 환경 설정 (Environmental Needs)
          6. 특수 절차 요구 (Special Procedure Requirement)
          7. 의존성 기술 (Inter-case Dependecies)
      3. 테스트 프로세스
        1. 테스트 프로세스: 테스트를 수행하는 모든 작업들이 테스트의 목적과 조건을 달성할 수 있도록 도와주는 과정
        2. 테스트 프로세스 5단계
          1. 계획 및 제어 단계
          2. 분석 및 설계 단계
          3. 구현 및 실현 단계
          4. 평가 단계
          5. 완료 단계
  3. 공통 모듈
    1. 공통 모듈: 여러 프로그램에서 공통으로 사용할 수 있는 모듈
    2. 공통 모듈 명세 기법의 종류: 정확성 (Correctness), 명확성 (Clarity), 완전성 (Completeness), 일관성 (Consistency), 추적성 (Traceability)
    3. 재사용 (Reuse): 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화하는 작업
    4. 효과적인 모듈 설계 방안
      1. 결합도 (Coupling)은 줄이고 응집도 (Cohesion)는 높여서 모듈의 독립성과 재사용성을 높임
      2. 복잡도와 중복성을 줄이고 일관성을 유지시킴
      3. 모듈의 기능은 예측이 가능해야 하며 지나치게 제한적이어서는 안됨
      4. 모듈 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 분해함
      5. 효과적인 제어를 위해 모듈 간의 계층적 관계를 정의하는 자료가 제시되어야 함
  4. 디자인 패턴
    1. 디자인 패턴 (Design Pattern): 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미함
    2. 생성 패턴 (Creational Pattern): 클래스나 객체의 생성과 참조 과정을 정의하는 패턴
    3. 구조 패턴 (Structural Pattern): 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴
    4. 행위 패턴 (Behavioral Pattern): 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴