전공과목 정리/소프트웨어분석및설계

[소프트웨어분석및설계🛠️] 6장 UML (Unified Modeling Language)

최연재 2024. 9. 8. 00:59

출처 : 강의 교안, 시스템분석설계 with 애자일 (생능출판사, 최은만)

 

1. UML 이해

1.1  UML의 이해

1) UML

- 객체지향 방법론 표기법의 차이가 문제로 대두되며 등장

- UML의 특징

  • 가시화
    • SW 개념 모델을 시각적인 그래픽 형태로 표기
    • 표기법에 사용하는 기호에 명확한 정의를 부여하는 것
  • 명세화 : 정확하고, 명백하며, 완전한 모델을 만드는 것
  • 구축 : UML로 명세화된 설계 ↔️ 소스코드
  • 문서화 : 시스템 아키텍쳐와 모든 상세 내역에 대한 문서화

- UML의 장점

  • 복잡성 단순화
  • 의사소통 라인을 열린 상태로 유지
  • 소프트웨어 프로덕션 및 프로세스 자동화
  • 지속적으로 발생하는 아키텍쳐 문제 해결 지원
  • 업무의 질 향상
  • 비용 절감 및 시장 출시 시간 단축

- UML의 구성 요소 : 사물(Things) + 관계(Relationship) + 다이어그램(Diagram)

 

1.2 사물

; 추상적 개념

구분 설명 종류
구조 사물 (Structural Things) 구조를 표현 (개념적, 물리적 요소) Class, Interface, Object, Usecase, Active Class, Component, Node
행동 사물 (Behavioral Things) 행위를 표현 (시공간에 따른 요소들의 행위) Interaction, State machine
그룹 사물 (Grouping Things) 개념을 그룹화 Package
주해 사물 (Annotation Things) 부가적 개념 설명 (제약조건) Note

 

1.3 관계

1) 의존 관계 (Dependency Relationship)

- 사물 간의 의미적 관계

- 한 사물의 명세가 바뀌면 다른 사물에게 영향을 끼침

 

2) 연관 관계 (Association Relationship)

- 두 사물 간의 구조적 관계

- 한 사물 객체가 다른사물 객체와 연결되어 있음을 나타냄

- 이름과 역할, 다중성을 표기

 

3) 일반화 관계 (Genralization Relationship)

- 일반화된 사물과 특수화된 사물 사이의 관계

- 'is - a' 관계라고도 함

 

4) 실체화 관계 (Realization Relationship)

- 객체들 사이의 의미적 관계

- 사물이 수행해야 하는 기능(행위, 인터페이스)으로 그룹화할 수 있는 관계

 

1.4 다이어그램

1) 객체지향 모델링

- 기능 모델링 (요구 모델링)

- 정적 모델링 (구조 모델링)

- 동적 모델링 (행위 모델링)

 

2) 기능 모델링에 사용되는 다이어그램

- 유스케이스 다이어그램 (Usecase diagram) 

: 외부 행위자(액터)와 유스케이스 관계를 구조적으로 표현

 

3) 정적 모델링에 사용되는 다이어그램

- 클래스 다이어그램 (Class diagram)

: 시스템을 구성하는 클래스 사이의 구조적 관계를 표현

- 객체 다이어그램 (Object diagram)

: 클래스에 속한 객체들을 특정 시점의 객체와 객체 사이의 관계로 표현

- 컴포넌트 다이어그램 (Component diagram)

: 소프트웨어의 물리적 단위의 구성과 의존 관계를 표현

- 배치 다이어그램 (Deployment diagram)

: 노드에 존재하는 컴포넌트의 물리적 구성을 표현

 

4) 동적모델링에 사용되는 다이어그램

- 시퀸스 다이어그램 (Sequence dagram)

: 객체 간에 주고받는 메시지를 시간의 흐름으로 표현

- 액티비티 다이어그램 (Activity diagram)

  • 시스템 내부의 활동 흐름을 표현
  • 객체의 처리 로직이나 조건에 따른 처리의 흐름 순서

- 상태 다이어그램 (State diagram)

  • 시스템 내부의 상태 전이를 표현
  • 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현

 

🎨 UML 확장 메커니즘

  • 스테레오타입(stereotype) : 기본적인 요소 외에 새로운 요소를 만들기 위함 (<< >> 기호를 사용)
  • 꼬리표값 (tagged values) : 구성 요소가 갖는 속성을 확장하여 구성요소의 명세서에 새로운 정보를 추가 (tag == value 기호를 사용)
  • 제약 (constraints) : 구성 요소에 있는 이전의 규칙을 수정하거나 새롭게 생성하기 위함 ( { } 기호를 사용)

 

2. UML 4 + 1뷰 아키텍쳐

🎨 UML 뷰 아카텍쳐 (1995년, Philippe Kruchten)

  • 유스케이스 뷰 (UseCase View) : 외부 액터에 의해 인식되는 기능 요구사항을 표현
  • 논리 뷰 (Logical View) : 시스템의 내부가 어떻게 설계되었는지 보여줌
  • 프로세스 뷰 (Process View) : 프로세스의 통신 및 동기화 등의 문제를 다룸
  • 구현 뷰 (Implementation View) : 컴포넌트와 같은 구현 모듈과 그들 사이의 관계
  • 배치 뷰 (Deployment View) : 물리적 시스템의 구성을 표현

 

3. 정적 모델링과 동적 모델링

🎨 정적 모델링 도구

  • 시스템의 지속적이고 정적인 측면을 모델링
  • 클래스 다이어그램, 객체 다이어그램, 컴포넌트 다이어그램, 배치 다이어그램

🎨 동적 모델링 도구

  • 시간의 흐름에 따라 유동적으로 변하는 객체의 상태나 행위, 객체 간의 상호작용 등을 표현
  • 시퀸스(순차) 다이어그램, 상태머신 다이어그램, 통신 다이어그램, 액티비티(활동) 다이어그램 등

 

4. UML 모델링 절차

  • 초기 클래스 다이어그램 작성
  • 유스케이스 다이어그램 작성
  • 클래스 다이어그램 작성
  • 시퀀스 다이어그램과 통신 다이어그램 작성
  • 인터페이스를 식별 (클래스 다이어그램 변경)
  • 액티비티 다이어그램과 상태머신 다이어그램을 작성
  • 컴포넌트 다이어그램 및 배치 다이어그램 작성