본문 바로가기

백엔드 개발자 기록 일람/정보처리기사 준비 기록

모듈 -1-

 

▼모둘괴 결합도와 응집도

★모듈

전체 프로그램에서 어떠한 기능을 수행할  수 있는 실행 코드를 의미한다. 재사용이 가능하며 자체적으로 컴파일 할 수 있는 것을 의미하며, 시스템 개발시 기간과 노동력을 절감할 수  있다. 모듈의 독립성은 결합도와 응집도에 의해 측정된다.

변주의 선언을 효율적으로 할 수 있어 기억장치를  유용하게 사용할 수 있고, 모듈마다 사용할 변수를 정의하지않고 사용하여 사용할 수 있다. 각 모듈의 기능이 서로 다른 모듈과의 과도한 상호 작용을 회피함으로서 이루어지는 것을 기능적  독립성이라고 한다.

//서브루틴 = 서브시스템 = 작업단위

 

★결합도

서로 다른 두 모듈간의 상호의존도로서 두 모듈간의 기능적인 연관  정도를 나타낸다. 모듈 간의 결합도를 약하게하면 모듈 독립성이 향상되어 시스템을 구현하고유지보수 작업이 쉬워진다.

결합도 약함






















결합도 강함
자료 결합도 모듈 간의 인터페이스가 자료 요소로만 구성된 경우 다른 모듈에 영향을 주지 않아 모듈간의 내용을 전혀 알 필요 없는 가장 바람직한 결함도이다. 
스탬프 결합도 두 모듈이 같은 자료 구조를 조회하는 경우의 결합도이며, 자료 구조의 어떠한변화. 즉  포멧이나 구조의 변화는 그것을 조회하는 모든 모듈 및 변화하는 필드를 실제로 조회하지 않는 모듈까지도 영향을 미치게 된다. 배열 레코드, 구조 등이 모듈 간의 인터페이스로 전달되는 경우와 관계된다.
제어 결합도 어떤 모듈이 다른 모듈  내부 논리 조작을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우이며, 하위 모듈에서 상위모듈로 제어 신호가 이동하여상위 모듈에 처리 명령을 부여하는 관리 전도 현상이 발생하게 된다.
외부 결합도 어떤 모듈에서 외부로 선언한 변수(데이터)를 다른 모듈에서 참조할 경우와  관계된다.
공통 결합도 여러 모듈이 공통 자료 영역을 사용하는 경우로 공통 데이터 영역 내용을 수정하면 이 데이터를 사용하는 모든 모듈에 영향을 준다.
내용 결합도 가장 강한 결합도를 가지고 있으며 한 모둘이 다른 모듈의 내부 기능 및 그 내부 자료를 조회하도록 설계되었을 경우와  관계된다. 한 모듈에서 다른 모듈의 내부로 제어 또한 이동된다. 한 모듈이 다른 모듈 내부 자료의 조회 또는 변경이 가능하다. 또한 두 모듈이  같은 문제의 공유가 가능하다.

 

★응집도

명령어, 명령어의 모임, 호출문, 특정 작업 수행 코드등 모듈 안의 모소들이 서로 관련된 정도를 말한다. 구조적 설계에서는 기능 수행 시 모듈 간에 최소한의 상호작용을 하여 하나의 기능만을 수행하는 정도를 표현한다. 응집도가 높다는 것은 필요한 요소들로, 응집도가 낮다는 것은 요소간의 관련성이 적다는 것을 의미한다.

응집도 강함

















응집도 약함
기능적  응집도 모듈 내부의 모든 기능 요소들이한 문제와 연관되어 수행되는 경우와  관계된다.
순차적 응집도 한 모듈 내부의 한 기능 요소에 의한   출력 자료가 다음 기능 요소의 입력 자료로 제공되는 경우와 관계된다.
교환적 응집도 같은 입력과 출력을 사용하는 소 작업이 모인 경우와 관계된다.
절차적 응집도 모듈이 다수 관련 기능을 가질 떄 모듈 내부의 기능 요소들이 그 기능을 순차적으로 수행할 경우와 연계왼다.
시간적 응집도 특정 시간에 처리되는 여러 기능을 모아 한 개의 모듈로 작성할 경우와 관계된다.
논리적 응집도 유사한 성경을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우와 관계된다.
우연적 응집도 모듈 내부의 각 기능 요소들이 서로 관련이 없는 요소로만 구성된 경우와 관계된다.

 

★효과적인 모듈화 설계방법

출입구를 하나씩 갖게  하여 복잡도와 중복성을 줄이고 일관성을 유지할 수 있게, 그리고 유지보스가 용이하고 모듈의 크기는 시스템 전반적인 기능과 구조를 이해하기 쉬운 크기로 설계한다. 모듈 기능은 예측 가능해야하며 지나치게 제한적이여선 안되며, 적당한 모듈의 크기를 유지하고 모듈간의 접속관계를 분석하여 복잡도와  중복을 줄이고, 계층적 자료 조직을 제시하여 모듈간의 효과적인 제어를 가능케 해야한다.

'백엔드 개발자 기록 일람 > 정보처리기사 준비 기록' 카테고리의 다른 글

소프트웨어 아키텍처  (0) 2024.02.20
모듈 -2-  (0) 2024.02.15
구조적 개발 방법론  (1) 2024.02.05
코드 설계  (0) 2024.02.05
소프트웨어 설계 모델링  (0) 2024.02.03