정보처리기사

★ 010 애플리케이션 설계[모듈]

로춘남 2020. 5. 31. 18:11
728x90

1. 모듈(Module)의 개요

- 모듈화를 통해 분리된 시스템의 각 기능들을 모듈이라고함. 모듈은 단독으로 컴파일이 가능하기 때문에 재사용 가능.

- 모듈화는 SW의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 분해하는 것을 의미

- 모듈의 독립성은 결합도와 응집도에 의해 측정. 독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게 모듈의 크기는 작게 만든다.

 

2. 결합도(Coupling)

- 모듈간에 상호 의존 또는 모듈 사이의 연관관계

- 다양한 결합으로 모듈을 구성 할 수 있으나, 결합도와 품질은 반비례 관계

- 결합도가 강하면 품질이 낮고, 시스템 구현 및 유지보수 작업이 어려움

 

자료 결합도(Date Coupling) - 모듈간 인터페이스가 자료 요소로만 구성 될대의 결합도
- 어떤 모듈이 다른 모듈을 호출하면서 매개변수나 인수로 데이터를 넘기고, 호출 받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려줌
- 모듈간의 내용을 전혀 알 필요가 업속, 한 모듈의 내용을 변경해도 다른 모듈에는 전혀 영향을 미치지 않는 바람직한 결합도
스탬프(검인) 결합도(Statmp) - 모듈 간 인터페이스로 배열이나 레코드 등의 자료 구조가 전달 될때의 결합도
- 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도
- 자료 구조의 포맷이나 구조의 변화는 이 구조를 조회하는 모든 모듈이나 조회하지 않는 모듈에게도 영향을 줌
제어 결합도(Control C) - 다른 모듈 내부의 논리적 흐름을 제어하기 위해 제어신호를 이용하여 통신하거나 제어 요소를 전달하는 결합도
- 한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통제하는 경우나 처리 기능이 두 모듈에 분리되어 설계된 경우에 발생
- 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 하위 모듈이 상위 모듈에게 처리 명령을 내리는 권리 전도현상이 발생
외부 결합도(External C) - 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조 할 때의 결합도
- 참조되는 데이터의 범위를 각 모듈에서 제한 가능
공통(공유) 결합도(Common C) - 공유되는 공통 데이터 영역을 여러 모듈이 사용 할때의 결합도
- 공통 데이터 영역을 변경하면 이를 사용하는 모든 모듈에 영향을 주기대문에 모듈의 독립성을 약하게 만듬
내용 결합도(Content C) - 한 모듈이 다른 모듈의 내부 기능 및 그 내부자료를 직접 참조하거나 수정할 때의 결합도
- 한 모듈에서 다른 모듈의 내부로 제어가 이동하는 경우에도 해당됨

※ 결합도 강한 순서

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

 

3. 응집도(Cohesion)

- 정보 은닉 개념을 확장한것으로 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도

- 모듈이 독립적인 기능이 정의되어 있는 정도

- 다양한 기준으로 모듈을 구성 할 수 있으나 응집도와 품질은 비례관계(ex. 응집도가 강 할 수록 품질이 높음)

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

※ 응집도 강한 순서

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

 

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

- 팬인은 어떤 모듈을 제어/호출하는 모듈의 수, 즉 자신을 사용하는 모듈 수를 나타냄.

- 팬아웃: 어떤 모듈에 의해 제어/호출되는 모듈의 수, 즉 자신이 사용하는 모듈 수를 나타냄.

- 팬인, 팬아웃을 분석하면 시스템 복잡도 확인 가능

- 시스템 복잡도를 최소화화려면 팬인은 높게, 팬아웃은 낮게 설계해야함

- 팬인이 높다는것은 재사용 측면에서 잘 설계된 것으로 볼 수 있으나, 단일 장애점이 발생 할 수 있으므로 중점적인 관리 및 테스트가 필요

※ 단일 장애점(SPOF, Single Point Of Failure): 시스템 구성 요소 중ㅈ 동작하지 않으면 전체 시스템이 멈추게 되는 요소를 의미.

- 팬 아웃이 높은 경우에는 불필요하게 다른 모듈을 호출하고 있는지 검토하고, 단순화 시킬 수 있는지에 대한 검토 필요

728x90