응집도 7단계와 결합도 6단계는 이름과 순서가 곧 답이다. UML 은 다이어그램 14개와 관계 6개의 짝이다
왜 이걸 하나 — SW공학 묶음 37문항 중 9문항이 이 장이고, 11회 중 8회에 나왔다. 2회에서 1~2문항 샌 묶음의 첫 장이다.
11회분 220문항 중 이 장의 기출은 9문항이다. 2024년 2회에는 2문항(순차적 응집도 · 제어 결합도)이 나왔고, 2026년에는 두 회 연속(응집도 3칸 · 내용 결합도)이다. 예상 모의는 없고 훈련 5문항이 빈자리를 메운다.
| 꼴 | 몇 문항 | 무엇을 적나 | 보기 |
|---|---|---|---|
| 설명 → 응집도 · 결합도 이름 | 5 | 순차적 응집도 · 제어 결합도 · 내용 결합도, 3칸 매칭 | 2024-2회 6번 · 18번 · 2025-1회 12번 · 2026-1회 20번 · 2026-2회 2번 |
| 순서 나열 | 1 | 응집도를 높은 것부터 | 2024-1회 3번 |
| UML 다이어그램 이름 | 2 | 패키지 다이어그램 | 2023-3회 6번 · 2025-3회 1번 |
| UML 관계 매칭 | 1 | 연관 · 일반화 · 의존 | 2024-3회 15번 |
→ 응집도 · 결합도가 6문항, UML 이 3문항이다. 패키지 다이어그램은 같은 문장으로 두 번 나왔고, 결합도는 2024년 2회 · 2025년 1회 · 2026년 2회 세 번 나왔다. 이 장은 이름 13개(응집도 7 + 결합도 6)와 UML 짝 20개를 한 벌로 묶는다.
E01 진단의 SW공학 4문항 중 결합도 1문항(2번)이 이 장이었다. 「1~2문제 틀린 것 같다」고 한 묶음이라 05절에서 헷갈리는 짝(논리적 vs 절차적, 스탬프 vs 자료, 집합 vs 합성)을 따로 갈라 둔다.
문항 수는 이 노트의 문제 데이터에서 ch=E15 인 것을 센 값이다(2026-09-14). 2025-1회 12번은 이전 자료가 기호 매칭 요약만 남겨 grandlife.co.kr 복원(내용 · 스탬프 · 공통)으로 채웠다.
왜 이걸 하나 — 시험 전날 단계 이름 13개를 순서대로 백지에 적어 본다.
왜 이걸 하나 — 이름 13개를 외우는 것이 아니라 무엇을 기준으로 등급이 매겨지는지 알면 설명이 낯설어도 자리를 찾는다.
응집도는 한 모듈 안의 것들이 왜 한 모듈에 모여 있느냐의 이유가 얼마나 그럴듯한가다. 이유가 없으면 우연적, 「비슷해 보여서」면 논리적, 「같은 때 돌아서」면 시간적, 「순서가 있어서」면 절차적, 「같은 데이터를 다뤄서」면 교환적, 「앞의 출력이 뒤의 입력이라서」면 순차적, 「한 가지 일을 위해서」면 기능적이다.
위로 갈수록 이유가 강해진다. 2026년 1회 20번의 세 칸이 이 사다리의 위쪽 셋을 설명으로 물었다 — 「순서에 따라 차례대로」는 절차적, 「동일한 입출력 데이터」는 교환적, 「단일 기능」은 기능적. 2024년 2회 6번의 「한 활동의 출력이 다음 활동의 입력」은 순차적이다.
절차적과 순차적이 가장 많이 섞인다. 둘 다 순서가 있지만 데이터가 앞에서 뒤로 넘어가느냐가 다르다. 넘어가면 순차적, 순서만 있고 데이터는 따로면 절차적. 2024년 1회 3번의 순서 나열은 이 사다리를 그대로 적는 문제였다.
결합도는 두 모듈이 무엇을 매개로 얽혀 있느냐다. 필요한 값만 인자로 넘기면 자료, 배열 · 구조체를 통째로 넘기면 스탬프, 상대의 동작을 고르는 플래그를 넘기면 제어, 파일 형식 · 프로토콜 같은 외부 규격을 함께 알면 외부, 전역 변수를 같이 쓰면 공통, 상대의 내부 변수 · 코드를 직접 건드리면 내용이다.
아래로 갈수록 한쪽을 고치면 다른 쪽이 깨진다. 2026년 2회 2번은 「다른 모듈의 내부 데이터나 제어 흐름을 직접 참조하거나 수정」이라 내용 결합도이고, 2024년 2회 18번의 「플래그 · 스위치 등 제어 요소 전달」은 제어 결합도, 2025년 1회 12번의 「자료구조 전체를 전달」은 스탬프 결합도다.
자료와 스탬프가 가장 많이 섞인다. 둘 다 인자로 넘기지만 필요한 값만 넘기느냐 덩어리째 넘기느냐가 다르다. 값 하나면 자료, 구조체 · 객체째면 스탬프. 「보기에서 기호로」 답하라고 하면 이름이 아니라 기호(ㅁ)를 적는다.
UML 다이어그램 14개는 둘로 나뉜다. 구조(정적) 다이어그램은 시스템에 무엇이 있고 어떻게 연결됐나를 그리고, 행위(동적) 다이어그램은 시간에 따라 무엇이 일어나나를 그린다. 클래스 · 객체 · 컴포넌트 · 배치 · 복합 구조 · 패키지가 앞이고, 유스케이스 · 시퀀스 · 커뮤니케이션 · 상태 · 활동 · 타이밍 · 상호작용 개요가 뒤다.
패키지 다이어그램은 「모델 요소들을 관련된 것끼리 그룹화」가 정의 그대로다(2023년 3회 6번 · 2025년 3회 1번). 배치 다이어그램은 하드웨어 노드에 무엇이 놓이나, 컴포넌트 다이어그램은 실행 단위의 의존, 시퀀스는 객체 사이 메시지를 시간순으로, 활동은 업무 흐름을 순서도처럼, 상태는 한 객체의 상태 변화를 그린다.
관계는 선의 모양이 곧 이름이다. 실선은 연관, 실선 끝의 빈 삼각형은 일반화(상속), 점선 화살표는 의존(잠깐 쓰는 관계), 점선 끝의 빈 삼각형은 실체화(인터페이스 구현), 빈 마름모는 집합(부분이 따로 살 수 있음), 채운 마름모는 합성(부분이 전체와 같이 없어짐). 2024년 3회 15번이 앞의 셋을, 훈련 4번이 뒤의 셋을 묻는다.
유스케이스 다이어그램에는 관계가 넷 더 있다. 액터와 유스케이스를 잇는 연관, 한 유스케이스가 다른 것을 반드시 포함하는 포함(include, 점선 화살표가 포함되는 쪽으로), 조건이 맞을 때만 덧붙는 확장(extend, 점선 화살표가 확장 대상 쪽으로), 액터나 유스케이스 사이의 일반화. 「로그인을 반드시 거친다」면 포함, 「쿠폰이 있을 때만」이면 확장이다.
모듈화를 설명하는 낱말도 짝으로 나온다. 분할 정복은 큰 문제를 작은 모듈로 나눠 푸는 것, 정보 은닉은 모듈 안의 세부를 밖에서 못 보게 감추는 것, 추상화는 세부를 빼고 본질만 드러내는 것이다. 정보 은닉이 잘 되면 결합도가 내려간다 — 밖에서 내부를 못 건드리니 내용 결합도가 생길 수 없다.
모듈의 크기는 팬인 · 팬아웃으로 본다. 팬인이 높은 모듈은 여러 곳이 재사용하는 공용 부품이라 좋고, 팬아웃이 높은 모듈은 너무 많은 것을 부려 복잡하므로 줄인다. 훈련 5번이 이 둘의 정의와 방향을 묻는다.
왜 이걸 하나 — 설명에서 기준 낱말을 찾아 사다리의 자리로 옮기는 연습이다.
답을 적기 전에 설명에서 기준 낱말(플래그 · 순서 · 데이터 · 전역 · 내부)을 동그라미 치고, 사다리의 몇째 칸인지 먼저 정한 뒤 이름을 적는다. 기호를 요구하면 기호를 적는다.
유스케이스·클래스 등 모델 요소들을 관련된 것끼리 그룹화하여 표현하는 UML 다이어그램은?
답 — 패키지 다이어그램(Package Diagram). 관련 있는 요소들을 폴더처럼 묶어 "무엇이 무엇에 기대는가"를 큰 단위로 보여 주는 구조 다이어그램이다.
원리 — 클래스가 수백 개가 되면 클래스 다이어그램 한 장으로는 전체 그림이 안 보인다. 그래서 UML 은 관련된 요소(클래스 · 유스케이스 · 다른 패키지)를 "패키지"라는 폴더 모양 상자에 넣고, 패키지끼리의 의존 관계(점선 화살표)만 그리는 다이어그램을 따로 둔다. 자바의 패키지, 폴더 구조와 같은 발상이다 — 낱개를 다 그리지 않고 묶음 사이의 관계만 본다. 문제의 "모델 요소들을 관련된 것끼리 그룹화"가 곧 패키지의 정의다.
따라가기
헷갈리는 자리 — 컴포넌트 다이어그램을 적는 것. 컴포넌트는 "실행 단위(jar · dll)와 인터페이스"를 그리고, 패키지는 "논리적 묶음"을 그린다. 배치(Deployment)는 하드웨어 노드에 무엇이 올라가는가다. 같은 문제가 2025-3-01 에 다시 나왔다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 응집도를 높은 것부터 순서대로 나열하시오: ㄱ. 기능적 ㄴ. 교환(통신)적 ㄷ. 우연적 ㄹ. 시간적
답 — ㄱ → ㄴ → ㄹ → ㄷ. 기능적 > 교환(통신)적 > 시간적 > 우연적 순서다.
원리 — 응집도는 "한 모듈 안의 것들이 얼마나 한 가지 일을 위해 모였나"다. 높을수록 좋다. 7단계를 높은 쪽부터 외운다 — 기능적(한 가지 일) > 순차적(앞 출력이 뒤 입력) > 교환적(같은 데이터를 쓴다) > 절차적(순서대로 실행된다) > 시간적(같은 때 실행된다) > 논리적(비슷해 보여 모았다) > 우연적(아무 관계 없다). 위로 갈수록 "왜 같이 있는가"의 이유가 강하다. 기능적은 "이 일을 하려고", 교환적은 "같은 자료를 다루니까", 시간적은 "같은 시점에 도니까(초기화 · 종료)", 우연적은 "그냥"이다.
따라가기
헷갈리는 자리 — 순차적과 교환적의 자리를 바꾸는 것. 순차적(출력 → 입력 연결)이 교환적(같은 데이터만 공유)보다 높다. 그리고 문제가 "높은 것부터"인지 "낮은 것부터"인지 반드시 확인한다 — 결합도 문제는 낮은 것부터 묻는 경우가 많아 방향을 헷갈리기 쉽다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
모듈 내 한 활동의 출력이 다음 활동의 입력 데이터로 사용되는 응집도는?
답 — 순차적 응집도(Sequential Cohesion). 앞 활동의 출력이 뒤 활동의 입력이 되는 파이프라인 모양이다.
원리 — 응집도 7단계 중 기능적 다음으로 높은 것이 순차적이다. 모듈 안의 활동들이 "A 의 결과를 B 가 받고, B 의 결과를 C 가 받는" 식으로 자료가 흘러가면 순차적이다. 예를 들어 "파일을 읽어 → 파싱해 → 검증한다"가 한 모듈에 있으면 읽은 내용이 파싱의 입력, 파싱 결과가 검증의 입력이다. 활동들이 자료로 단단히 이어져 있어 한 가지 일에 가깝다. 이보다 느슨한 교환적 응집도는 같은 자료를 "쓰기만" 하고 출력 → 입력 연결은 없다.
따라가기
헷갈리는 자리 — 절차적 응집도를 적는 것. 절차적은 "순서대로 실행되지만 자료를 주고받지는 않는다"이고, 순차적은 "자료가 앞에서 뒤로 넘어간다"다. "출력 · 입력"이라는 말이 나오면 순차적이다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다른 모듈 내부의 논리적 흐름을 제어하기 위해 플래그·스위치 등 제어 요소를 전달하는 결합도는?
답 — 제어 결합도(Control Coupling). 플래그 · 스위치 값을 넘겨 상대 모듈의 실행 흐름을 조종하는 결합이다.
원리 — 결합도는 "모듈끼리 얼마나 얽혀 있나"이고 낮을수록 좋다. 6단계를 낮은 쪽부터 — 자료(값만 넘김) < 스탬프(자료구조째 넘김) < 제어(깃발로 조종) < 외부(외부 형식 공유) < 공통(전역 변수 공유) < 내용(남의 속을 직접 만짐). 제어 결합은 호출하는 쪽이 "이 값이면 이렇게 동작해라"라는 제어 요소를 넘기는 것이다 — 예: print(data, mode) 에서 mode 가 1이면 화면, 2면 파일. 호출자가 상대의 내부 논리를 알아야 하므로 자료 결합보다 얽혀 있다.
따라가기
헷갈리는 자리 — 자료 결합도로 보는 것. 자료 결합은 넘긴 값을 상대가 "계산에" 쓰고, 제어 결합은 상대가 그 값으로 "분기"한다. 넘긴 것이 flag · mode · type 이면 제어다. 고치는 법은 분기별로 함수를 나누어 호출자가 필요한 것을 직접 부르게 하는 것이다 — 그러면 자료 결합으로 내려간다. 시험에서는 "플래그 · 스위치 · 제어 요소"라는 낱말이 곧 제어 결합의 신호다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
UML 관계 매칭: ① 클래스가 다른 클래스를 사용하는 지속적 연결(실선) ② 상속 관계(빈 삼각형) ③ 일시적으로 사용하는 관계(점선 화살표)
답 — ① 연관(Association) ② 일반화(Generalization) ③ 의존(Dependency). 실선 · 빈 삼각형 · 점선 화살표가 각각의 표지다.
원리 — UML 클래스 사이 관계는 선 모양으로 구분한다. 연관은 실선 — 한 클래스가 다른 클래스를 필드로 갖고 오래 쓴다(학생 – 강의). 일반화는 실선 + 빈 삼각형 — 상속, 자식이 부모를 가리킨다(개 → 동물). 의존은 점선 화살표 — 메서드 인자나 지역 변수로 잠깐 쓴다(주문이 계산기를 한 번 부른다). 여기에 집합(빈 마름모) · 합성(채운 마름모) · 실체화(점선 + 빈 삼각형)까지 합쳐 6종이다. "얼마나 오래, 얼마나 강하게 붙어 있나"가 선의 진하기와 모양으로 드러난다.
따라가기
헷갈리는 자리 — 의존과 연관을 바꾸는 것. 필드로 갖고 있으면 연관(실선), 인자로 받아 잠깐 쓰면 의존(점선). 그리고 실체화도 점선인데 끝이 빈 삼각형이면 실체화(인터페이스 구현), 열린 화살촉이면 의존이다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 설명에 해당하는 결합도를 ①부터 ③까지 순서대로 쓰시오.
① 다른 모듈 내부의 변수나 기능을 직접 사용한다.
② 모듈 사이에서 배열, 객체, 구조체 같은 자료구조 전체를 전달한다.
③ 여러 모듈이 모듈 밖의 전역 변수를 함께 참조하거나 갱신한다.
답 — ① 내용 결합도 ② 스탬프 결합도 ③ 공통 결합도. "남의 속 · 자료구조째 · 전역 변수"가 각각의 열쇠말이다.
원리 — 결합도 6단계는 "무엇을 통해 얽혔나"로 구분한다. 자료 결합은 필요한 값만 인자로 넘긴다(가장 좋다). 스탬프 결합은 배열 · 구조체 · 객체를 통째로 넘기고 받는 쪽은 일부만 쓴다 — 구조가 바뀌면 안 쓰는 쪽도 영향받는다. 제어 결합은 플래그로 조종한다. 외부 결합은 외부 파일 형식 · 프로토콜을 서로 안다. 공통 결합은 여러 모듈이 같은 전역 변수를 읽고 쓴다 — 누가 바꿨는지 추적이 안 된다. 내용 결합은 다른 모듈의 내부 변수 · 코드를 직접 건드린다(가장 나쁘다) — 상대를 고칠 수 없게 만든다.
따라가기
헷갈리는 자리 — 공통과 내용을 바꾸는 것. 공통은 "밖에 있는 전역"을 같이 쓰는 것이고, 내용은 "상대 안에 있는 것"을 직접 쓰는 것이다. 스탬프는 자료를 넘기긴 하는데 "덩어리째"라는 점이 자료 결합과 다르다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
모델 요소들을 관련된 것끼리 그룹화하여 표현하는 UML 다이어그램은?
답 — 패키지 다이어그램(Package Diagram). 2023-3-06 과 같은 문제다 — 관련 요소를 묶고 묶음 사이 의존을 그린다.
원리 — UML 구조 다이어그램에는 클래스 · 객체 · 컴포넌트 · 배치 · 패키지 · 복합 구조 다이어그램이 있고, 그중 "요소를 그룹화"하는 것이 패키지다. 패키지는 폴더 모양 기호로 그리고, 안에 클래스 · 유스케이스 · 하위 패키지를 담는다. 패키지 사이에는 점선 화살표로 의존(import · access)을 표시한다. 큰 시스템을 층(화면 · 서비스 · 저장)이나 기능(주문 · 결제 · 회원)으로 나눠 "어느 묶음이 어느 묶음을 쓰는가"를 한눈에 보는 용도다.
따라가기
헷갈리는 자리 — 클래스 다이어그램을 적는 것. 클래스 다이어그램은 낱개 클래스와 그 관계, 패키지 다이어그램은 묶음과 묶음의 관계다. 같은 문제가 두 번 나왔으니 "그룹화 = 패키지"로 굳혀 둔다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
응집도 3종: ① 다수의 관련 기능이 순서에 따라 차례대로 수행됨 ② 동일한 입출력 데이터를 사용하는 기능들이 모임 ③ 단일 기능만 수행
답 — ① 절차적 응집도 ② 교환(통신)적 응집도 ③ 기능적 응집도. "순서대로 · 같은 자료 · 단일 기능"이 열쇠말이다.
원리 — 응집도 7단계는 모듈 안의 것들이 "왜 같이 있는가"로 구분한다. 우연적(이유 없음) < 논리적(비슷해서, 플래그로 골라 씀) < 시간적(같은 시점) < 절차적(순서대로 실행) < 교환적(같은 입출력 자료) < 순차적(앞 출력 = 뒤 입력) < 기능적(한 가지 일). 절차적은 "A 다음 B 를 한다"는 순서만 있고 자료 연결은 없다. 교환적은 같은 자료를 여럿이 다룬다 — 예: 같은 고객 레코드로 이름도 찍고 주소도 찍는다. 기능적은 모듈 전체가 오직 한 가지 목적(제곱근 계산)만 한다 — 가장 좋다.
따라가기
헷갈리는 자리 — ①을 순차적으로 적는 것. 순차적은 "출력이 다음 입력"이라는 자료 연결이 있어야 한다. 순서만 있으면 절차적이다. 그리고 교환적은 "통신적(Communicational)"이라고도 부르니 둘 다 정답 처리된다. ②를 시간적으로 적는 실수도 있다 — 시간적은 "같은 때"이지 "같은 자료"가 아니다. 자료라는 말이 보이면 교환적 아니면 순차적 둘 중 하나다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 설명에 해당하는 결합도를 보기에서 골라 기호로 쓰시오.
한 모듈이 다른 모듈의 내부 데이터나 내부 제어 흐름을 직접 참조하거나 수정한다. 예를 들어 다른 모듈의 내부 코드 위치로 분기하거나, 내부에 선언된 자료를 직접 사용하는 경우이다.
ㄱ. 자료 결합도
ㄴ. 스탬프 결합도
ㄷ. 제어 결합도
ㄹ. 외부 결합도
ㅁ. 내용 결합도
답 — ㅁ 내용 결합도. 다른 모듈의 내부 데이터 · 내부 코드를 직접 참조하거나 수정하는 가장 나쁜 결합이다.
원리 — 결합도 6단계 중 최악이 내용 결합(Content Coupling)이다. 정상적인 모듈은 인터페이스(인자 · 반환값)로만 대화하는데, 내용 결합은 그 벽을 무시하고 상대 모듈 안의 변수를 직접 읽고 쓰거나, 상대 코드의 중간 위치로 goto 하듯 분기한다. 그러면 상대 모듈을 조금만 고쳐도(변수 이름 · 코드 순서) 이쪽이 깨진다 — 상대를 고칠 수 없게 만드는 결합이다. 자바로 치면 남의 private 필드를 리플렉션으로 바꾸는 것이 여기 해당한다.
따라가기
헷갈리는 자리 — ㄹ 외부 결합도를 고르는 것. 외부는 파일 형식 · 프로토콜 · 장치 같은 바깥 것을 공유하는 것이고, 내용은 모듈 안을 직접 만진다. 보기에 없는 공통 결합도(전역 변수 공유)와도 구분한다 — 공통은 "모듈 밖 전역", 내용은 "모듈 안"이다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
왜 이걸 하나 — 이 장은 이웃한 단계끼리 바꿔 적어서 깎인다.
| 자리 | 새는 꼴 | 적는 법 | 기출 |
|---|---|---|---|
| 절차적 · 순차적 | 둘을 바꾼다 | 데이터가 앞에서 뒤로 넘어가면 순차적, 순서만 있으면 절차적 | 2024-2회 6번 · 2026-1회 20번 |
| 자료 · 스탬프 | 구조체를 넘기는데 자료라 적는다 | 값 하나면 자료, 배열 · 구조체 · 객체째면 스탬프 | 2025-1회 12번 |
| 공통 · 내용 | 전역 변수 공유를 내용이라 적는다 | 전역 변수는 공통, 남의 내부 코드 · 변수를 직접 건드리면 내용 | 2025-1회 12번 · 2026-2회 2번 |
| 기호 · 이름 | 「기호로 쓰시오」에 이름을 적는다 | 보기 기호(ㅁ)를 적는다. 이름을 덧붙여도 기호가 먼저 | 2026-2회 2번 |
| 순서 방향 | 「높은 것부터」에 낮은 것부터 적는다 | 응집도 높은 것 = 기능적. 방향을 문제에서 확인 | 2024-1회 3번 |
| 교환적 표기 | 「통신적」만 적거나 「교환적」만 적는다 | 둘 다 같은 것 — 교환(통신)적 응집도로 병기하면 안전 | 2026-1회 20번 |
| UML 관계 | 의존과 연관을 바꾼다 | 점선이면 의존(일시적), 실선이면 연관(지속적) | 2024-3회 15번 |
세 칸짜리 매칭은 소문항마다 점수가 있다. 한 칸이 헷갈리면 사다리에서 이웃한 두 칸 중 기준 낱말에 더 가까운 쪽을 적고 비우지 않는다.
왜 이걸 하나 — 기출에 아직 안 나온 칸이다. 결합도 순서, 응집도 아래쪽 셋, UML 분류, 관계 나머지 셋, 팬인/팬아웃.
5문항 전부 정의로 대조한 용어라 계산이 없다. 응집도 · 결합도 사다리의 13칸 중 기출이 안 건드린 칸(우연적 · 논리적 · 시간적, 외부)이 여기 있다.
결합도 6종을 결합도가 낮은 것부터 높은 것 순서로 나열하시오.
공통, 내용, 자료, 제어, 스탬프, 외부
답 — 자료 → 스탬프 → 제어 → 외부 → 공통 → 내용. 낮은(좋은) 것부터 높은(나쁜) 순서다.
원리 — 결합도는 "무엇으로 얽혔나"가 단순할수록 낮다. 자료는 값만, 스탬프는 자료구조째, 제어는 동작 지시(플래그), 외부는 바깥 형식 · 장치, 공통은 전역 변수, 내용은 상대 내부다. 뒤로 갈수록 "상대가 바뀌면 나도 바뀌어야 하는" 정도가 커진다. 첫 글자로 "자 스 제 외 공 내"라고 외우면 순서가 굳는다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(결합도 · 응집도 단계표 · UML 2.x)와 대조했다.
다음 설명에 해당하는 응집도를 각각 쓰시오.
① 비슷해 보이는 기능들을 하나로 모아 놓고 매개변수(플래그)로 골라 실행한다
② 특정 시점에 함께 실행돼야 하는 기능들(초기화 · 종료 처리)을 모아 놓았다
③ 순서대로 실행되지만 서로 데이터를 주고받지는 않는 기능들을 모아 놓았다
답 — ① 논리적 응집도 ② 시간적 응집도 ③ 절차적 응집도. 응집도 7단계 중 아래쪽 세 개다.
원리 — 논리적은 "비슷해 보이는 것을 모아 플래그로 골라 실행"이다 — 입출력 함수 하나에 mode 로 화면 · 파일 · 프린터를 가르는 식. 시간적은 "같은 시점에 실행돼야 해서" 모았다 — 초기화 · 종료 처리 묶음. 절차적은 "순서대로 실행되지만 자료는 안 주고받는" 묶음이다. 셋 다 "한 가지 일"이라는 이유가 아니라 겉모양 · 시점 · 순서라는 약한 이유로 모인 것이다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(결합도 · 응집도 단계표 · UML 2.x)와 대조했다.
다음 UML 다이어그램을 구조(정적) 다이어그램과 행위(동적) 다이어그램으로 나누시오.
클래스, 시퀀스, 유스케이스, 컴포넌트, 활동, 배치, 상태, 패키지
답 — 구조: 클래스 · 컴포넌트 · 배치 · 패키지 / 행위: 시퀀스 · 유스케이스 · 활동 · 상태.
원리 — UML 다이어그램은 "시스템이 무엇으로 이루어졌나"를 그리는 구조(정적) 다이어그램과 "시간에 따라 어떻게 움직이나"를 그리는 행위(동적) 다이어그램으로 나뉜다. 구조 쪽은 클래스 · 객체 · 컴포넌트 · 배치 · 패키지 · 복합 구조이고, 행위 쪽은 유스케이스 · 활동 · 상태 머신 · 상호작용(시퀀스 · 통신 · 타이밍 · 상호작용 개요)이다. 판정은 "시간 축이 있는가"다 — 시퀀스 · 활동 · 상태는 순서와 변화가 있으니 행위, 클래스 · 배치 · 패키지는 스냅샷이니 구조다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(결합도 · 응집도 단계표 · UML 2.x)와 대조했다.
UML 클래스 관계 중 다음 설명에 해당하는 것을 각각 쓰시오.
① 전체와 부분의 관계이나 부분이 전체 없이도 존재할 수 있다(빈 마름모)
② 전체와 부분의 관계이고 부분은 전체와 생명주기를 같이한다(채운 마름모)
③ 인터페이스와 그것을 구현한 클래스의 관계(점선 + 빈 삼각형)
답 — ① 집합(Aggregation) ② 합성(Composition) ③ 실체화(Realization). 마름모의 속과 삼각형 · 점선이 표지다.
원리 — 집합과 합성은 둘 다 "전체 – 부분" 관계인데 생명주기가 다르다. 집합(빈 마름모)은 부분이 전체 없이도 산다 — 동아리와 학생, 동아리가 없어져도 학생은 남는다. 합성(채운 마름모)은 부분이 전체와 함께 죽는다 — 집과 방, 집을 헐면 방도 없다. 실체화(점선 + 빈 삼각형)는 인터페이스와 그것을 구현한 클래스 사이다 — 일반화(실선 + 빈 삼각형)와 삼각형은 같고 선이 점선이라는 것만 다르다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(결합도 · 응집도 단계표 · UML 2.x)와 대조했다.
모듈 설계에서 다음 설명에 해당하는 용어를 각각 쓰시오.
① 어떤 모듈을 호출하는 상위 모듈의 수
② 어떤 모듈이 호출하는 하위 모듈의 수
③ 좋은 설계는 이 둘 중 무엇을 높이고 무엇을 줄이는가
답 — ① 팬인(Fan-in, 공유도) ② 팬아웃(Fan-out, 제어도) ③ 팬인은 높이고 팬아웃은 줄인다.
원리 — 팬인은 "나를 부르는 상위 모듈의 수"다. 팬인이 높다는 것은 여러 곳에서 재사용되는 공용 모듈이라는 뜻이라 좋다(공유도). 팬아웃은 "내가 부르는 하위 모듈의 수"다. 팬아웃이 크면 한 모듈이 너무 많은 것을 제어해 복잡하고 오류가 몰린다(제어도) — 보통 7개 이하를 권한다. 그래서 좋은 설계는 팬인은 높이고(재사용) 팬아웃은 줄인다(단순한 제어). 화살표 그림에서 위에서 들어오는 선이 팬인, 아래로 나가는 선이 팬아웃이다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(결합도 · 응집도 단계표 · UML 2.x)와 대조했다.
왜 이걸 하나 — 아래를 안 보고 적을 수 있어야 이 장이 끝난다.