[정보처리기사] 모듈의 결합도(Coupling)와 응집도(Cohesion) | 정보처리기사 기출문제
1️⃣ 모듈의 독립성
- 모듈은 시스템의 기능을 향상시키고, 수정 및 재사용을 용이하게 하기 위해 기능 단위로 분해된 소프트웨어 구성 요소입니다.
- 모듈의 독립성은 결합도를 낮추고 응집도를 높이며, 모듈의 크기가 작을수록 더 높아집니다.
독립성 ↑ = 응집도 ↑ + 결합도 ↓ - 독립성이 높은 모듈은 다른 모듈에 영향을 덜 미치며, 오류를 쉽게 발견하고 수정할 수 있습니다.
2️⃣ 결합도 (Coupling)
결합도는 모듈 간의 상호 의존 정도를 의미합니다. 결합도가 낮을수록 모듈은 독립적이며, 시스템의 유지보수성이 높아집니다. 결합도는 약할수록 좋습니다.
결합도는 모듈 간의 의존성을 나타내며, 결합도가 약할수록 좋은 모듈입니다.
📌 결합도의 종류
- 자료 결합도 (데이터 결합도) (Data Coupling) [ 결합도 가장 약함 ] ↓
- 값 전달
- 모듈 간의 인터페이스가 단순한 자료 요소로만 구성된 경우.
- 모듈 간의 인터페이스로 값이 전달되는 경우.
- 스탬프 결합도 (Stamp Coupling)
- 배열등 전달
- 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도.
- 제어 결합도 (Control Coupling)
- 제어 요소 전달
- 한 모듈이 다른 모듈의 내부 논리 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 경우.
- 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달 되는 경우
단순 처리 대상인 데이터만 전달되는 것이 아니라 어떻게 처리해야하는지를 결정하는 제어 요소가 전달되는 경우의 결합도(21년 기출 문장)
- 외부 결합도 (External Coupling)
- 다른 모듈 변수 사용
- 한 모듈이 선언한 데이터를 다른 모듈이 참조할 때의 결합도.
- 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조하는 경우
- 공통 결합도(공유 결합) (Common Coupling)
- 전역변수 사용
- 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도.
- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우
- 내용 결합도 (Content Coupling) [ 결합도 가장 강함 ] ↑
- 다른 모듈 기능 이용
- 한 모듈이 다른 모듈의 내부 기능이나 자료를 직접 참조하거나 수정할 때의 결합도.
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
= 스파게티 코드, 외계인 코드,레거시 시스템
↔클린코드
3️⃣ 응집도 (Cohesion)
응집도는 모듈 내부의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타냅니다. 응집도가 높을수록 모듈은 독립적이며, 하나의 기능을 잘 수행합니다. 응집도는 강할수록 좋습니다.
응집도는 모듈 내부 요소들의 관련성을 나타내며, 응집도가 강할수록 좋은 모듈입니다.
📌 응집도의 종류
- 기능적 응집도 (Functional Cohesion) [ 응집도 가장 강함 ] ↑
- 단일한 목적 수행
- 모듈 내부의 모든 요소가 단일 기능을 수행할 때의 응집도. 응집도 가장 강함.
- 순차적 응집도 (Sequential Cohesion)
- 출력값을 입력값으로 사용
- 한 활동의 출력값을 다음 활동의 입력으로 사용될 때의 응집도.
- 통신적(교환적) 응집도 (Communication Cohesion)
- 동일한 입력, 출력
- 동일한 입력과 출력을 사용해 다른 기능을 수행하는 요소들이 모였을 때의 응집도.
- 절차적 응집도 (Procedural Cohesion)
- 순차적 수행
- 관련된 기능을 순차적으로 수행하는 요소들이 모였을 때의 응집도.
- 시간적 응집도 (Temporal Cohesion)
- 같은 시간에 기능 수행
- 특정 시간에 처리되는 기능 요소들이 모였을 때의 응집도.
- 논리적 응집도 (Logical Cohesion)
- 유사한 성격
- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 모였을 때의 응집도.
- 우연적 응집도 (Coincidental Cohesion) [ 응집도 가장 약함 ] ↓
- 연관관계 없음
- 모듈 내부의 요소들이 서로 관련이 없을 때의 응집도. 응집도 가장 약함.
2020년 정보처리기사 실기 기출문제
문제
다음은 프로그램 모듈화 및 모듈의 독립성에 대한 설명이다. 괄호 ( ) 안에 알맞은 용어를 쓰시오.
- 공통 모듈 구현이란 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법이다. 인터페이스 모듈, 데이터베이스 접근 모듈 등 필요한 공통 모듈을 구현한다. 모듈 간의 ( 1. ) 은/는 줄이고, ( 2. ) 은/는 높은 공통 모듈 구현을 권장하고 있다.
- 모듈의 독립성을 판단하는 두 가지 지표이다. ( 1 ) 는 모듈간의 상호 의존 정도, ( 2 )는 모듈 내부의 기능적인 집중 정도이다.
- 모듈의 독립성을 높이기 위해서는 모듈 간의 상호 의존 정도를 나타내는 ( 1 )를 낮추고 모듈이 독립적으로 자체 기능 만을ㅇ 수행하도록 ( 2 )를 높여야 한다.
정답
1. 결합도 (Coupling)
2. 응집도 (Cohesion)
해설
- 결합도 (Coupling): 모듈 간의 결합도는 모듈 간의 상호 의존성을 나타냅니다. 결합도가 낮을수록 모듈 간의 의존성이 줄어들어 시스템의 유연성과 유지보수성이 향상됩니다. 공통 모듈 구현 시, 모듈 간의 결합도를 줄이는 것이 목표입니다.
- 응집도 (Cohesion): 모듈 내의 응집도는 모듈 내부의 요소들이 얼마나 밀접하게 연관되어 있는지를 나타냅니다. 높은 응집도를 가진 모듈은 특정 기능에 대해 강하게 집중되어 있어 모듈의 재사용성과 유지보수성이 높습니다. 공통 모듈 구현 시, 높은 응집도를 유지하여 모듈의 기능을 명확히 하고 효율적인 구현을 권장합니다.
2021년 1회 정보처리기사 실기 기출문제
문제
다음은 결합도 종류에 대한 설명이다.알맞은 용어를 쓰시오.
( ① )은/는 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도입니다.
( ② )은/는 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도입니다.
( ③ )은/는 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 참조하고, 전역 변수를 갱신하는 방식으로 상호작용하는 경우의 결합도입니다.
정답
1. 내용 결합도
2. 스탬프 결합도
3. 공통 결합도
해설
- 결합도(Coupling)
결합도는 모듈 간의 상호 의존성을 나타내며, 결합도가 낮을수록 모듈 간의 독립성이 높아지고 시스템의 유연성과 유지보수성이 향상됩니다.
내용 결합도(제일 낮음) > 공통 결합도 > 외부 결합도 > 제어 결합도 > 스탬프 결합도 > 자료 결합도 순으로 결합도가 높습니다. 결합도가 낮을수록 모듈 간 독립성이 높아져 시스템 설계와 유지보수가 용이합니다.
시스템 개발 시, 모듈 간 결합도를 줄이는 것이 중요하며, 이를 통해 시스템의 변경에 대한 영향을 최소화할 수 있습니다.
- 내용 결합도(Content Coupling)는 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도입니다.
- 정의: 한 모듈이 다른 모듈의 내부 기능이나 자료를 직접 참조하거나 수정하는 경우의 결합도입니다.
- 특징: 결합도 중 가장 강한 유형으로, 모듈 간의 독립성이 매우 낮습니다.
- 예시: 한 모듈이 다른 모듈의 변수를 직접 수정하거나, 내부 함수에 의존하는 경우.
- 문제점: 스파게티 코드, 외계인 코드, 레거시 시스템 등의 비효율적인 코드가 발생할 수 있습니다.
- 대안: 모듈 간의 명확한 인터페이스 정의와 데이터 캡슐화를 통해 클린 코드를 작성합니다.
- 스탬프 결합도(Stamp Coupling)는 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도입니다.
- 정의: 모듈 간에 배열, 객체, 구조체와 같은 복합 자료 구조를 전달하는 경우 발생하는 결합도입니다.
- 특징: 전달되는 자료의 내부 구조에 대한 의존성이 높아질 수 있습니다.
- 문제점: 구조 변경 시 모든 관련 모듈을 수정해야 할 가능성이 높습니다.
- 대안: 단순 데이터 타입 사용 또는 필요한 데이터만 전달하도록 설계합니다.
- 공통 결합도(Common Coupling)는 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 참조하고, 전역 변수를 갱신하는 방식으로 상호작용하는 경우의 결합도입니다.
- 정의: 모듈들이 공통 데이터(전역 변수 등)를 참조하거나 갱신하여 상호작용하는 경우의 결합도입니다.
- 특징: 모듈 간의 데이터 공유로 인해 의존성이 증가하며, 전역 변수의 상태를 관리하기 어려워집니다.
- 문제점: 데이터의 예측 불가능한 변경으로 인해 디버깅과 유지보수가 어렵습니다.
- 대안: 전역 변수 사용을 최소화하고, 데이터를 모듈 내부에 캡슐화하여 외부에 노출되지 않도록 합니다.
2021년 1회 정보처리기사 실기 기출문제
문제
다음은 결합도 종류에 대한 설명이다.알맞은 용어를 쓰시오.
( ① ) : 두 모듈이 동일한 자료구조를 조회하는 경우
( ② ) : 가장 강한 결합도를 가지고 있으며, 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 조회하도록 설계되었을 경우
( ③ ) : 여러 모듈의 공통 자료 영역을 사용하는 경우
정답
1. 스탬프 결합도
2. 내용 결합도
3. 공통 결합도
해설
소프트웨어 결합도(Coupling)는 모듈 간의 상호 의존성을 나타내며, 결합도가 낮을수록 모듈의 독립성이 높아져 유지보수와 재사용성이 향상됩니다. 문제에 언급된 결합도 종류는 결합도의 유형과 그 강도에 따라 분류됩니다.
- 스탬프 결합도(Stamp Coupling): 두 모듈이 동일한 자료구조를 조회하거나 전달받아 처리하는 경우 발생하며, 전달되는 데이터의 구조가 변경되면 모듈들이 영향을 받는 특징이 있습니다.
- 내용 결합도(Content Coupling): 가장 강한 결합도로, 한 모듈이 다른 모듈의 내부 구현(변수나 기능)을 직접 참조하거나 변경할 때 발생합니다. 이는 모듈 간의 독립성을 심각하게 훼손하여 유지보수를 어렵게 만듭니다.
- 공통 결합도(Common Coupling): 여러 모듈이 공통적인 자료 영역(글로벌 변수 등)을 공유하여 사용하는 경우 발생하며, 공통 데이터 변경 시 모든 모듈에 영향을 미칩니다.
결합도를 줄이는 것이 모듈 설계의 핵심이며, 데이터 결합도나 메시지 결합도와 같은 약한 결합도를 사용하는 것이 바람직합니다.
2021년 2회 정보처리기사 실기 기출문제
문제
다음은 응집도 종류에 대한 설명이다.알맞은 용어를 쓰시오.
- ( ① ) :
- 입출력 간 연관성은 없으나, 순서에 따라 수행되는 것
- 모듈이 다수의 관련 기능을 가질 때 모듈 내부의 기능 요소들이 그 기능을 순차적으로 수행할 경우
- ( ② ) :
- 동일한 입력과 출력을 사용하는 것
- 동일한 입력과 출력을 사용하는 소작업들이 모인 경우
- ( ③ ) :
- 하나의 기능에 모두 기여하며, 밀접하게 연관되어 그룹화된 것
- 모듈 내부의 모든 기능 요소들이 한 문제와 연관되어 수행되는 경우
정답
1. 절차적 응집도
2. 통신적(교환적) 응집도
3. 기능적 응집도
해설
응집도(Cohesion)는 모듈 내부 요소들이 얼마나 밀접하게 연관되어 있는지를 나타내는 척도입니다. 응집도가 높을수록 모듈의 설계가 우수하며, 유지보수성과 재사용성이 증가합니다.
① 절차적 응집도는 구성 요소들이 순서에 따라 실행되지만, 요소 간 기능적 연관성은 낮은 경우를 말합니다. 예를 들어, 데이터 입력 → 처리 → 출력의 작업이 순차적으로 이루어질 때 나타납니다.
② 통신적 응집도는 모듈의 구성 요소들이 동일한 입력 데이터를 사용하거나 동일한 출력을 생성하는 경우입니다. 공통된 자원을 사용하는 작업에서 자주 나타납니다.
가장 이상적인 응집도인 ③ 기능적 응집도는 모듈이 하나의 명확한 기능을 수행하며, 구성 요소들이 그 기능을 위해 밀접하게 협력하는 경우입니다. 기능적 응집도는 높은 재사용성과 독립성을 제공하며, 소프트웨어 설계에서 가장 권장되는 형태입니다. 높은 응집도의 모듈을 설계하면 유지보수성이 향상되고, 오류를 최소화하며, 코드의 가독성을 높일 수 있습니다.
2021년 3회 정보처리기사 실기 기출문제
문제
다음은 특정 결합도(Coupling) 종류에 대한 설명이다. 설명에 해당하는 결합도 종류를 영문으로 작성하시오.
- 어떤 모듈이 다른 모듈을 호출할 때, 단순히 값만 전달되는 형태가 아닌 제어 신호를 전달할 때 생기는 결합도
- 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
- 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생
정답
제어 결합도 (Control Coupling)
해설
제어 결합도(Control Coupling)는 한 모듈이 다른 모듈을 호출할 때 단순한 데이터 값이 아니라 제어 신호(Control Flag) 를 전달하여 실행 흐름을 결정하는 결합도를 의미합니다. 이 경우, 호출된 모듈은 전달된 제어 신호에 따라 서로 다른 로직을 수행하게 됩니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."