Coffee Chat Brewing AI Knowledge

eng kor

소프트웨어 설계 3: UML

UML (Unified Modeling Language)

소프트웨어 시스템의 구조 및 동작 설계와 명세를 시각적으로 표현하는 데 사용되는 표준화된 객체지향 모델링 언어.

  • 시스템 개발 과정에서 개발자 간, 개발자와 사용자 간 의사소통이 원활하도록 도움이 될 수 있음.
  • Rumbaugh (OMT), Booch, Jacobson 등 객체지향 방법론의 장점을 통합함.
  • 구성 요소: 사물 (Things), 관계 (Relationship), 다이어그램 (Diagram)

*요구 명세 기법과 UML: 요구 명세 기법은 사용자 요구사항을 수집하고 명확히 정의하는 기법 (e.g. 유스케이스 다이어그램(UML 사용 가능)). 한편 UML은 요구사항을 포함한 시스템의 다양한 측면을 시각적으로 표현하는 데 사용되는 표준 모델링 언어.

사물과 클래스

  • 클래스: UML에 표현되는 사물의 하나. 객체가 갖는 속성과 동작을 표현. 일반적으로 직사각형으로 표현됨.
  • 인터페이스: UML에 표현되는 사물의 하나. 컴포넌트의 동작을 모아놓은 것, 가시화되는 행동. 인터페이스를 구현하는 클래스나 컴포넌트와 함께 사용됨.

관계와 관계의 종류

관계: 사물과 사물 사이의 연관성.

uml

  • 연관 (Association): 사물이 서로 관련이 있는 관계.
    • 기호: 양방향 관계는 실선으로 표시. 다중도를 선 위에 표기할 수 있음.
  • 집합 (Aggregation): 하나의 사물이 다른 사물에 포함되어 있는 관계.
    • 포함하는 쪽(whole)과 포함되는 쪽(part)은 서로 독립적.
    • 기호: 마름모를 포함하는 쪽으로 향하게 연결.
    • e.g. 프린터(part)는 컴퓨터에 연결해 사용하고, 다른 컴퓨터에 연결할 수도 있다.
  • 포함 (Composition): 집합의 특수한 관계, 포함하는 사물의 변화가 포함되는 사물에 영향을 주는 관계.
    • 양쪽은 서로 독립될 수 없고, 생명 주기를 같이함.
    • 기호: 채워진 마름모를 포함하는 쪽으로 향하게 연결.
    • e.g. 열쇠로 문을 열 수 있다. 문(whole)이 없어지면 열쇠(part)가 필요 없어진다.
  • 일반화 (Generalization): 어떤 사물이 다른 사물에 비해 일반적 혹은 구체적인 관계.
    • 일반적인 사물을 상위(부모), 구체적인 사물을 하위(자식)라고 함.
    • 기호: 빈 화살표가 일반적인 쪽을 향하게 연결.
    • e.g. 비행기와 자동차(하위)는 탈 것(상위)이다.
  • 의존 (Dependency): 필요에 의해 서로 영향을 주는 시간 동안만 연관되는 관계.
    • 한 사물(이용자)의 변화가 다른 사물(제공자)에 영향을 줌.
    • 한 클래스가 다른 클래스를 매개 변수로 사용하는 경우.
    • 기호: 영향을 받는 사물(제공자) 쪽으로 향하게 점선 화살표로 연결.
    • e.g. 등급이 높으면 할인율을 제공하고, 아니면 적용하지 않음.
  • 실체화 (Realization): 그룹화되는 관계.
    • 한 객체가 다른 객체에게 연산을 수행하도록 지정하는 의미적 관계.
    • 기호: 사물에서 기능 쪽으로 빈 점선 화살표를 연결.
    • e.g. 비행기와 새는 ‘비행’이라는 기능으로 그룹화 됨.

다이어그램 (Diagram)

사물과 관계를 도형으로 표현한 것.

  • 뷰 (View): 시스템을 어떤 관점에서 가시화한 것.
  • 분류: 구조적 다이어그램, 행위 다이어그램
    • 구조적 다이어그램은 정적 모델링, 행위 다이어그램은 동적 모델링에 사용함.

구조적 다이어그램의 종류

  • 클래스 다이어그램 (Object Diagram): 클래스와 클래스의 속성, 클래스 간 관계를 표현
  • 객체 다이어그램 (Object Diagram): 클래스에 속한 객체(사물), 즉 인스턴스 (Instance)를 특정 시점의 객체와 객체 간 관계로서 표현. 럼바우(Rumbaugh) 객체지향 분석 기법에서 객체 모델링에 활용됨.
  • 컴포넌트 다이어그램 (Component Diagram): 실제 구현 모듈인 컴포넌트 간 관계나 인터페이스를 표현. 구현 단계에서 사용.
  • 배치 다이어그램 (Deployment Diagram): 물리적 요소(결과물, 프로세스, 컴포넌트 등)의 위치를 표현. 구현 단계에서 사용.
  • 복합체 구조 다이어그램 (Composite Structure Diagram): 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현.
  • 패키지 다이어그램 (Package Diagram): 모델의 요소(유스케이스, 클래스 등)를 그룹화한 패키지 간 관계를 표현.

행위 다이어그램의 종류

  • 유스케이스 다이어그램 (Use Case Diagram): 사용자의 요구를 분석, 기능 모델링에 사용함. 사용자(Actor)와 사용 사레(Use Case)로 구성됨.
  • 순차 다이어그램 (Sequence Diagram): 시스템이나 객체 간 주고 받는 메시지를 표현.
  • 커뮤니케이션 다이어그램 (Communication Diagram): 객체 간 메시지와 객체 사이의 연관관계를 표현.
  • 상태 다이어그램 (State Diagram): 객체의 상태가 자신이 속한 클래스의 변화나 다른 객체와의 상호작용에 따라 어떻게 변하는지를 표현. 럼바우 객체지향 분석 기법에서 동적 모델링에 활용됨.
  • 활동 다이어그램 (Activity Diagram): 시스템의 기능, 객체의 로직, 조건에 따른 처리의 흐름을 순서에 딸라 표현.
  • 상호작용 개요 다이어그램 (Interactive Overview Diagram): 상호작용 다이어그램 간 제어 흐름을 표현.
  • 타이밍 다이어그램 (Timing Diagram): 객체 상태 변화와 시간 제약을 표현.

스테레오 타입 (Stereotype)

UML의 기본 기능 외에 추가적인 기능을 표현하는 것. $« »$(Guilemet) 안에 내용을 기술하여 표현.