04. UML 다이어그램
01. UML(Unified Modeling Language) 다이어그램
1) UML의 정의
- 객체지향 소프트웨어 개발 과정에서 산출물을 가시성, 명세화, 문서화할 때 사용되는 모델링 기술 방법론을 통합하여 만든 표준화된 범용 모델링 언어
- 요구분석, 설계, 구현 등의 소프트웨어 개발 과정에서, 개발자 간의 의사소통을 원활하게 이루어지게 하기 위하여 표준화한 모델링 언어
- 모델링에 대한 표현이 정확하고 오류가 적은 논리적인 표기법
2) UML의 특징
- 가시성
- 쉽게 보이는 정도
- 소프트웨어를 이해하기 쉽게 표현해줌
- 반복적, 점진적으로 구체화하여 소프트웨어의 가시성을 제공함
- 명세화
- UML로 그려진 소프트웨어 설계 문서는 소프트웨어의 기능을 자세하게 설명함
- 단순 표기법이 아닌 구현에 필요한 개발적 요소 및 기능에 대한 명세를 제공함
- 문서화
- UML로 그려진 소프트웨어 설계 문서를 프로그램의 지식이 없는 사용자도 쉽게 알아볼 수 있음
- 개발 규모, 프로세스, 언어와 무관하게 개발자 간의 의사소통 도구를 제공함
3) UML의 기본 구성 요소
- 사물(Thing)
- 구조 사물(Structure Thing) : 시스템의 구조를 표현하는 사물
- 행위 사물(Behavior Thing) : 시스템의 행위를 표현하는 사물
- 그룹 사물(Group Thing) : 개념을 그룹화 하는 사물
- 주석 사물(Annotation Thing) : 개념을 설명하는 사물
- 관계(Relationship)
- 사물 간의 관계를 나타냄
- 다이어그램(Diagram)
- 사물 간의 관계를 도형으로 나타냄
4) UML 다이어그램의 분류
- UML의 Structure Diagram(구조 다이어그램) - 정적 구조
- 클래스 다이어그램(Class Diagram)
- 객체 다이어그램(Object Diagram)
- 패키지 다이어그램(Package Diagram)
- 컴포넌트 다이어그램(Component Diagram)
- 복합 구조 다이어그램(Composite Structure Diagram)
- 배치 다이어그램(Deployment Diagram)
- UML의 Behavior Diagram(행위 다이어그램) - 동적 구조
- 유스케이스 다이어그램(Usecase Diagram)
- 상태 다이어그램(State Machine Diagram)
- 활동 다이어그램(Activity Diagram)
- 시퀀스 다이어그램(Sequence Diagram)
- 통신 다이어그램(Communication Diagram)
- 상호 작용 다이어그램(Interaction Overview Diagram)
- 타이밍 다이어그램(Timing Diagram)
5) UML 다이어그램
- 클래스 다이어그램(Class Diagram)
- 클래스와 클래스, 클래스의 속성 사이의 관계를 표현함
- 객체를 생성하기 위한 도구, 틀
- 속성과 함수를 지닌 것들의 범위 및 그룹,
- 객체 다이어그램(Object Diagram)
- 클래스의 인스턴스
- 객체 간의 연결 관계(스냅샷)를 표현함
- 속성과 함수를 가지고 있는 개별적인 객체
- 인스턴스 이름은 클래스명 앞에 콜론을 붙이고, 왼쪽에 기입함
- 패키지 다이어그램(Package Diagram)
- 클래스들을 이용하여 조직화함
- 객체들의 그룹화된 표현
- 관련성 있는 객체들을 모아 하나의 패키지로 표시함
- 패키지 안에는 클래스 이름을 기입함
- 패키지 안에 패키지를 포함할 수 있음
- 컴포넌트 다이어그램(Component Diagram)
- 컴포넌트는 지원 함수 블록 혹은 집합체, 라이브러리 빌딩으로 객체화된 프로그램의 그룹
- 컴포넌트는 독립적인 프로그램으로 사용될 수 있으며, 객체 프로그램을 부분적으로 지원하는 서브 프로그램으로도 사용될 수 있음
- 컴포넌트는 한 개 이상의 클래스로 구현함
- 시스템을 구성하는 컴포넌트 사이에 의존관계를 표현함
- 컴포넌트 다이어그램은 컴포넌트, 인터페이스, 의존 관계로 표현함
- 복합 구조 다이어그램(Composite Structure Diagram)
- 컴포넌트 내부를 파트와 연결자로 표현함
- 컴포넌트나 클래스의 내부 연결 형태를 표현함
- 컴포넌트나 클래스의 내부 구조를 보여주기 위해 사용함
- 배치 다이어그램(Deployment Diagram)
- 객체와 연결 경로를 배치하는 물리적인 컴포넌트를 표현함
- 하드웨어 자원의 연결을 표현함
- 하드웨어 자원에 연결된 소프트웨어 컴포넌트 배치를 표현함
- 대부분 설계 단계의 마지막에 작성됨
- 유스케이스 다이어그램(Usecase Diagram)
- 사용자 시각에서 소프트웨어 범위와 기능을 설명하는 설계 표기법
- 구조적 분석 방법론에서는 자료 흐름도(DFD), 객체지향 분석 방법론에서는 유스케이스 다이어그램을 사용함
- 유스케이스는 사용자 시각으로 본 시스템의 행위를 말함
- 외부 요소와 기능적 요구사항을 행위자와 유스케이스로 표현함
- 구성 요소
- Actor
- 사용자를 나타냄(사람 모양)
- 소프트웨어 외부에 존재하면서 소프트웨어와 상호 작용하는 객체
- 소프트웨어가 서비스 해 주기를 요청하는 객체
- 소프트웨어에게 정보를 제공하는 객체
- 객체지향 기술에서의 객체
- Usecase
- 시스템의 행동을 나타냄(타원)
- 소프트웨어가 Actor에게 제공하기 위한 기능
- Actor의 요청에 반응하여 실행되는 기능
- 객체의 메소드
- Relationship
- 서로 관련 있는 Actor와 Usecase를 연결함
- Actor
- 상태 다이어그램(State Machine Diagram)
- 액터의 동적 행위를 상태와 전이로 표현함
- 객체는 시간에 따라 다른 생타가 존재함
- 하나의 객체가 가진 상태와 그 상태의 변화에 의한 동작 순서는 나타냄
- 활동 다이어그램(Activity Diagram)
- 액터의 동적 행위를 활동으로 표현하는 다이어그램
- 객체가 상태가 아닌 조건에 따라 흐름의 순서를 정의한 다이어그램
- 객체들의 상호 관계를 순서적으로 도식화하여 불필요한 순서를 없앰
- 활동 다이어그램 구성 요소
- 활동(Activity) : 무언가를 하고 있는 행위나 작업
- 시작 상태(Initial State) : 처리 흐름이 시작되는 곳
- 종료 상태(Final State) : 처리 흐름이 종료되는 곳
- 선택 지점(Decision) : 조건에 따라 분기되는 곳
- 전이(Transition) : 활동들 사이에 흐름을 표시함
- 구획 지점(Swim lane) : 역할에 따른 처리를 구분함
- 시퀀스 다이어그램(Sequence Diagram)
- 시퀀스 다이어그램은 상호 작용 다이어그램의 한 종류로 볼 수 있음
- Actor 간의 상호 작용을 시간 순서에 따른 메시지 전달로 표현함
- 객체 간에 주고 받은 메시지의 순서를 시간의 흐름에 따라 보여줌
- 객체 간의 메시지 통신을 분석하기 위한 것으로 시스템의 동작을 정형화하고 객체들의 메시지 교환을 시각화함
- 구조적 설계 방법론에서는 구조도(Structured Chart), 객체지향 설계 방법론에서는 시퀀스 다이어그램을 사용함
- 시퀀스 다이어그램 구성 요소
- 객체(Object) : 사용자, 로그인, Action, 인터페이스
- 생명성(Lifeline) : 세로 실선
- 실행(Activation) : 세로 사각형
- 메시지(Message) : 화살표 위의 메시지, 동기식과 비동기식
- 시간(Time) : 세로 사각형의 길이기 실행 시간
- 통신 다이어그램(Communication Diagram)
- 협력 다이어그램(Collaboration Diagram)이라고도 함
- Actor 간에 상호 작용을 관계 형태의 메시지 전달로 표현함
- 통신 다이어그램은 객체, 링크, 메시지로 구성됨
- 상호 작용 다이어그램(Interaction Overview Diagram)
- 상호 작용의 관계를 표현함
- 유스케이스를 수행하기 위한 객체들의 상호 작용을 표현함
- 시퀀스 다이어그램과 통신 다이어그램이 존재하며 서로 1:1로 변환이 가능함
- 타이밍 다이어그램(Timing Diagram)
- 객체 간의 상태 변화를 구체적인 시간으로 표현함
- 시간 조건에 중점을 둔 상호 작용 다이어그램
- 일정 기간 동안 객체의 동작을 탐색하는 데 사용됨