출처 : 강의 교안, 시스템분석설계 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 모델링 절차
- 초기 클래스 다이어그램 작성
- 유스케이스 다이어그램 작성
- 클래스 다이어그램 작성
- 시퀀스 다이어그램과 통신 다이어그램 작성
- 인터페이스를 식별 (클래스 다이어그램 변경)
- 액티비티 다이어그램과 상태머신 다이어그램을 작성
- 컴포넌트 다이어그램 및 배치 다이어그램 작성
'전공과목 정리 > 소프트웨어분석및설계' 카테고리의 다른 글
[소프트웨어분석및설계🛠️] 7장 객체지향방법론 - (2) 정적·동적 모델링 (2) | 2024.10.08 |
---|---|
[소프트웨어분석및설계🛠️] 7장 객체지향방법론 - (1) 기능 모델링 (1) | 2024.09.08 |
[소프트웨어분석및설계🛠️] 5장 정보공학방법론 (0) | 2024.09.07 |
[소프트웨어분석및설계🛠️] 4장 구조적 방법론 (0) | 2024.08.29 |
[소프트웨어분석및설계🛠️] 3장 SW 요구사항 (0) | 2024.08.17 |