1. UML(Unified Modeling Language) overview
- 모델은 만드는 일은 실제 시스템을 추상화해서 알아보기 쉽게 하기 위함이다.
- 추상화란 불필요한 요소를 쳐내서 복잡도를 줄이고 핵심만 나타내는 과정이라고 보면된다.
- 모델은 쉽게 프로젝트의 아이디어를 전달하기 위한 것이기 때문에 구체적인 설계등의 내용은 포함하지 않는다.
- 개발자, 소비자, 기획자 모두가 함께 이해하기 쉬워야 한다.
- 이런 모델링을 위한 시각 언어로 UML이 만들어졌고 사실상 산업 표준이 되었다.
- 특정 개발 언어에 국한되지 않고 사양을 설명하는데 목적이 있다.
- Structure diagram : 시스템안에 존재해야 하는 것들은 무엇인가?
- Behavior diagram : 시스템에서 어떤 일이 벌어지는가?
- Interaction Diagram : 시스템에서 벌어지는 일들의 flow와 그에 따른 data flow는?
- 점선 위의 예시처럼. UML은 구현하려는 문제상황을 설명하기 위해 활용될 수 있다. (문제 상황의 domain정의, 개념적 관점에서 사용)
- 점선 아래 예시처럼, 개발을 위해 추상화(구체적인 구현사항을 숨긴)된 형태의 class들과 관계를 표현하는데 사용될 수 있다. (implementation 관점에서 사용)
2. use case diagram
- 시스템이 제공하는 기능을 use case로 나타내는 그림이다.
3. Class Diagram, Object Diagram
- class간의 구조로 시스템을 나타낸다.
4. Activity Diagram
- flow차트와 유사하다. step by step으로 work flow를 타나낸다.
5. State Diagram
- activity diagram과 매우 유사한데 여기서 중점적으로 나타내는 것은 work flow에 따른 individual object의 state이다.
- 즉 작업 flow에 따라서 individual object의 상태가 어떻게 변화하는지 나타낸다.
- 위의 예시는 버튼을 눌렀을때 시계 상태를 묘사한다. ex) a버튼을 누르면 시침 깜빡거리는 상태 -> 이어서 b를 누르면 시침 증가, a버튼을 짧게 두번 누르면 분침 깜빡거리는 상태
6. Sequence Diagram
- 사용자와 system 혹은 objects끼리 어떤 메시지를 주고받는지 관게를 나타낸다.
- 사용자 행동에 따라서 api를 호출하는 과정을 나타내는데 유리하다.
7. Development Process and UML
- 개발 프로세스의 각 단계에서 다양한 uml들이 어떻게 사용될 수 있는지 알아본다.
8. UML 1.x.x와 UML 2.x.x 차이
- UML 1.0에는 의미론적 통합에 취약(weak semantic integration), 과부화된 표기법( overloaded notation), 정확한 의미 부재 및 사용 유형과 같은 방법론적 근거의 부족(lack of precise semantics and lack of methodological basis like usage types) 등의 단점이 있었다. UML 2.0에서 이 취약점을 개선하였는데 그 내용를 살펴보자.
- 새롭게 진화한 UML 2.0의 큰 특징은 다음과 같다.
- 객체지향, 컴포넌트 뿐만 아니라 SOA, MDA, 리얼타입, 워크플로우 시스템에 대한 지원 강화
- 요구사항 파악부터 마지막 테스트까지 모두 지원하는 표기법으로 진화
- 분석/설계와 실제 구현 간의 차이를 극복
- 정확한 언어구조 : 모델의 모호함과 부정확성을 제거
- 향상된 언어구조 : 사용자가 언어에 보다 쉽게 접근할 수 있고 툴들 간 내부 작동을 활성화 할 수 있는 모듈식 구조
- 규모가 큰 시스템의 모델링 향상 : 유연한 새로운 계층 기능이 언어에 추가되어 소프트웨어 모델링을 지원
- 보다 단순하고 일관성 있는 언어 , 중복된 개념을 제거하고, 텍스트 정의와 예제 추가
- 2.0으로 버전 업데이트가 되면서 기존에 없던 diagram이 추가되고 기존의 collaboration diagram이 communication diagram으로 변경되어 이하 13개의 diagram으로 확장되었다. (Class, Object, Component, Composite structure, Use case, Sequence, Communication, State, Activity, Deployment, Package, Timing, Interaction overview)
구분 | UML 1.X | UML 2.0 |
complexity | 복잡해서 습득, 적용 구현이 어려움 | 단순한 언어로 접근성 향상, structure와 behavior의 계층적 분해 |
UML 이해도 | Semantics나 Notation의 상세 내용 정확하게 이해하기 어려움 | Sequence Diagram에 매우 향상된 Semantics를 제공 |
간결성 | 언어의 간결성 부족 | MDA(Model Driven Architecture) 개념을 적용하여 플랫폼 독립적 기술 |
컴포넌트 개념 | 컴포넌트 기반 개발 지원 안 함 | Composite Structures를 통한 CBD(Component-Based Development) 지원 |
모델-코드간 불일치성 | 실질적으로 모델의 behavior 부분 기술 불가. 따라서 모델과 코드가 일치하지 않는 경우 발생 | Behavioral Constructs를 갖는 Action Semantics의 통합으로 상세 기술 가능 |
'ComputerScience > Software Engineering' 카테고리의 다른 글
소프트웨어공학 - 5. Iterative, Evolutionary, Agile (0) | 2022.03.16 |
---|---|
소프트웨어공학 - 4. OOA/D(Object Oriented Analysis & Design) (0) | 2022.03.16 |
소프트웨어공학 - 2. SW Development Process (0) | 2022.03.10 |
소프트웨어공학 - 1. Introduction (0) | 2022.03.02 |
UML (Unified Modeling Language) (0) | 2021.12.02 |