Devxplorer – 세상을 분석하는 개발자의 탐험기

IT, 경제, 인물, 건강 – All Explored

Devxplorere 자세히보기

IT (IT)🤖🧠/Object Oriented Programming

UML : 자주 사용하는 9가지 Unified Modeling Language

데브엑스플로러 2024. 3. 11. 22:45
728x90
반응형

UML은 System 상에 동작하는 Software를 Visualizing 하여 표현하는 방법이다. Software의 구조와 동작을 표현하고, 이해를 돕는다. UML이라는 표준화 된 표현 방법으로 Software 개발자 간 효율적인 상호작용을 할 수 있다.

1. UML 2.0 Diagram

UML Diagram들을 Class Diagram의 상속 관계로 표현한 13개의 UML Diagram이다. Diagram을 크게 구조를 보여주기 위한 Structure Diagram 과 동작을 보여주기 위한Behavior Diagram 으로 나눌 수 있다.

Structure Diagram의 대표로 Class Diagram이 있다. Class 간의 관계를 상속과 Compositon, Aggregation등 다양한 방법으로 표현하여 Software가 어떤 구조를 갖고 있는지 표현할 수 있다.

Behavior Diagram의 대표로 Activity Diagram와 Sequence Diagram이 있다. System으 동작 Flow가 어떻게 변화하는지 Activity Diagram을 통해 표현할 수 있으며, 객체 간 어떤 Commuication을 통해 동작하는지 Sequence Diagram을 통해 표현할 수 있다.

OOA 단계에선, 시스템의 요구 사항을 분석하기 위한 Use-case Diagram과 객체 간 추상적인 관계를 표현하기 위한 Domain Model 을 사용한다.

OOD 단계에선, 시스템 요구 사항을 객체 간 어떠한 Communication을 통해 달성하는지 표현하는 Sequence Diagram을 상용하고, Object를 구체화하여 Class로 표현하고, Class 간 관계를 보여주기 위해 Class Diagram을 사용한다.

2. Use Case Diagram

Use case diagarm은 system 외부의 Actor의 요구 사항을 작성한다. 외부 Actor와 System간의 관계를 표현한다. 어떻게 Actor가 우리 시스템을 사용하여 요구 사항을 달성 할 것인가를 표현한다. System 이 달성해야 하는 하나의 Use Case를 Text Story로 표현할 수 있다.

Use Case 들을 Brief 하게 작성할 수 있고, Casual Format / Full Dressed up Format으로 작성 할 수 있다. 예외 시나리오와 선행 조건 후행 조건들이 Format에 표현 될 수 있다.

Use Case 는 구현에 대한 Detail은 제외해야 하고, 외부 Actor의 입장에서 System에 대한 요구 사항 만을 작성해야 한다. 추상적으로 작성하여 구현의 제약이 발생하지 않도록 Black Box Style로 작성해야 한다. 구현의 대한 결정은 Implement 단계에서 진행 할 수 있도록 해야 한다. 주로 Functional Requirement를 Use Case로 표현한다.

3. Class Diagram

Class Diagram은 System 내의 Class들을 관계를 보여 준다. Class들이 어떠한 정보를 갖고 있는지 어떤 Operation을 담고 있는지 표현하며 다른 Class들과 어떠한 관계를 갖는지 표현한다. Class Diagram을 OOA 과정에서 Domain Model을 작성할 때 사용할 수 있고, OOD 과정에서 구체화 시킨 Class Diagram에서 사용할 수 있다.

Domain Model에서 Class Diagram을 사용하여 추상화 된 객체 간 관계를 표현할 때에는 구체적인 Attribute의 Type이나 Operaiton 을 생략할 수 있다.

그러나 , OOD 단계인 Design 단계 에서는 명확하게 그대로 구현 가능하도록 Class Diagram을 작성해야 한다. Object Diagram 은 구체적인 Instance까지 보여줘야 한다.

3.1 Class Representation

Class는 Attribute와 Operation 으로 표현한다.

Class의 Attribute와 Operation은 Visibility를 갖을 수 있다. 다른 Class에게 공개할 것인지 자의 Information와 Operation을 어느 단계 까지 노출 시킬지 제한 할 수 있다.

이러한 Class의 Visibility를 통해 자신의 Attribute를 감추고, 노출된 Operation을 통해 Access 하게 함으로써, Information Hiding을 달성 할 수 있다. Class Diagram 에서 Operation은 선언을 의미하고, Method 는 해당 Function의 구현까지 의미한다.

Class Diagram은 구체화 정도에 따라 위와 같이 다양하게 표현 가능하다. 사용하고자 하는 목적에 따라 채택하여 사용하면 된다.

3.2 Class Relationship

Dependency 관계는 의존관계로, A Class가 B Class를 참조하는 경우, B가 변경되면, A도 영향을 받게 된다. 변경점이 전염된다. Class간 관계를 표현할 때 사용되는 Relation이다. Aggregation과 Compositon을 차이는 객체의 소멸을 함께 하는지에 따라 갈린다.

4. Package Diagram

Class들을 그룹화 하여 Package 로 표현한 것이다. Logical 한 Architecture를 보여주고, 서로 연관성 높은 Class들을 응집도에 따라 그룹화 하여 분류한다. 이를 통해 시스템의 Logical한 View를 Top Level에서 볼 수 있다.

5. Component Diagram

Component Diagram은 System의 Component가 어떻게 연결되었는지 보여준다. Provide interface와 Required interface를 통해 Component간 어떤 기능을 외부로 제공해주는지, 또는 요구하는 기능은 무엇인지 알 수 있다. 단위 Component가 동작하기 위해 다른 Component로 부터 어떤 기능을 제공 받아야 하는지 보여준다.

6. Composite Structure Diagram

Component의 내부 포함 관계를 표현한다. Component 내부의 연결 관계를 구체적으로 보여주기 위한 Diagram 이다.

7. Deployment Diagram

Deployment Diagram은 Run Time시 운용되는 Hardware들의 관계를 표현한다. Run Time에 Software Component 들을 Hardware에 배치한 모습을 표현한다.

8. Sequence Diagram

Object간 어떠한 communication 으로 시스템에게 요청된 요구 사항을 달성하는지 Flow로 보여준다. Use case 시나리오 중 하나에 대하여 Object간 상호 Interaction을 보여준다. 각각의 Use case 시나리오 별 Sequence Diagram이 작성된다. 각 Use case 별 상호 작용하는 Object들이 다르고, 호출 되는 Operation이 다르기 때문이다.

하기의 Operator를 사용하여 Sequence 상의 Switch, If, Else, For, Break 동작을 표현할 수 있다. 가장 많이 사용하는 대표적인 것들을 살펴보자.

8.1 alt Fragment

alt Fragment 는 Switch Statement와 유사하다. alternative sequence를 표현한다 하기에서 Status 에 따라 다른 동작을 수행하도록 했다.

8.2 opt Fragment

opt Fragment는 If문과 유사하다. If문에 조건의 True일 경우 Framework 안의 동작을 수행한다.

8.3 loop Fragment

반복 수행되는 Sequence를 표현할 때 사용된다. Loop 조건문 만큼 수행하는데 하기 Guard 조건이 참인 경우에만 수행한다.

8.4 break Fragment

Exception Handling 동작과 유사하다. Break의 조건문이 참인 경우, Seq 수행을 종료하고 빠져나온다.

Loop와 Break를 하기와 같이 Combination하여 사용할 수 있다. Password가 3회 틀리면, Break를 통해 error message를 전달하고, 수행이 종료된다.

9. State Diagram

시스템의 State 변화를 표현한다. System의 State가 변하는 조건을 표현하고, State 별 Transition하는 Next State 를 표현한다. 하기는 Cruising System에 대한 State Diagram 이다.

10. Activity Diagram

Activity Diagram은 System의 Flow를 표현한다. 각 Role 마다 Activity들을 하기와 같이 나타낼 수 있다.

반응형