본문 바로가기
  • Always Awake
정보처리기사/1과목

[정보처리기사 필기] 모듈(Module)

by NerdyBoy 2022. 2. 8.

모듈


1. 모듈(Module) 개요

모듈은 모듈화 를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내 프로그램, 작업 단위 등가 같은 의미

  • 단독으로 컴파일 가능하며, 재사용 가능
  • 모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미하는것으로, 모듈이 하나의 기능만 수행, 다른 모듈과 과도한 상호작용 배제
  • 독립성이 높을수록 모듈 수정해도 다른 모듈에 영향 없음
  • 독립성은 결합도(Coupling)와 응집도(Cohension)에 의해 측정. 독립성 높이려면 결합도는 약하게, 응집도는 강하게

모듈화

시스템의 기능들을 모듈 단위로 분해하는 것

  • 루틴(Routine): 기능을 가진명령들의 모임
  • 메인 루틴(Main Routine): 프로그램 실행의 큰 줄기가 되는 것
  • 서브 루틴(Subroutine): 메인 루틴에 의해 필요시 호출

2.결합도(Coupling)

모듈간에 상호 의존 정도 또는 연관 관계

  • 결합도 약할수록 품질이 높고, 강할수록 품질 낮음
  • 결합도 강하면 시스템 구현 및 유지보수 어려움

결합도의 정도[1]

자료 결합도(Data Coupling) 모듈 간의 인터페이스가 자료 요소로만 구성될 때
스탬프(검인) 결합도(Stamp Coupling) 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때
제어 결합도(Control Coupling) 특정 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어요소(Function Code, Switch, Tag, Flag)를 전달하는 결합도
외부 결합도(External Coupling) 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때
공통(공유) 결합도(Common Coupling) 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때
내용 결합도(Content Coupling) 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때

 

3. 응집도(Cohesion)

정보은닉 개념을 확장한 것으로, 모듈이 독립적인 기능으로 정의되어 있는 정도

응집도가 강할수록 품질이 높고, 약할수록 품질 낮음

응집도의 정도[1]

기능적 응집도(Functional Cohesion) 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우
순차적 응집도(Sequential Cohesion) 모듈에서 나온 출력 데이터가 다음 활동의 입력 데이터가 되는 경우
교환(통신)적 응집도(Communication Cohesion) 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우
절차적 응집도(Procedural Cohesion) 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 때 
시간적 응집도(Temporal Cohesion) 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우
논리적 응집도(Logical Cohesion) 유사한 성격을 갖거나 특정 형태로 분류되는 경우 처리 요소들로 하나의 모듈이 형성되는 경우
우연적 응집도(Coincidental Cohesion) 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우

 

4. 팬인(Fan-In)/ 팬아웃(Fan-Out)

  • 팬인은 모듈을 제어(호출)하는 모듈의 수
  • 팬아웃은 모듈에 의해 제어(호출)되는 모듈의 수
  • 팬인 팬아웃을 분석하여 시스템 복잡도를 알 수 있다
  • 팬인이 높다는 것은 재사용 측면에서 잘 설계, 그러나 단일 장애점 발생할 수 있어 중점적인 관리 및 테스트 필요
  • 팬아웃 높은 경우 불필요하게 다른 모듈 호출하고 있는지 검토, 단순화 여부 검토 필요
  • 시스템 복잡도 최적화 하려면 팬인 높게, 팬아웃 낮게

공통 모듈


1. 공통모듈 개요

여러 프로그램에서 공통적으로 사용할 수 있는 모듈

  • 재사용성 확보와 중복 개발 회피를 위해 설계 과정에서 공통 부분을 식별하고 명세 작성

 

명세 기법 준수 사항

  • 정확성
  • 명확성
  • 완전성
  • 일관성: 공통기능들간 충돌 발생 않도록
  • 추적성: 출처, 관련 시스템 등 관계 파악할 수 있도록

 

2. 재사용(Reuse)

비용과 개발 시간 절약 위해 이미 개발된 기능 파악하고 재구성하여 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화

  • 누구나 이해하고 사용하기 적합하도록 사용법 공개 해야함
  • 재사용 대상은 외부 모듈과의 결합도 낮고, 응집도 높아야함

재사용 규모에 따른 분류

함수와 객체 클래스나 메소드 단위의 소스코드 작성
컴포넌트 컴포넌트 자체에 대한 수정 없이 인터페이스 통해 통신하는 방식으로 재사용
애플리케이션 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식

 

3. 효과적인 모듈 설계 방안

  • 결합도 줄이고 응집도 높여야함
  • 모듈 제어 영역 안에서 그 모듈의 영향 영역 유지
  • 복잡도와 중복성 줄이고 일관성 유지
  • 기능 예측 가능해야하며 지나치게 제한적이어서는 안됨
  • 유지보수 용이해야함
  • 하나의 입구와 하나의 출구
  • 계층적 관계를 정의하는 자료 제시되어야함

출처

자료 참고: 

시나공 정보처리기사 필기 2022를 참고하여 작성되었습니다

표지

 

[1] https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rlarhdn66&logNo=220463191697

댓글