1 UML 개요 & 다이어그램 분류
거의 매 회차 "다음 다이어그램이 구조/행위 중 무엇인가", "○○ 다이어그램의 종류를 쓰시오" 형태로 출제됩니다. 분류부터 확실히.
UML(Unified Modeling Language) : 객체지향 소프트웨어 개발 과정의 산출물을 명세화·시각화·문서화할 때 사용하는 표준 모델링 언어. 구성요소는 사물 Things관계 Relationships다이어그램 Diagrams.
| 구분 | 종류 | 성격 |
|---|---|---|
| 구조 다이어그램 (정적/Static) |
클래스 · 객체 · 컴포넌트 · 배치(Deployment) · 복합체 구조 · 패키지 | 시스템의 구조·형태를 표현. 시간에 따라 변하지 않는 정적 요소. |
| 행위 다이어그램 (동적/Dynamic) |
유스케이스 · 시퀀스 · 커뮤니케이션 · 상태 · 활동(Activity) · 상호작용 개요 · 타이밍 | 시스템의 동작·흐름을 표현. 시간·이벤트에 따른 변화. |
함정: 유스케이스·시퀀스는 "행위(동적)"다. 클래스만 정적, 나머지 상호작용류는 대부분 동적이라고 기억.
2 UML 관계(Relationship) 6종 ★★★
실기 단골 최다 출제. "기호를 보고 관계명을 쓰시오", "설명을 보고 관계를 고르시오"가 정석. 마름모의 색(빈/채움)과 화살표(삼각형/열린), 선(실선/점선)만 정확히 구분하면 다 맞힙니다.
| 관계 | 기호 | 의미 / 예시 |
|---|---|---|
| 연관 Association | 실선 (양방향/단방향 화살표) | 둘 이상이 서로 관련. 다중도 표기. 예: 학생 — 수강 — 과목 |
| 집합 Aggregation | 속 빈 마름모 ◇ | 전체-부분, 단 부분이 독립적. 예: 컴퓨터 ◇— 모니터 (모니터 떼도 됨) |
| 합성 Composition | 채운 마름모 ◆ | 전체-부분, 부분이 전체에 완전 종속(생명주기 함께). 예: 건물 ◆— 방 |
| 일반화 Generalization | 실선 + 빈 삼각형 △ | 상속(is-a). 하위→상위. 예: 정사각형 —▷ 도형 |
| 의존 Dependency | 점선 + 열린 화살표 | 짧은 시간만 이용(파라미터 등). 예: 메서드 인자로만 잠깐 사용 |
| 실체화 Realization | 점선 + 빈 삼각형 △ | 인터페이스와 구현. 예: Bird ┄▷ «Flyable» |
다중도(Multiplicity) 표기
| 표기 | 의미 | 표기 | 의미 |
|---|---|---|---|
1 | 정확히 1개 | 0..1 | 0개 또는 1개 |
* / 0..* | 0개 이상 | 1..* | 1개 이상 |
n..m | n개 이상 m개 이하 | n | 정확히 n개 |
3 클래스 다이어그램 (Class Diagram)
유일한 대표 "구조(정적)" 다이어그램. 접근제어자 기호와 3칸 구조가 포인트.
| 기호 | 접근제어자 | 의미 |
|---|---|---|
+ | public | 모든 클래스에서 접근 가능 |
- | private | 해당 클래스 내부에서만 |
# | protected | 같은 패키지 + 상속받은 하위 클래스 |
~ | package | 같은 패키지 내에서만 |
+공개, -비밀(private), #울타리 안 가족(protected), ~같은 동네(package).4 유스케이스 다이어그램 ★★★
"사용자 관점의 기능적 요구사항"을 표현. 구성요소 나열 + include/extend 구분이 핵심 출제.
구성요소
- 액터(Actor) — 시스템과 상호작용하는 사람/외부시스템(막대인간). 주액터(이득 얻는 사용자) / 부액터(외부시스템·조직).
- 유스케이스(Use Case) — 사용자 관점의 기능/서비스(타원).
- 시스템 경계(System Boundary) — 시스템 범위(사각형).
- 관계 — 연관 / 포함(include) / 확장(extend) / 일반화.
| 포함 «include» | 확장 «extend» | |
|---|---|---|
| 필수성 | 항상 실행(필수) | 조건부(선택적) |
| 화살표 방향 | 기본UC → 포함되는 UC | 확장UC → 기본(대상) UC |
| 예 | 주문 → (항상) 로그인 | 쿠폰적용 → (선택) 주문 |
«include» / «extend» 스테레오타입 라벨과 방향으로 구분.
5 시퀀스 다이어그램 ★★
객체 간 메시지 교환을 시간 순서로 표현하는 대표 "동적" 다이어그램. 구성요소 5개 암기.
| 구성요소 | 설명 |
|---|---|
| 액터 / 객체(Object) | 상호작용 주체. 상단 사각형. |
| 생명선(Lifeline) | 객체에서 아래로 뻗는 점선. 시간의 흐름(위→아래). |
| 활성 상자(Activation) | 객체가 활성화되어 동작 중인 구간(얇은 직사각형). |
| 메시지(Message) | 객체 간 화살표. 실선=동기 호출, 점선=반환(return). |
6 상태 · 활동 · 기타 행위 다이어그램
상태 다이어그램 (State / Statechart)
하나의 객체가 이벤트에 따라 상태(state)가 어떻게 변하는지(생명주기)를 표현.
- 시작(●) → 상태(둥근 사각형) → 전이(Transition, 이벤트 라벨 화살표) → 종료(◉)
- 예: 주문 →
결제대기 →[결제완료]→ 배송중 →[수령]→ 완료
활동 다이어그램 (Activity)
업무/처리의 흐름(제어 흐름)을 순서대로 표현. 순서도(flowchart)와 유사.
- 시작점 · 액션(둥근 사각형) · 분기 Decision(마름모) · 병합(Merge) · 동기화 Fork/Join(굵은 바) · 종료점
- 스윔레인(Swim lane) — 활동의 수행 주체(책임)를 구획으로 나눠 표현.
| 다이어그램 | 한 줄 정의 | 분류 |
|---|---|---|
| 커뮤니케이션 | 객체 간 관계와 메시지 순번 중심 상호작용 | 행위(동적) |
| 타이밍(Timing) | 시간 축에 따른 객체 상태 변화 | 행위(동적) |
| 상호작용 개요 | 여러 상호작용(시퀀스 등)의 흐름을 개괄 | 행위(동적) |
| 컴포넌트 | 컴포넌트 구성·의존 관계 | 구조(정적) |
| 배치(Deployment) | 물리적 노드(하드웨어)에 SW 배치 | 구조(정적) |
| 패키지 | 요소들을 그룹(패키지) 단위로 묶어 표현 | 구조(정적) |
7 ER 다이어그램 (개체-관계, ERD)
데이터 모델링의 대표. Peter Chen 표기법의 기호 ↔ 의미 매칭이 핵심.
| 기호 | 구성요소 | 비고 |
|---|---|---|
| 사각형 □ | 개체(Entity) | 이중 사각형 = 약한 개체 |
| 마름모 ◇ | 관계(Relationship) | 개체 간 연관 |
| 타원 ○ | 속성(Attribute) | 밑줄=기본키, 이중타원=다중값 속성 |
| 선 — | 연결(Link) | 개체·관계·속성 연결, 카디널리티(1:1, 1:N, N:M) 표기 |
8 자료 흐름도 (DFD, Data Flow Diagram)
구조적 분석의 대표 도구. 4대 구성요소와 각 기호를 정확히.
| 구성요소 | 기호 | 의미 |
|---|---|---|
| 프로세스(Process) | 원 ○ (버블) | 자료를 변환/처리하는 과정 |
| 자료 흐름(Data Flow) | 화살표 → | 자료의 이동 방향 |
| 자료 저장소(Data Store) | 평행 이중선 = | 자료가 저장되는 곳(파일·DB) |
| 단말(Terminator) | 사각형 □ | 외부 엔티티(자료 발생/도착지) |
9 헷갈림 총정리 (직전 5분 회독)
• ERD → 관계(Relationship)
• 활동 다이어그램 → 분기(Decision)
• DFD → 마름모 없음
• 점선 + 빈 삼각형 → 실체화(인터페이스 구현)
• 유스케이스 include / extend
• 실체화(빈 삼각형)
• 시퀀스 반환(return) 메시지
• ERD → 속성(타원)
• 상태 다이어그램 시작/종료 → ● / ◉
10 자가점검 문제 (클릭해서 정답 확인)
Q1. UML 다이어그램 중 '정적(구조)' 다이어그램을 3개 이상 쓰시오.
클래스, 객체, 컴포넌트, 배치, 복합체 구조, 패키지 (중 3개)
Q2. 속 채운 마름모(◆)로 표현되며, 부분이 전체에 완전히 종속되어 생명주기를 함께하는 관계는?
합성(Composition) 관계. (빈 마름모 ◇ = 집합/Aggregation)
Q3. 점선 + 속 빈 삼각형 화살표(△)로 표현하는 관계는? 실선일 때와의 차이는?
점선△ = 실체화(Realization)(인터페이스-구현). 실선△ = 일반화(Generalization)(상속).
Q4. 유스케이스에서 '반드시 실행되는' 포함 관계와, '조건부로 실행되는' 확장 관계의 스테레오타입을 각각 쓰시오.
포함 = «include» (필수), 확장 = «extend» (선택/조건부).
Q5. 시퀀스 다이어그램의 구성요소를 쓰시오. 반환 메시지는 어떤 선인가?
액터/객체, 생명선(Lifeline), 활성상자(Activation), 메시지. 반환 메시지 = 점선 화살표.
Q6. ERD에서 사각형·마름모·타원(밑줄)은 각각 무엇인가?
사각형 = 개체(Entity), 마름모 = 관계(Relationship), 밑줄 친 타원 = 기본키 속성.
Q7. DFD의 4대 구성요소와 기호를 쓰시오.
프로세스(○), 자료 흐름(→), 자료 저장소(= 평행선), 단말/외부엔티티(□).
Q8. 클래스 다이어그램의 접근제어자 + - # ~ 를 각각 해석하시오.
+ public, - private, # protected, ~ package.