Detailed Design
이번 포스트는 Larmen Chapter의 Object Design, UML Interaction Diagram, UML Class Diagram에 대해 다룬다.
Object Design
Object Design
Static Object
- 클래스, 패키지, 속성, 메서드 시그니처 등 구조적 정의를 표현
- e.g. UML Class Diagram
- 정적 모델 : 동적 설계로부터 도출되며, 실제 코드 구조와 맞닿아 있음.
Dynamic Object
- 객체가 동작 중에 어떻게 상호작용하는지, 로직과 행동 흐름을 표현
- e.g. UML Sequence Diagram, Communication Diagram
-
동적 모델 : 복잡하고 중요한 설계 결정이 담겨 있고, 보통 먼저 설계됨.
- 애자일 모델링: 동적 모델링(인터랙션 다이어그램)을 간단히 한 후 → 관련된 클래스 다이어그램 작성
UML 은 단순한 그림이 아닌 설계 사고의 표현 수단이며, 진짜 중요한 것은 객체 간 역할과 책임을 정확히 나누는 객체 설계 능력이다.
좋은 Object 설계 위한 지식
- 책임 분배 원칙 (Principles of Responsibility Assignment)
- 디자인 패턴 (Design Patterns)
UML Interaction Diagram
- Dynamic Object modeling (객체 간 메시지 흐름 모델링)
Sequence Diagram & Communication Diagram
- 기능은 동일, 초점이 다르다.
공통점
- 둘 다 객체 간 메시지 교환(Interaction)을 모델링함.
- 둘 다 동적 모델에 속함.
차이점
- Sequence Diagram
- 시간 순서를 시각적으로 표현
- 위에서 아래로 시간 흐름 순서대로 메시지 표시
- focus : 언제 메시지가 발생했는가? / 시점 중심의 흐름
- Communication Diagram
- 객체 간의 관계 중심
- 메시지 순서를 숫자(소수점 번호)로 표현
- focus : 누가 누구에게 메시지를 보내는가? / 구조 중심의 메시지 흐름
Communication Diagram

주요 표현 기법
Link
-
Link : 객체들 사이의 연결 경로
-
두 객체 사이에 메시지를 주고받기 위한 길 or 통로
-
객체 간에 접근 가능성, 가시성이 있음을 나타냄.
-
Link는 실제 실행시의 association, dependency, aggregation 의 인스턴스
상속은 Link가 될 수 없다.
-
Message
- Message : 한 객체가 다른 객체에 작업을 요청하는 호출
- UML sequence diagram에서는
->을 통해 나타냄 - 순서 번호가 붙음.
- UML sequence diagram에서는
Creation
- Creation : 특정 객체를 새로 생성하라는 메시지
- 다음과 같이 표현 : create(), «create», {new}
Conditional / Mutually Exclusive Message
- Conditional / Mutually Exclusive Message : 메시지가 특정 조건에서만 실행되거나, 여러 번 반복 실행됨을 나타냄.
- 표현 방식 :
[조건]메서드 이름( ) -> : 조건이 참일 때만 호출 /*[i = 1, 2, ...,n]메서드 이름( ) : 반복
- 표현 방식 :
Static Method Call
- Static Method Call : 클래스 객체에 직접 보내는 메시지 호출
- 정적 메서드 호출은 클래스 자체를 대상 객체로 표현
- 객체가 아닌 클래스에 직접 메시지를 보낸다는 의미, 객체 인스턴스 필요가 없다.
- 표현 방식 :
ClassName::method()형식이나<<static>><<metaclass>>로 표현
Polymorphic Method Call
- Polymorphic Method Call : 한 타입에 메시지를 보내고, 실제 동작은 그걸 상속한 다양한 객체들 중에서 결정됨
- 하나의 링크를 그려놓고, 해당 메시지가 어떤 서브타입의 객체로 분기될 수 있음을 암시하거나 주석 처리로 설명
Asynchronous and Synchronous Call
- 동기 / 비동기 메시지
- 실선이 채워진 화살표 : Synchronous Call
- 스틱(빈) 화살표 : Asynchronous Call
UML Class Diagram

- UML Class Diagram은 두 가지 관점에서 사용 가능
- 개념적 관점 (Conceptual perspective) : 현실 세계의 개념을 모델링 (Domain Model)
- 설계 관점 (Design perspective) : 실제 구현을 위한 소프트웨어 구조를 모델링 (Design Class Diagram)
- Domain Model
- 현실 세계의 개념들 간 관계를 단순화해서 표현
- 속성 위주, 메서드가 없음
- 클래스들은 현시르이 개념이나 사물을 나타냄
- 관계는 의미 위주
- Design Class Diagram (DCD)
- 실제 소프트웨어 구현에 초점을 둔 설계 다이어그램
- 클래스에 메서드가 들어감
- 관계에 navigation 방향, 역할 이름 (role), 타입 정보등이 추가됨.
- 설계된 구조를 기반으로 실제 코드 구현 가능
Keywords in UML
- UML 요소를 정확하게 분류함
- 다이어그램을 읽는 사람이 의미를 쉽게 파악할 수 있도록 도움, 특히 도구 없이 그릴 때 오해를 줄여준다.
| 표현 | 의미 |
|---|---|
«interface» |
인터페이스 |
«actor» |
액터 |
{abstract} |
추상 클래스/메서드 |
«stereotype» |
도메인/플랫폼 특화 확장 (UML 프로파일) |
Stereotypes, Profiles and Tags
1. Stereotype : 기존 UML 모델 요소를 확장하거나 구체화 하는 방법
- UML 요소 위에
<<...>>형태로 표기 (하지만 Keyword와는 다르다) - 기존 개념을 더 세밀하게 표현 하기 위한 수단
2. UML Profile : 특정 도메인을 위해 UML을 확장한 정의 집합
- 여러 stereotypes, tag, constraints들을 묶은 것
- UML을 표준을 벗어나지 않고, 특정 분야에 맞게 커스터마이징을 할 수 있게 함.

3. Tag : Stereotype에 속성을 부여하는 기능
- key-value 형태의 추가 메타정보를 표현한다.
Interaction and Class Diagram
- Interaction Diagram -> Class Diagram 유도가 가능
- Interaction Diagram을 먼저 그리면, 거기서 사용된 class, method, realtionship들이 자연스럽게 Class Diagram의 구성요소로 도출된다.
- 메시지 -> 클래스의 메서드
- 메시지를 주고받는 객체 -> 클래스의 인스턴스
- 실제 모델링 팁 : Interaction Diagram을 먼저 그리기
- 동작 흐름을 먼저 파악하는 것이 객체의 역할과 책임을 명확히 해준다.
- 클래스 다이어그램은 이를 기반으로 구조화된 형태로 정리
하지만 현실에서는 둘을 병행한다.