deblog

[정보처리기사] 모듈(Module)이란? 본문

기록/공부

[정보처리기사] 모듈(Module)이란?

스콘_ 2021. 9. 28. 18:00
반응형

역사적으로 프로그래밍이라는 관점에서는 기본적으로 본체에 대한 독립된 하위 단위라는 필연적인 개념의 큰 틀을 따르고 있지만 본체와 모듈 간에 가지고 있었던 문제들을 해결해 나가는 과정에서 발전하였다. 모듈에 가장 큰 영향을 미쳤던 클래스 그리고 라이브러리가 향상됨에 따라 점차 발전하였다. 이러한 지속 가능성은 이것의 가장 큰 장점 중 하나이다. 초기에는 분리된 독립성의 모듈로 도입되었으나 점차로 객체화캡슐화, 모듈화 프로그래밍 기법 등 여러 기능들이 추가되면서 점차적으로 영역이 나뉘어가고 있다. 그러나 이로 인하여 모듈성을 제대로 반영하지 못하고 있다는 비난을 받을 수도 있다. 한편 이러한 비난은 모듈 시스템, 모듈 프로그래밍이 갖는 현재의 한계를 인식하고 보다 안정적으로 발전하기 위해 효율적인 방향을 추구하는데 기여할 수 있다.

 

모듈(module)은 모듈화를 통해 분리된 시스템의 각 기능으로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위등을 의미한다.

 

- 모듈의 기능적 독립성은 소프트웨어를 구성하는 각  모듈의 기능이 서로 독립됨을 의미한다.

- 모듈의 독립성은 결합도(Coupling)와 응집도(Cohesion)에 의해 측정된다.

- 모듈화란 소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등을 위해 시스템의 기능들을 모듈 단위로 분해하는 것을 의미합니다.

 

1. 결합도

결합도는 모듈 간에 상호 의존하는 정도 또는 두 모듈사이의 연관 관계이다.

결합도가 약할수록 품질이 높고, 강할수록 품질이 낮다.

 

내용 결합도 공통 결합도 외부 결합도 제어 결합도 소탬프 결합도 자료 결합도

왼쪽에서 오른쪽으로 갈수록 결합도가 약해진다.

 

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

 

 

2. 응집도

응집도는 모듈의 내부 요소들이 서로 관련되어 있는 정도이다.

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

 

기능적 응집도 순차적 응집도 교환적 응집도 절차적 응집도 시간적 응집도 논리적 응집도 우연적 응집도

왼쪽으로 갈수록 응집도가 약해집니다.

 

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

 

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

  • 팬인 : 어떤 모듈을 제어하는 모듈의 수이다.
    • 팬인이 높다는 것은 재사용 측면에서 설계가 잘 되어있다고 볼 수 있다.
    • 팬인이 높은 경우 단일 장애점이 발생할 수 있으므로 중점적인 관리 및 테스트가 중요하다.
  • 팬아웃 : 어떤 모듈에 의해 재어되는 모듈의 수를 의미한다.

4. N-S 차트(Nassi-Scheneiderman Chart)

  • N-S차트는 논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법이다.
  • 박스 다이어그램, Chapin Chart라고도 한다.
  • GOTO나 화살표를 사용하지 않는다.
  • 연속, 선택 및 다중 선택, 반복의 3가지 제어 논리 구조로 표현한다.
  • 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는 데 적합하다.

 

[출처 : 시나공 실기]

Comments