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

  • 사용자가 상호작용하는 시스템의 모습을 기술한다.
  • 용도 : 시스템의 Context 에 대한 모델을 기술하고, 시스템의 요구사항에 대한 모델을 기술한다


 

1.0

 

Structure Diagram(정적)

Diagram

내용

UML

Class

  • Class와 Class 간의 관계를 기술한다.

 

 

 

1.0

Object

  • 특정 시점의 객체의 snapshot을 기술한다.
  • Class가 아니라 Class의 Instance(혹은 객체)들의 관계를 기술하므로 Instance Diagram이라고 불리기도 한다.

1.0

Component

  • 컴포넌트의 구조와 연관 관계를 기술한다

1.0

Deployment

  • 시스템의 물리적인 배치를 기술한다.
  • 어떠한 소프트웨어가 어떠한 하드웨어에서 돌아가는지를 나타낸다.

1.0

Package

  • 시스템의 컴파일 시 계층적 구조를 기술한다.
  • 규모가 큰 시스템의 경우 시스템을 구성하는 주요 요소들간의 의존성을 나타내는데 Package Diagram을 사용하여 이해를 도울 수 있다. 일반적인 프로그램 구조와 일치한다.

1.0

Composite structure

  • 하나의 Class의 실행 시 내부 구조를 기술한다.

2.0

추가

 

Behavior Diagram(동적)

Diagram

내용

Ver.

Activity

  • 절차적이고 병렬적인 행위를 기술한다.
  • 절차적 논리, 비즈니스 프로세스, 작업 흐름을 기술하는데 사용되는 기법이다.
  • UML 2.0에서는 표현 방식과 조직을 표현할 수 있도록 개선되었다.

1.0

State machine

  • 객체의 상태에 따른 작업과 event에 따른 상태의 변화를 기술한다.

1.0

Sequence

  • 객체들간의 상호작용 순서에 초점을 맞춰 기술한다.
  • 시스템의 동적인 행위를 기술하며, 객체들 사이의 메시지 교환(혹은 Method 호출)을 시간의 순서에 따라 기술한다.
  • 하나의 Use Case 내에 포함된 여러 객체들의 행동을 살펴보고 싶을 때 사용한다.

1.0

Communication

  • Interaction Diagram의 일종으로 상호작용의 다양한 참가자들 사이의 자료 연결을 강조한다.
  • Sequence Diagram과는 달리 참가 객체들을 자유롭게 배열할 수 있어, 각 객체들이 어떻게 연결되어 있는지를 알기 쉽게 보여준다. 메시지의 순서는 번호를 사용한다

2.0

변경

Interaction Overview

  • Sequence와 Activity Diagram의 결합된 형태로 Activity 대신 작은 Sequence Diagram을 기술하였다.

2.0

추가

Collaboration/

Communication

  • 교류하는 Object들 간의 구조적인 관계를 강조
  • 교류에 나타나는 객체들을 Graph 상의 꼭지 점으로 하여 Link를 연결하고 Message를 순차 번호를 부여하여 표현
  • 순차도와 다른점
  • Path를 표현
  • Sequence Number를 부여

 

1.0

/2.0

Timing

  • 객체들간의 상호작용을 시간 제약에 초점을 맞춰 기술한다.
  • 전자 공학(하드웨어) 분야에서 사용되어 오던 Diagram으로 시간 제약의 표현에 초점을 맞추고 있다.
  • 하나의 객체 또는 여러 객체를 한꺼번에 표현할 수 있다.

2.0

추가

 

 

  • 핵심부분 추상화

Web Browser Java Applet “Hello World ! “의 예제

 

 

 

  • 각종노테이션 표현방법

 

 

  1. 가시성 (Visibility)
    1. 해당 속성, Operation이 다른 분류자에 의해 사용될 수 있는가의 여부를 지정
    2. 가시성 종류
      1. Public (공용) : 모든 외부 분류자들이 사용 (+)
      2. Protected (보호) : 모든 자식들이 사용 (#)
      3. Private (전용) : 자신만이 사용 (-)

 

 

  • 속성 (Attribute)
    1. 가장 높은 추상화 수준에서 Class의 구조적 특성인 속성을 표현할 때는 명칭만을 기술
    2. 속성에도 가시성, 범위, 다중성, 타입, 초기값, 변경 가능성 등을 지정 가능
    3. 속성을 기술하는 UML의 완전한 문장

       [visibility] name [multiplicity] [:type] [=initial-value] [{property-string}]

  • 속성 선언 예제
    1. origin                                   명칭
    2. + origin                                가시성, 명칭
    3. origin : Point                        명칭, Type
    4. head : *Item                         명칭, 복잡한 Type
    5. name [0 . . 1] : String                        명칭, 다중성, Type
    6. origin : Point = (0, 0)                          명칭, Type, 초기값
    7. id : Integer {frozen}                          명칭, Property
  • 속성 정의 Property
    1. changeable(변경) : 속성값 바꾸는 제약 없음
    2. addOnly(추가) : 하나 이상의 다중성을 가진 속성에 추가만 가능
    3. frozen(동결) : 객체가 초기화된 이후 속성값을 바꿀 수 없음

 

  • 오퍼레이션 (Operation)
    1. 가장 높은 추상화 수준에서는 Operation 명칭만을 기술하지만 여기에 Parameter, Return Type, 동시성 그리고 Operation Property를 지정 - Operation의 Signature
    2. Operation을 기술하는 UML의 완전한 문장

       [visibility] name [(parameter-list)] [:return type] [{property-string}]

  • Operation 선언 예제
    1. display                                 명칭
    2. + display                 가시성, 명칭
    3. set (n : Name, s:String)        명칭, Parameter
    4. getID ( ) : Integer                 명칭, Return Type
    5. restart ( ) {guarded}                         명칭, Property
  • Parameter 제공 구문

[direction] name : type [ =default-value]

  • Operation 적용 Property
    1. isQuery (질의) : Operation 실행 후 System 상태 변화 없음
    2. sequential (순차) : 객체 외부에서 서로 협조하여 객체 안에 한번에 하나의 흐름만 존재
    3. guarded (보호) : Operation에 대한 모든 호출을 순차적으로 관리(의미, 무결성 보장)
    4. concurrent (동시) : 여러 제어흐름이 존재해도 각 Operation을 원자적으로 처리

                                      (의미, 무결성 보장)

 

 

댓글