UML
태그 :
- 개념
- - 객체 기술에 대한 표준화 기구(OMG : Object Management Group)에서 인정한 객체지향 분석, 설계를 위한 모델링 언어(모델을 표현하는 언어)
I. UML의 정의
- 객체 기술에 대한 표준화 기구(OMG : Object Management Group)에서 인정한 객체지향 분석, 설계를 위한 모델링 언어(모델을 표현하는 언어)
- 건출물을 설계하는데 CAD가 사용된다면 객체지향 언어로 프로그램을 개발 하는 데는 UML이 사용됨
II. UML의 특징
- 방법론을 통합한 것으로 표준화된 모델링 기법 제공
- 사용자들에게 사용하기 쉽고 표현이 풍부한 시각적 모형화 언어 제공<->메타포와 대비
- 특정 프로그래밍 언어나 개발 공정에 종속되지 않음
- 개발하려는 시스템 규모에 관계없이 제공 가능
암기법 : 가구명문 으로 암기^^
특징 |
설명 |
가시화 언어 |
-개념 모델 작성시 오류가 적고 의사소통을 용이하게 함 |
구축 언어 |
-다양한 프로그래밍 언어와 연결 왕복 공학 가능(순공학/역공학) -실행 시스템 예측 가능 |
문서화 언어 |
-시스템에 대한 평가,통제, 의사소통의 문서 (요구사항, 아키텍처, 설계, 소스, 코드, 프로젝트, 계획) |
명세화 언어 |
-정확한 모델 제시,완전한 모델 작성,분석,설계의 표현 |
III. UML 구성요소와 분류
구조 사물(Structural Things) |
- UML 모델의 명사형으로 정적인 부분이며 개념적 또는 물리적 요소들을 표현 |
행위 사물 (Behavioral Things) |
- UML 모델의 동사형으로 동적인 부분이며 시간과 공간에 따른 행위 요소들을 표현 |
그룹 사물 (Grouping Things) |
- UML 모델을 조직하는 부분이며 모델을 분해하여 재구성 할 수 있는 단위 |
주해 사물 (Annotational Things) |
- UML을 설명하는 부분이며 comment로 모델 요소를 명확히 설명 |
구성요소 |
내용 |
사물(Things) (구행그주) |
구조(Structural) 사물 : Use Case, Collaboration, Interface, Class, Object, 행위(Behavioral) 사물 : Interaction, Activity, State Machine 그룹(Grouping) 사물 : package 주해(Annotation) 사물 : Note |
관계 (RalationShips) (의연일실) |
의존(Dependency) 관계, 연관(Associatoin) 관계, 일반화(Generaliztion) 관계, 실제화(Realization) 관계 |
도해 (Diagrams) |
기능모델 : 유스케이스(Use Case) 다이어그램,
정적모델 : 객체(Object) 다이어그램 클래스(Class) 다이어그램, 컴포넌트(Component) 다이어그램, 배치(Deployment) 다이어그램, 패키지(Package) 다이아그램 합성구조(Composite structure) 다이아그램
동적 모델 : 시퀀스(Sequence)다이어그램 액티비티(Activity) 다이어그램, Interaction Overview 다이아그램 상태(State)다이어그램, State Machine 다이아그램 Communication 다이아그램 Timing 다이아그램
|
IV. UML 의 구성요소 Notation
가) 사물(Things) Notation
- 구조사물(Structural Things)
- 행위사물(Behavioral Things)
- 주해사물(Annotational Things)
- 그룹사물(Grouping Things)
클래스 란 ? 어휘의 일부가 되는 사물들을 추상화 하는 것 클래스는 가장 중요한 구성 요소이며 동일한 속성, Operation, Relation 그리고 의미를 공유하는 객체 집합을 표현 하나 또는 그 이상의 Interface를 구현 |
|
속성 (Attribute) Class의 Property에 이를 대표하는 짧은 명사나 명사구로 이름을 붙인 것 속성 표현 속성과 타입 표현 Visibility Name : Type = Default Value |
|
오퍼레이션 (Operation) 객체 행동에 영향을 주기 위해 특정 Class의 객체로부터 요청할 수 있는 Service를 표현한 것 (객체에서 할 수 있는 것이 무엇인가를 추상화 한 것) 속성과 오퍼레이션 구성 Visibility Name (Parameter-List) : Return-Type-Expression {Property-String} |
나) 관계 Notation
의존 관계 (Dependency) |
- 두 사물 간의 의미적인 관계로 한쪽 사물(독립)의 변화가 다른 사물(종속)에 영향을 주는 관계 |
연관 관계 (Association) |
- 구조적 관계로 Link(객체 간의 연결)의 집합을 나타냄 - 특별한 연관 관계로서 집합(Aggregation)은 전체(whole)와 부분(part) 간의 구조적 관계를 표현 |
일반화 관계 (Generalization) |
- 특수화(Specialization)/일반화(Generalization) 관계 - 일반화된 요소(parent)의 객체를 특수화된 요소(child)의 객체로 치환할 수 있는 관계(child는 parent의 구조와 행동을 공유) |
실체화 관계 (Realization ) |
- 분류자(classifier) 간의 관계 - 한쪽 분류자는 다른쪽 분류자가 수행하기로 되어 있는 계약 (contract)을 명세화 |
다) 다이아그램 Notation
<기능모델>
Use Case |
|
1.0 |
Structure Diagram(정적)
Diagram |
내용 |
UML |
---|---|---|
Class |
|
1.0 |
Object |
|
1.0 |
Component |
|
1.0 |
Deployment |
|
1.0 |
Package |
|
1.0 |
Composite structure |
|
2.0 추가 |
Behavior Diagram(동적)
Diagram |
내용 |
Ver. |
---|---|---|
Activity |
|
1.0 |
State machine |
|
1.0 |
Sequence |
|
1.0 |
Communication |
|
2.0 변경 |
Interaction Overview |
|
2.0 추가 |
Collaboration/ Communication |
|
1.0 /2.0 |
Timing |
|
2.0 추가 |
- 핵심부분 추상화
Web Browser Java Applet “Hello World ! “의 예제
- 각종노테이션 표현방법
- 가시성 (Visibility)
- 해당 속성, Operation이 다른 분류자에 의해 사용될 수 있는가의 여부를 지정
- 가시성 종류
- Public (공용) : 모든 외부 분류자들이 사용 (+)
- Protected (보호) : 모든 자식들이 사용 (#)
- Private (전용) : 자신만이 사용 (-)
- 속성 (Attribute)
- 가장 높은 추상화 수준에서 Class의 구조적 특성인 속성을 표현할 때는 명칭만을 기술
- 속성에도 가시성, 범위, 다중성, 타입, 초기값, 변경 가능성 등을 지정 가능
- 속성을 기술하는 UML의 완전한 문장
[visibility] name [multiplicity] [:type] [=initial-value] [{property-string}]
- 속성 선언 예제
- origin 명칭
- + origin 가시성, 명칭
- origin : Point 명칭, Type
- head : *Item 명칭, 복잡한 Type
- name [0 . . 1] : String 명칭, 다중성, Type
- origin : Point = (0, 0) 명칭, Type, 초기값
- id : Integer {frozen} 명칭, Property
- 속성 정의 Property
- changeable(변경) : 속성값 바꾸는 제약 없음
- addOnly(추가) : 하나 이상의 다중성을 가진 속성에 추가만 가능
- frozen(동결) : 객체가 초기화된 이후 속성값을 바꿀 수 없음
- 오퍼레이션 (Operation)
- 가장 높은 추상화 수준에서는 Operation 명칭만을 기술하지만 여기에 Parameter, Return Type, 동시성 그리고 Operation Property를 지정 - Operation의 Signature
- Operation을 기술하는 UML의 완전한 문장
[visibility] name [(parameter-list)] [:return type] [{property-string}]
- Operation 선언 예제
- display 명칭
- + display 가시성, 명칭
- set (n : Name, s:String) 명칭, Parameter
- getID ( ) : Integer 명칭, Return Type
- restart ( ) {guarded} 명칭, Property
- Parameter 제공 구문
[direction] name : type [ =default-value]
- Operation 적용 Property
- isQuery (질의) : Operation 실행 후 System 상태 변화 없음
- sequential (순차) : 객체 외부에서 서로 협조하여 객체 안에 한번에 하나의 흐름만 존재
- guarded (보호) : Operation에 대한 모든 호출을 순차적으로 관리(의미, 무결성 보장)
- concurrent (동시) : 여러 제어흐름이 존재해도 각 Operation을 원자적으로 처리
(의미, 무결성 보장)