문서 읽는 데 22분 · 5강 · 1과목 · 소프트웨어 설계

공통 모듈 설계

목차 18
전체 59강 중 5강 · 1과목 · 소프트웨어 설계

큰 소프트웨어를 작고 독립적인 모듈로 쪼개고, 그 품질을 결합도·응집도 두 지표로 측정하는 단원. 매 회차 1~3문항 출제되는 빈출 1순위.

핵심 암기 4종: 결합도 6단계 내공외제스자(강→약) · 응집도 7단계 우논시절통순기(약→강) · 황금률 결↓응↑ · In은 재사용·Out은 복잡도


모듈 기초

모듈과 모듈화 ·개념 정의·

[정의] 모듈(Module) = 하나의 기능을 수행하는 독립적·재사용 가능한 작업 단위(함수·클래스·서브시스템). 모듈화(Modularization) = 큰 소프트웨어를 작고 독립적인 모듈로 나누는 설계 활동.

[분류] 모듈화 5대 장점

장점 한 줄
재사용성↑ 한 번 만든 모듈을 여러 곳에서 다시 씀
유지보수성↑ 문제 생긴 모듈만 고치면 됨
복잡도↓ 거대한 시스템을 작게 쪼개 파악 쉬움
병행 개발 여러 개발자가 모듈을 나눠 동시 개발
테스트 용이 모듈 단위 독립 검증

🔑 암기 좋은 모듈 = 단일 책임 + 독립성 + 재사용성 🎯 빈출 '모듈화 장점이 아닌 것' 소거형. 간헐. 💡 보충 레고 블록 한 조각 — 독립적이고, 교체 가능하고, 조합으로 더 큰 구조를 만든다.

공통 모듈 ·재사용 단위·

[정의] 여러 시스템·서비스가 공통으로 사용하는 기능을 모아놓은 재사용 단위 모듈. 인증·결제·로깅·날짜 변환처럼 '어디서나 필요한 기능'을 한 군데 모음.

⚠️ 함정 단순 '모듈'과 구분 — 핵심은 '여러 시스템이 공통으로 쓴다'. 💡 보충 주방 공용 양념통 — 모든 요리가 같은 소금·간장을 가져다 씀.

공통 모듈 명세 5원칙 ·명세 작성·

[분류]

원칙 의미
정확성(Correctness) 시스템에 정말 필요한 모듈인지 정확히 기술
명확성(Clarity) 누가 봐도 한 가지 의미로 해석
완전성(Completeness) 필요한 모든 사항을 빠짐없이 기술
일관성(Consistency) 모듈끼리 충돌·모순 없음
추적성(Traceability) 요구사항·근거를 거슬러 추적 가능

🔑 암기 정명완일추 (정확·명확·완전·일관·추적) ⚠️ 함정 2강 요구사항 명세 6원리(명완검일수추)와 다름. 7강 SOLID와도 다른 영역 — 이름만 비슷하다. 🎯 빈출 빈칸형·소거형. 간헐.

Fan-In / Fan-Out ·호출 관계 측정·

[비교]

구분 정의 방향 의미
Fan-In 그 모듈을 호출하는 상위 모듈 수 들어오는 화살표 재사용성↑
Fan-Out 그 모듈이 호출하는 하위 모듈 수 나가는 화살표 제어 복잡도↑(7 이하 권장)
텍스트
   [A]  [B]  [C]       상위 3개가 M 호출    Fan-In = 3
            
        [M]
            
   [D]  [E]  [F]       M이 하위 3개 호출    Fan-Out = 3

🔑 암기 In은 재사용·Out은 복잡도 🎯 빈출 구조도 주고 Fan-In/Out 세는 계산형. 화살표 방향만 세면 정답. 거의 매회. ⚠️ 함정 '바람직한 설계' 보기에 'Fan-Out을 높인다'가 있으면 오답 — Fan-Out은 낮춰야 한다.


결합도 (Coupling)

결합도 정의 ·모듈 사이·

[정의] 모듈 사이의 상호 의존도(연결 강도). 한쪽이 바뀌면 다른 쪽이 받는 영향의 크기.

🔑 암기 결합도는 낮을수록 좋다 — 변경 영향 최소·재사용·테스트 용이. ⚠️ 함정 '결합도가 높을수록 좋다'는 한 글자 함정 단골. 높을수록 좋은 건 응집도. 💡 보충 아파트 벽 — 얇으면(결합도↑) 옆집 소음이 다 넘어온다.

결합도 6단계 ·이 강의 절대 핵심·

[분류] 강한 것 → 약한 것 (위험 → 이상적)

강도 단계 영문 식별 키워드
① 내용 Content 다른 모듈 내부 변수·코드 직접 참조/수정
② 공통 Common 전역 변수를 여러 모듈이 공유
③ 외부 External 외부 장치·파일 포맷·통신 프로토콜에 의존
④ 제어 Control 제어 플래그(동작 방식 신호) 전달
⑤ 스탬프 Stamp 자료구조 통째(레코드) 전달, 일부만 사용
⑥ 자료 Data 단순 파라미터(값) 만 전달 — 가장 이상적

🔑 암기 내공외제스자 (강→약) — "내가 공부 외워서 제일 스마트한 자" 🎯 빈출 강→약 순서 나열형 + 양 끝 묻기('가장 강한/약한 결합도?'). 거의 매회 1순위. ⚠️ 함정 양 끝 — 가장 강함 = 내용, 가장 약함(이상적) = 자료.

결합도 보기 단서 즉답 매칭 ·시험 즉답·

[분류]

단서 키워드 정답
'전역 변수'·'공통 데이터 영역' 공통 결합도
'플래그·스위치'·'동작 방식 지시' 제어 결합도
'단순 파라미터'·'값만 전달' 자료 결합도
'내부 변수 직접 참조·수정' 내용 결합도
'자료구조·레코드 통째' 스탬프 결합도

🎯 빈출 설명→단계 매칭. 위 세 줄(전역=공통·플래그=제어·단순=자료)만 잡아도 결합도 문제 절반. ⚠️ 함정 보기에 '우연적·기능적'이 섞이면 그건 응집도 단계. 결합도/응집도 단계 이름 섞기 단골.


응집도 (Cohesion)

응집도 정의 ·모듈 내부·

[정의] 한 모듈 내부 요소들이 하나의 목적을 위해 얼마나 서로 관련·결속돼 있는지.

🔑 암기 응집도는 높을수록 좋다 — 결합도와 정반대 방향. ⚠️ 함정 '응집도가 낮을수록 좋다'는 무조건 오답. 💡 보충 필통(높음: 다 필기도구) ↔ 잡동사니 서랍(낮음: 공통점 없음).

응집도 7단계 ·이 강의 절대 핵심·

[분류] 약한 것 → 강한 것 (흩어짐 → 이상적)

강도 단계 영문 식별 키워드
① 우연적 Coincidental 아무 관련 없는 요소가 우연히 모임
② 논리적 Logical 비슷한 종류·카테고리로 묶음
③ 시간적 Temporal 같은 시간대에 실행(초기화·종료)
④ 절차적 Procedural 정해진 순서대로 실행(데이터는 무관)
⑤ 통신적 Communicational 같은 입·출력 데이터 사용
⑥ 순차적 Sequential 한 요소의 출력이 다음 요소의 입력
⑦ 기능적 Functional 단일 기능 수행 — 가장 이상적

🔑 암기 우논시절통순기 (약→강) — "우리는 논리적인 시대의 절친, 통하는 순간 기적이 와요" 🎯 빈출 약→강 순서 나열형 + 양 끝 묻기. 거의 매회 1순위. ⚠️ 함정 결합도(강→약)와 방향이 정반대. 양 끝 — 가장 약함 = 우연적, 가장 강함 = 기능적.

응집도 보기 단서 즉답 매칭 ·시험 즉답·

[분류]

단서 키워드 정답
'아무 관련 없는'·'우연히' 우연적
'비슷한 종류'·'유사한 작업' 논리적
'같은 시간'·'초기화·종료' 시간적
'정해진 순서·절차' 절차적
'같은 입·출력 데이터' 통신적
'출력→입력'·'파이프라인' 순차적
'단일 기능'·'한 가지 일' 기능적

🎯 빈출 설명→단계 매칭. 짝짓기 오류형(우연적↔기능적 바꿔치기)도 단골. 💡 보충 절차적 vs 순차적 = '순서만 같음' vs '데이터가 흐름'. 통신적 vs 순차적 = '같은 데이터' vs '데이터 흐름'.


모듈 설계 황금률

결합도↓ · 응집도↑ ·오늘의 한 줄·

[비교]

항목 결합도(Coupling) 응집도(Cohesion)
측정 대상 모듈 사이의 의존도 모듈 내부의 결속력
좋은 방향 낮게(↓) 높게(↑)
단계 수 6단계 7단계
순서 두문자 내공외제스자(강→약) 우논시절통순기(약→강)
가장 이상적 자료 결합도 기능적 응집도
가장 나쁨 내용 결합도 우연적 응집도

🔑 암기 결↓응↑ — 매 회차 빠지지 않는 1순위 명제. 🎯 빈출 '낮게/높게' 방향 뒤집기 부정형. 시험장에서 헷갈리면 이 한 줄로 복귀.

모듈 설계 6대 지침 ·바람직한 설계·

[분류]

지침 한 줄
결합도↓ · 응집도↑ 황금률
단일 진입 · 단일 출구 입구·출구를 하나로(흐름 추적·디버깅 쉬움)
추상화 세부 구현은 숨기고 인터페이스만 노출
정보 은닉 내부 데이터를 외부에서 직접 접근 못 하게 캡슐화
복잡도 최소화 모듈 크기·Fan-Out을 일정 수 이하로
일관성 비슷한 기능은 비슷한 방식으로

🎯 빈출 '바람직한 모듈 설계가 아닌 것' 부정형. 거의 매회. ⚠️ 함정 오답 보기 단골 — '결합도 높이기'·'전역 변수 적극 사용'·'Fan-Out 높이기'·'진입·출구 여러 개'.


기출 다지기

[기출 1 출제] 결합도(Coupling)가 강한 순서부터 약한 순서로 올바르게 나열한 것은? (순서 나열형)

  • ① 자료 → 스탬프 → 제어 → 외부 → 공통 → 내용
  • ② 내용 → 공통 → 외부 → 제어 → 스탬프 → 자료
  • ③ 공통 → 내용 → 제어 → 외부 → 자료 → 스탬프
  • ④ 외부 → 제어 → 내용 → 공통 → 스탬프 → 자료
정답 및 해설 보기

정답 ②

선지 판정 근거
오답 약→강 역순
정답 내공외제스자(강→약) 그대로
오답 공통·내용 순서 뒤집힘(1순위는 내용)
오답 외부는 3순위인데 첫 자리

🔑 내공외제스자. 양 끝 — 내용(가장 강) ↔ 자료(가장 약).

[기출 2 출제] 다음 설명에 해당하는 응집도(Cohesion)는? (설명→용어)

한 모듈 내 요소들이 출력 데이터를 입력으로 받아 다음 작업을 수행하는 형태로, 데이터가 한 방향으로 흐르며 연결되는 응집도.

  • ① 우연적 응집도
  • ② 절차적 응집도
  • ③ 통신적 응집도
  • ④ 순차적 응집도
정답 및 해설 보기

정답 ④

선지 판정 근거
오답 관련 없는 요소가 우연히 모인 가장 약한 응집도
오답 '순서만' 같음. 데이터 흐름과 무관
오답 '같은 데이터'를 사용. 출력→입력 흐름과는 다름
정답 출력이 다음 작업의 입력으로 흐름 = 순차적

🔑 출력→입력·파이프라인 = 순차적. 절차적은 '순서만' 같음(데이터는 무관).

[기출 3 출제] 결합도·응집도의 종류와 설명이 잘못 짝지어진 것은? (짝짓기 오류형)

  • ① 자료 결합도 — 단순 매개변수만으로 데이터를 주고받는 가장 약한 결합도
  • ② 공통 결합도 — 전역 변수를 여러 모듈이 공유하는 결합도
  • ③ 우연적 응집도 — 하나의 기능을 위해 모든 요소가 협력하는 가장 강한 응집도
  • ④ 기능적 응집도 — 단일 기능을 수행하기 위해 요소들이 모인 응집도
정답 및 해설 보기

정답 ③

선지 판정 근거
정확 단순 매개변수 = 가장 약한 결합도
정확 전역 변수 공유 = 공통 결합도
잘못된 짝지음 '단일 기능 협력'은 기능적 응집도의 설명. 우연적은 '관련 없음'(가장 약)
정확 단일 기능 수행 = 기능적 응집도

🔑 우연적 = 관련 없음(가장 약) ↔ 기능적 = 단일 기능(가장 강). 정반대를 바꿔치기하는 단골 함정.

[기출 4 출제] 결합도가 가장 강한(높은) 것은? (양 끝 묻기)

  • ① 자료 결합도
  • ② 스탬프 결합도
  • ③ 제어 결합도
  • ④ 내용 결합도
정답 및 해설 보기

정답 ④

선지 강도 순위(1=가장 강함)
① 자료 6순위(가장 약함·이상적)
② 스탬프 5순위
③ 제어 4순위
④ 내용 1순위(정답)

🔑 양 끝 1초 컷 — '가장 강한 결합?' 내용, '가장 약한 결합?' 자료.

[기출 5 출제] 다음 구조도에서 모듈 F의 Fan-In과 Fan-Out을 올바르게 계산한 것은? (계산형)

텍스트
         [A]      [B]      [C]
           \      |      /
                      
                 [F]
                      
           /      |      \
         [D]     [E]     [G]
  • ① Fan-In = 2, Fan-Out = 3
  • ② Fan-In = 3, Fan-Out = 3
  • ③ Fan-In = 3, Fan-Out = 2
  • ④ Fan-In = 2, Fan-Out = 2
정답 및 해설 보기

정답 ②

구분 계산 결과
Fan-In F를 호출하는 상위 = A, B, C 3 (들어오는 화살표)
Fan-Out F가 호출하는 하위 = D, E, G 3 (나가는 화살표)

🔑 In은 들어오는 화살표(재사용), Out은 나가는 화살표(복잡도). 방향만 세면 정답.

[기출 6 출제] 바람직한 모듈 설계 지침으로 옳지 않은 것은? (부정형)

  • ① 결합도는 낮게, 응집도는 높게 설계한다
  • ② 모듈은 단일 진입·단일 출구를 갖도록 설계한다
  • ③ 모듈의 Fan-Out을 최대한 높여 하위 모듈을 많이 호출하도록 한다
  • ④ 정보 은닉을 통해 모듈 내부 데이터를 숨긴다
정답 및 해설 보기

정답 ③

선지 옳은 지침?
결합도↓·응집도↑ — 황금률
단일 진입·단일 출구 — 6대 지침 중 하나
잘못된 지침 — Fan-Out은 낮춰야(7 이하 권장). 높이면 제어 복잡도↑·변경 영향↑
정보 은닉 — 6대 지침 중 하나

🔑 모듈 설계 = 결↓·응↑·Out↓·은닉·단일 진입출구·일관성.

[기출 7 출제] 응집도(Cohesion)를 약한 순서부터 강한 순서로 올바르게 나열한 것은? (순서 나열형)

  • ① 우연적 → 논리적 → 시간적 → 절차적 → 통신적 → 순차적 → 기능적
  • ② 기능적 → 순차적 → 통신적 → 절차적 → 시간적 → 논리적 → 우연적
  • ③ 우연적 → 시간적 → 논리적 → 통신적 → 절차적 → 순차적 → 기능적
  • ④ 기능적 → 통신적 → 순차적 → 절차적 → 시간적 → 논리적 → 우연적
정답 및 해설 보기

정답 ①

선지 판정 근거
정답 우논시절통순기(약→강) 그대로
오답 강→약 역순
오답 시간적·논리적 순서 뒤집힘(논리적 2위 → 시간적 3위)
오답 강→약 순서 + 통신적·순차적도 뒤집힘

🔑 결합도(강→약)와 응집도(약→강)는 순서 방향이 정반대 — 단골 함정.


한 장 요약

지표 암기 방향 양 끝 (나쁨 ↔ 이상적)
결합도 6단계 내공외제스자 강→약, 낮을수록 좋음(↓) 내용 ↔ 자료
응집도 7단계 우논시절통순기 약→강, 높을수록 좋음(↑) 우연적 ↔ 기능적
황금률 결↓응↑ 매 회차 1순위 명제
Fan-In/Out In은 재사용·Out은 복잡도 In↑ 좋음 / Out↑ 나쁨(7 이하)
보기 단서 즉답
전역 변수 공통 결합도
플래그·스위치 제어 결합도
단순 파라미터 자료 결합도
관련 없는·우연히 우연적 응집도
단일 기능 기능적 응집도
출력→입력·파이프라인 순차적 응집도

🎯 합격 한 끗: 결↓ · 응↑ · 내공외제스자 · 우논시절통순기 네 줄과 양 끝 네 단어(내용↔자료 · 우연적↔기능적)만 입에 붙으면 5강은 끝.

전체 목록 필기 이론

합격까지

정처기, 혼자 막막하다면

초개인화 학습앱 Klue와 에듀윌 온라인강의로 합격까지 이어가세요.