모듈

0

정보처리기사

목록 보기
67/100

모듈(Module)에 대한 개념 및 설계 원리


1. 모듈의 개념

  • 모듈은 하나의 소프트웨어에서 독립적으로 동작할 수 있는 기능 단위를 의미합니다.
  • 모듈화는 소프트웨어 성능을 향상시키기 위해 시스템의 기능을 모듈 단위로 분리하는 작업입니다.
    • 하나의 기능을 하나의 모듈로 만들어 독립적인 부품처럼 관리합니다.
    • 모듈 간의 독립성은 결합도(Coupling)응집도(Cohesion)에 따라 평가됩니다.

2. 결합도(Coupling)

  • 결합도모듈 간의 의존 관계를 나타내며, 결합도가 낮을수록 품질이 좋은 소프트웨어입니다.
  • 결합도는 약할수록 독립성이 높아지고, 강할수록 모듈 간에 서로 의존성이 커져 유지보수가 어렵습니다.

① 결합도의 종류 (강한 순서)

순서결합도 종류설명
1 (가장 강함)내용 결합도한 모듈이 다른 모듈의 내부 기능이나 데이터를 직접 참조하거나 수정하는 경우입니다.
2공통 결합도여러 모듈이 공통 데이터 영역을 공유하여 사용하는 경우입니다.
3외부 결합도한 모듈이 외부 변수를 선언하고, 다른 모듈이 해당 변수를 참조하는 경우입니다.
4제어 결합도한 모듈이 다른 모듈의 논리적 흐름을 제어하기 위해 신호나 데이터를 전달하는 경우입니다.
5스탬프 결합도여러 모듈이 같은 자료 구조(배열, 레코드)를 사용하지만 내부 요소들에 서로 의존하지 않는 경우입니다.
6 (가장 약함)자료 결합도모듈 간에 필요한 자료 요소만 전달하는 경우로, 가장 낮은 결합도를 가지며 품질이 좋습니다.

3. 응집도(Cohesion)

  • 응집도는 모듈 내부의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타냅니다.
  • 응집도가 강할수록 모듈이 하나의 기능에 집중하므로 품질이 높아집니다.
  • 응집도가 약할수록 모듈이 여러 기능을 섞어 처리하므로 유지보수가 어렵습니다.

① 응집도의 종류 (약한 순서)

순서응집도 종류설명
1 (가장 약함)우연적 응집도서로 관련 없는 요소들로 구성된 경우입니다.
2논리적 응집도유사한 기능들을 한 모듈에 모아둔 경우입니다.
3시간적 응집도특정 시간에 실행되는 기능들이 모여 있는 경우입니다.
4절차적 응집도기능들이 순서대로 수행되지만 서로 밀접한 관련이 없는 경우입니다.
5통신적 응집도동일한 입력/출력 데이터를 사용하지만 서로 다른 기능을 수행하는 경우입니다.
6순차적 응집도한 기능의 출력 데이터가 다음 기능의 입력 데이터로 사용되는 경우입니다.
7 (가장 강함)기능적 응집도모듈 내부의 모든 요소가 단일 문제를 해결하기 위해 밀접하게 연관된 경우입니다.

4. 팬인(Fan-in)과 팬아웃(Fan-out)

  • 팬인(Fan-in): 특정 모듈을 제어하는 다른 모듈들의 개수를 의미합니다.
  • 팬아웃(Fan-out): 특정 모듈이 제어하는 다른 모듈들의 개수를 의미합니다.
    • 팬인이 높으면, 시스템 설계가 잘된 것으로 볼 수 있으나, 장애 발생 시 시스템 전체에 영향을 줄 수 있습니다.

예시

  • 모듈 A가 다른 모듈 B와 C를 제어하면, A의 팬아웃은 2입니다.
  • 반대로 B와 C가 A를 참조하면, A의 팬인은 2입니다.

5. NS 차트 (Nassi-Shneiderman Chart)

  • NS 차트는 모듈 내의 논리적 흐름을 도형으로 표현한 기법입니다.
  • 순차적, 선택적, 반복적 제어 구조를 시각적으로 나타내며, Go To문 등의 사용을 지양합니다.
  • 다른 이름: 박스 다이어그램(Box Diagram), 체핀 차트(Chapin Chart)

6. 결합도와 응집도 정리

  • 결합도약할수록 품질이 높고, 응집도강할수록 품질이 높습니다.
  • 결합도와 응집도의 종류와 특징을 정확히 이해하고, 시험 문제에 대비하세요.
  • 주요 설계 원칙들을 정리해 두면 실무에서도 활용할 수 있습니다.

이처럼 모듈화는 소프트웨어의 유지보수와 성능 향상에 필수적인 개념입니다. 시험 대비를 위해 결합도와 응집도의 순서와 예시를 반복 학습하는 것이 중요합니다. 특징과 정의를 명확히 파악하세요!

0개의 댓글