3 분 소요

이번 포스트는 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 설계 위한 지식

    1. 책임 분배 원칙 (Principles of Responsibility Assignment)
    2. 디자인 패턴 (Design Patterns)

UML Interaction Diagram

  • Dynamic Object modeling (객체 간 메시지 흐름 모델링)

Sequence Diagram & Communication Diagram

  • 기능은 동일, 초점이 다르다.

공통점

  1. 둘 다 객체 간 메시지 교환(Interaction)을 모델링함.
  2. 둘 다 동적 모델에 속함.

차이점

  1. Sequence Diagram
    • 시간 순서를 시각적으로 표현
    • 위에서 아래로 시간 흐름 순서대로 메시지 표시
    • focus : 언제 메시지가 발생했는가? / 시점 중심의 흐름
  2. Communication Diagram
  • 객체 간의 관계 중심
  • 메시지 순서를 숫자(소수점 번호)로 표현
  • focus : 누가 누구에게 메시지를 보내는가? / 구조 중심의 메시지 흐름

Communication Diagram

communication-diagram

주요 표현 기법

  • Link : 객체들 사이의 연결 경로

    • 두 객체 사이에 메시지를 주고받기 위한 길 or 통로

    • 객체 간에 접근 가능성, 가시성이 있음을 나타냄.

    • Link는 실제 실행시의 association, dependency, aggregation 의 인스턴스

      상속은 Link가 될 수 없다.

Message

  • Message : 한 객체가 다른 객체에 작업을 요청하는 호출
    • 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

class-diagram-example

  • UML Class Diagram은 두 가지 관점에서 사용 가능
    • 개념적 관점 (Conceptual perspective) : 현실 세계의 개념을 모델링 (Domain Model)
    • 설계 관점 (Design perspective) : 실제 구현을 위한 소프트웨어 구조를 모델링 (Design Class Diagram)
  1. Domain Model
  • 현실 세계의 개념들 간 관계를 단순화해서 표현
    • 속성 위주, 메서드가 없음
    • 클래스들은 현시르이 개념이나 사물을 나타냄
    • 관계는 의미 위주
  1. 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을 표준을 벗어나지 않고, 특정 분야에 맞게 커스터마이징을 할 수 있게 함.

uml-profile-diagram

3. Tag : Stereotype에 속성을 부여하는 기능

  • key-value 형태의 추가 메타정보를 표현한다.

Interaction and Class Diagram

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

하지만 현실에서는 둘을 병행한다.