1990년대에 객체 지향적인 방법론에 대하여 OOAD, OMT, OOSE 등 많은 이론이 있었습니다. 1995년에 이들이 통합되어 Unified Method 0.8이 만들어졌고 이게 현재 모델링에 대한 사실상 표준으로 자리잡았습니다. 현재는 2015년에 릴리즈된 UML 2.5로 UML 2.0에서 정해진 내용들이 쓰이고 있습니다.
UML은 세가지로 구분할 수 있습니다.
1. Structure Diagrams : System에 있어야 하는 것들에 대한 다이어그램.
2. Behavior Diagram : System에서 발생해야 하는 일들에 대한 다이어그램.
3. Interaction Diagrams : 컨트롤과 데이터의 흐름에 대한 다이어그램.
가장 많이 쓰이는 5가지 UML의 모습에 대해서 알아보겠습니다.
1. Use-Case diagram
2. Class and object diagram
3. Activity Diagram
4. State Diagram
5. Sequence Diagram
1. Use-Case Diagram :
* 사용자들이 시스템 내에서 사용하는 함수들 위주로 작성된 다이어그램입니다.
* 사용자들의 사용에 의한 목적을 나타내며 작용하는 요소들을 파악할 수 있습니다.
2. Object Diagram, Class Diagram
Object Diagram은 시스템에 존재하는 객체, 속성의 구조에 대해서 나타낸 다이어그램입니다.
Instance Diagram이라고도 불리는 Object Diagram은 시스템의 객체들에 대한 상호작용을 링크로 나타냅니다. Object는 특성 시간에 값이 변경될 수 있으므로 다이어그램이 나타내는 것 또한 시간에 영향을 받습니다. 객체가 이름이 없을 경우 [빈공간] : [Class Name]으로 나타낼 수 있으며 객체에 대해서는 밑줄을 사용해서 Class와 구분이 되도록 합니다.
Class Diagram 객체 다이어그램과 다르게 요소가 3부분으로 나눠져 있습니다.
이때, Class의 성질을 생각해보면 Public, Private, Protect 접근자를 나눌 수 있고
클래스가 공유하는 클래스 변수[Class Variable, Class Operation]가 있습니다.
추가적인 정보를 나타내는 방법에 대해서 보도록 하겠습니다. (색깔은 의미 없습니다. )
+ : Public 을 나타냅니다.
- : Private 을 나타냅니다.
# : Protected 를 나타냅니다.
_ : 언더라인은 Class Variable, Class Operation을 나타냅니다. Static과 같은 의미입니다.
여기까지는 Concrete Class 에 대해서 다뤘습니다. Abstract 선언이나 Abstract Method를 지니지 않은 객체에 해당하는 내용이므로, Abstract[Operation에 Body가 없는 경우]을 나타내는 방법에 대해서 보도록 하겠습니다.
Abstract 키워드를 사용하거나, 이탤릭체로 쓰는 방법이 있습니다.
세번 째 경우는, Abstract Operation이 없더라도 클래스명 옆에 abstract를 적어주는 경우 입니다.
마지막으로 Interface를 나타내는 방법을 알아보겠습니다.
UML에서는 Interface를 Provided Interface, Required Interface 두 개로 구분할 수 있습니다.
* Provided Interface : Class에 의해서 구현되어야 하는 공 모양
* Required Interface : 다른 클래스에 의한 구현을 필요로 하는 경우.
3. Activity Diagram
전체 워크플로우의 단계를 나타낸 것으로 전체적인 컨트롤의 흐름을 나타냅니다.
4. State Diagram [State Chart]
개별 객체의 다이나믹한 행동을 Finite State Machine으로 나타낸 것 입니다.
5. Sequence Diagram
사용자와 시스템의 다이나믹한 행동이나 객체들 간의 행동을 나타냅니다.
UML and Development Process
초기에 요건분석을 할 때는 Use Case Diagram을 사용하고 후에 Class, Object, Activity등 다양한 다이어그램을 사용해서 분석과 디자인을 구체화하는 것을 볼 수 있습니다.
다이어그램 그리기 : http://staruml.io/
'프로그래밍' 카테고리의 다른 글
[알고리즘] 톱니바퀴 14891 파이썬 풀이 (0) | 2020.05.10 |
---|---|
파이썬 명령어 받기 (Parser) (0) | 2020.04.13 |
벽 부수고 이동하기[파이썬, JAVA, C++] (0) | 2020.03.30 |
Permutation [Python, Java, C++] (0) | 2020.03.28 |
[백준 1149 RGB 거리 ] 파이썬 풀이 (0) | 2020.02.28 |