공통모듈설계

출제빈도: 상

소프트웨어 설계

  • 알고리즘을 설계하고 데이터를 구조화한 자료구조를 문서화하는 과정
  • 설계 방식 비교:
    • 절차지향: 속도가 빠르지만 유지보수가 어려움
    • 객체지향: 난이도 높고 속도는 느리지만 재활용성과 유지보수가 쉬움

소프트웨어 설계 모델

설계 구성 순서

  1. 데이터 설계
  2. 아키텍처 설계
  3. 인터페이스 설계
  4. 절차 설계

설계 계층

  • 상위(아키텍처) 설계
    • 예비 설계
    • 시스템 구조
    • DB 설계
    • 화면 레이아웃 등
  • 하위(모듈) 설계
    • 상세 설계
    • 구성 요소의 내부 로직
    • 동적 행위 등

소프트웨어 설계 추상화

  • 상세 설계 이전에 대략적, 포괄적 구상
  • 설계(구체화)를 효율적으로 수행하기 위한 과정

추상화 기법 3가지

  1. 제어 추상화: 매커니즘이 아닌 포괄적 표현
  2. 과정 추상화: 수행 과정이 아닌 전반적인 흐름
  3. 자료 추상화: 데이터를 대표적인 표현으로 대체

바람직한 설계의 기준

  • 모든 내용을 구현할 수 있어야 함
  • 결함 기능을 추적할 수 있어야 함
  • 유지보수가 용이해야 함
  • 주요 특성:
    • 모듈(독립적인 기능)
    • 명확(절차와 자료구조)
    • 계층적(모듈의 효과적 제어)

모듈화

  • 시스템을 분해하고 추상화하는 과정
  • 장점: 성능 향상, 수정 용이, 재사용성, 유지관리 개선
  • 모듈 개수와 비용의 관계:
    • 모듈의 개수가 많음 → 모듈 크기 작아짐 → 통합비용 상승
    • 모듈의 개수가 적음 → 모듈 크기 커짐 → 통합비용 하락

공통 모듈

  • 공통적으로 사용할 수 있는 모듈
  • 누구나 사용할 수 있도록 사용법 공개
  • 유지보수가 용이함
  • 핵심 특성: 공유도와 응집도를 높이고, 제어도와 결합도는 낮춤

소프트웨어 재사용

  • 이미 검증이 완료된 기능을 재구성
  • 재사용 대상: 함수, 객체, 컴포넌트, 애플리케이션
  • 접근 방식:
    • 생성 중심: 추상화 형태를 구체화
    • 합성 중심: 모듈을 조립

소프트웨어 재공학

  • 기존 시스템을 이용하여 보다 나은 시스템 구축
  • 소프트웨어의 위기를 유지보수 측면으로 해결
  • 주요 프로세스:
    • 분석: 명세를 통해 재공학의 가치를 판단
    • 재구성: 코드를 재구성
    • 역공학: 외계인 코드(유지보수 작업이 어려운 코드)로부터 소스코드를 복구, 재발견
    • 이식: 다른 플랫폼에서 사용할 수 있도록 변환

공통 모듈 식별 프로세스

  1. 단위 업무 기능 분석
    • 업무 기능을 정제(표준화)
    • 누락이나 중복되는 기능 확인
  2. 유스케이스 분석
    • 포함관계 «include» 분석
  3. 검토 회의 진행
    • 공통 모듈 선정
  4. 상세 기능 명세
  5. 식별된 기능 통합
    • 공통 기능 통합
  6. 관리 프로세스 수립
    • 문서 작성

공통 모듈 명세 원칙

  • 의사소통을 위한 명세 작성
  • 의사소통이 안 되는 코드는 외계인 코드로 간주

모듈 응집도

  • 정의: 내부 요소 간 관계의 밀접도
  • 특징: 응집도가 높을수록 모듈 독립성 향상

응집도 단계 (높음 → 낮음)

  1. 기능적 응집도: 단일 문제 해결
  2. 순차적 응집도: 출력이 다른 모듈의 입력으로 사용
  3. 통신적 응집도: 하나의 출력을 다양한 기능에 활용
  4. 절차적 응집도: 순차적 모듈 수행
  5. 시간적 응집도: 특정 시기 동시 수행
  6. 논리적 응집도: 유사 성격/형태의 기능 통합
  7. 우연적 응집도: 무관련 기능 통합

모듈 결합도

  • 정의: 모듈 간 의존성 정도
  • 특징: 결합도가 낮을수록 모듈 독립성 향상

결합도 단계 (낮음 → 높음)

  1. 자료 결합도
    • 인수와 매개변수를 통한 상호작용
    • 예: 도서대여 ⟷ 대여요금계산
  2. 스탬프 결합도
    • 동일 자료구조 공유
    • 예: 도서대여 ⟷ 회원등급 ⟷ 대여요금계산
  3. 제어 결합도
    • 제어 요소에 따른 처리 절차 변화
    • 예: 재고현황 (있음=1, 없음=0)
  4. 외부 결합도
    • 직접적인 내부 데이터 참조
  5. 공유 결합도
    • 외부 선언 변수 참조
    • 관련 없는 모듈의 접근 가능성
  6. 내용 결합도
    • 직접적인 내부 기능/데이터 사용

복잡도 측정

공유도 (Fan-In)

  • 정의: 자신을 호출하는 모듈의 수
  • 특징:
    • 높은 공유도 = 좋은 모듈화
    • 주의사항:
      • 단일 실패지점 관리
      • 중점 관리 필요
      • 철저한 테스트 검증

제어도 (Fan-Out)

  • 정의: 자신이 호출하는 모듈의 수
  • 특징: 높은 제어도는 업무로직 단순화 검토 필요

모듈 호출 관계로 공유도 Fan-In과 제어도 Fan-Out을 설명한 구조도