ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3-1. UML 구성 요소 : UML building blocks 사물과 관계
    Programming/UML (Unified Modeling Language) 2013. 11. 4. 16:03

     

    UML을 학습하는데 있어서는 다음 세가지 주요 요소를 학습해야한다.

     

    - UML building blocks ( UML을 구성하는 요소들 즉 사물(Things), 관계(Relationship), 다이어그램(Diagram) )

    - Rules to connect the building blocks ( UML을 구성하는 요소들을 연결하는 규칙 )

    - Common mechanisms of UML ( UML의 메커니즘 )

     

    UML Building Blocks은 3가지 구성요소로 나뉘는데..

    1. 사물(Things)

    2. 사물간의 관계를 나타내는 관계(Relationship)

    3. 사물과 관계를 도형으로 표현하는 다이어그램(Diagram)

     

     

    1. 사물(Things)

    추상적인 개념으로 UML에서는 4가지 사물로 나뉜다.

     

    ① 구조사물 (Structural) : 모델의 정적인 부분들을 정의. 물리적, 개념적 요소를 표현한다

    ㄴ 클래스, 인터페이스, 통신, 유스케이스. 활성클래스, 컴포넌트, 노드 의 7개의 구조사물과  7개 기본 구조사물들의 변이(Variation)가 있다

    ㄴ 클래스의 변이로는 액터, 신호(Signal), 유틸리티(Utility)

    ㄴ 컴포넌트의 변이로는 애플리케이션, 문서, 파일, 라이브러리 등

     

    - 클래스 (Class) : 유사한 책임을 가진 개체의 집합(??). 직사각형으로 표기하며 이름(Class Name), 속성(Attributes), 오퍼레이션(Operations) 을 넣는다.

     

     

    -numberOfRectangle : Integer = 0        ->     public Integer numberOfRectangle = 0;

     

    클래스다이어그램에서는 공용(+ : public), 전용(- : private), 보호(# : protected 확실하지않음..), 패키지(~)의 네가지 속성을 표기 할수있다.

    Integer, Point등의 UML or 사용자 정의 타입과, ArrayList등 프로그래밍 언어의 타입을 사용할수있다.

    Integer형의 numberOfRectangle 맴버변수는 객체 생성과 동시에 0으로 초기화.

    / : 유도속성 (???)

     

     

     

     

    - 인터페이스 (Interface) : 클래스의 책일을 지정하는 작업 집합(??). 클래스의 외부적으로 가시화되는 요소의 행동을 표현. 특정 클래스나 컴포넌트의 전체 또는 일부분만의 행동을 나타낼수 있다.

     

     

     

     

     

    인터페이스는 클래스와 달리 연산만으로 구성된다. 인터페이스 내부의 연산은 추상(abstract) 연산이다(추상메서드). 기능을 명세하기위한 수단.

    추상메서드는 draw(), erase(), resize() 와 같이 이탤릭체로 표기.

    인터페이스의 실현또는 실체화 관계는 점선화살표로 표기(뒤에가면 다른 방법도 있음).

    어쨋든 Rectangle 클래스는 Drawable의  draw(), erase(), resize() 를 구현해줘야함.

     

     

     

     

    - 공동작업 (Collaboration) : UML 1.x

     

     

    - 통신 (Communication) : UML 1.x의 공동작업의 이름이 변경된것

     

    교류를 정의하며, 서로 다른 요소화 역할들이 모여 있는것이다. 통신은 행동적이고 구조적인 중요성을 가지며 하나의 클래스는 다수의 토인에 참여할수 있다.. (먼소린지 모르겠다.. 일단 Skip..)

     

     

    - 유스케이스 (Use Case) : 시스템이 제공할 기능적 단위

    유스케이스 모델을 구성하는 각 유스케이스 들을 모두 합하면 시스템이 제공하는 전체 기능을 표현할수 있다. 추후 액터(Actor)와 함께 유스케이스 다이어그램을 작성할수있다.

     

     

    - 활성 클래스 (Active Class)  : 객체가 하나 또는 그 이상의 프로세스나 스레드를 갖는 클래스

     

    클래스 이지만 그 객체들의 행동이 다른요소들과 함께 동시적으로 이루어진다는점이 다르다. 양쪽에 수직선을 갖는 분류자 기호로 표기.

     

     

    - 컴포넌트 (Component) : 시스템을 구성하는 기능적 단위, 컴포넌트의 기능은 인터페이스에 의해서 노출된다. 소스코드와 같은 산출물인 컴포넌트, 자바 빈즈와 같은 컴포넌트 등이 있다.

     

     

     

     

    - 노드 (Node) : 런타임 중에 존재하는 물리적인 요소

         

     

     

     

     


    ② 행동사물 (Behavioral) : UML모델의 동적인 부분으로 구성

    - 교류 (Interaction) : 객체들간에 주고받는 메시지로 구성.

         

    직선으로 나타내며, 항상 오퍼레이션 이름을 포함한다. 

     

     

    상태 머신 (State Machine) : 개별 클래스의 행동이나 여러 클래스의 특정 통신의 행동을 하나의 머신으로 지정할수 있다.

         

    상태 머신은 많은 요소를 갖는데 상태전이, 사건, 활동이 있다.

     

     

     


    ③ 그룹사물 (Grouping) : UML모델의 요소들을 그룹화

    패키지 (Package)UML 모델의 요소들을 그룹화 메커니즘으로 정의

     

    컴포넌트가 물리적인 것인 반면에 패키지는 순전히 개념적(개발시에만 존재)인 것이다. 패키지의 종류로는 프레임워크, 모델, 서브시스템과 같은 변이가 있다.

     

     


    ④ 주해사물 (Annotational) : UML모델을 설명 (주석)

    노트 (Note)

     

     

     

     

     

    2. 관계(Relationship)

    요소가 서로 연관되는 방법을 보여줌

     

    ① 의존 (Dependency) : 두 사물간의 의미적 관계, 하나의 요소의 변화는 다른 하나에 영향을 미치는 두가지 사이의 관계.

    ㄴ 점선으로 된 직선을 사용하며, 의존하고 있는 사물을 향하고 있다.

     

     

     

     

    ② 연관 (Association) : 구조적 관계로서 어느 한 사물 객체가 다른 사물 객체와 연결되어 있음을 말한다.

     

     

     

    ③ 일반화 (Generalization) : 클래스와 인터페이스 사이에서 상속관계를 설명

     

     

    ④ 실체화 (realization) : 인터페이스와 클래스나 컴포넌트 사이의 관계를 지정

     

     

     

     

    3. 다이어그램(Diagram)

    다이어 그램의 종류는 예전에 작성한 3-2. UML 구성 요소 : UML building blocks 다이어그램 포스트를 참고하길 바란다.

     

     


    정리를 하고보니 그림과 글은 이해가 되지만.. 아직 어디서 어떻게 사용해야할지는 감이 오질 않는다..

    실무에서 언제 어떤 다이어그램을 작성해야하며, 각 클래스나 객체를 서로 링크시켜서 클릭하면 해당클래스로 가는 그런기능들도 있는건지..

    내가가진 책이나 자료들은 툴을 사용해서 예제를 만들어보는 방식보다는 이론위주로 전부 설명되어있다..

    역시 이론은 지루해..

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    댓글

Designed by Tistory.