Skip to content

OO Analysis & Design

amazingguni edited this page Nov 28, 2017 · 2 revisions

OO Analysis & Design

UML이란

범용적으로 사용되는 시각적인 모델링 언어이다.

시스템에 대한 지식을 찾고 표현하기 위한 언어이자 개발하는데 도움을 줄 수 있는 도구이다.

구조 다이어그램과 동작 다이어그램으로 구분된다.

  • 구조 : class, object, composite, package, deploy diagram
  • 동작 : usecase, interaction, activity, state diagram

Use Case

개발할 시스템이 의도하는 동작을 기록한 것이다. Use case를 이용해서 시스템의 범위를 정하고 개발 과정을 계획하는데 사용한다.

Actor

시스템과 상호작용하는 외부 요소를 의미한다. 사용자일 수도, 관리자일 수도 있다.

Granularity of Use Case

Actor로부터 시스템에 요청이 오고 그 요청을 처리하기까지를 Actor의 관점으로 Use Case로 작성하는 것이 적절하다.

Use Case Description / Scenario

각 Use case를 상세하게 나열한 것을 의미하며 아래 사항들을 포함한다.

  • 이름
  • 구동하는 Actor
  • 상호작용하는 Actor
  • Precondition
  • Scenario
  • Postcondition
  • Alternative

Use Case Diagram

유스케이스 다이어그램은 유스케이스를 그려놓은 다이어그램이다. 여기서 유스케이스란 말 그대로 컴퓨터 시스템과 사용자가 상호작용을 하는 하나의 경우이다.

Relationship

  1. Actor 일반화
    • 여러 Actor가 같은 부모 Actor를 갇도록 하고 그 Use case를 상속받는다.
  2. include 관계
    • 여러 use case의 공통 부분을 뽑아낸 것
  3. exclude 관계
    • 기본 use case에 동작을 추가하여 확장하는 방법(좀더 optional하다)
    • 추가되는 usecase로부터 추가하는 usecase로 화살표를 향한다.

Class Diagram

클래스와 클래스 사이의 관계를 나타낸다.

Relationship

순서대로 weak -> strong relationship 이다.

  1. Dependency
    • 상대방 클래스에 대해서 알고 있는 수준
  2. Association
    • 반대쪽의 객체에 message를 보내는 관계
  3. Aggregation
    • 반대쪽 객체의 reference를 공유하는 관계
  4. Composition
    • 반대쪽 객체를 소유하고 있는 관계

Interaction Diagram

interaction diagram에는 sequence, communication, interaction overview, timing diagram이 있다.

보통 sequence diagram이 많이 사용된다.

Sequence Diagram

문제 해결에 필요한 객체를 정의하고 객체간 주고받는 메시지의 순서를 시간의 흐름에 따라 보여주는 diagram이다.

활성 객체와 메시지, 제어 사각형으로 구성되어 있다.

  • 활성 객체는 actor거나 시스템 내의 유효한 객체이다. lifeline을 가지고 있다.
  • 메시지는 다른 활성 객체간의 의사소통을 묘사하는데 필요하다.
  • 제어 사각형은 객체가 제어를 가지고 있다는 것과 어떤 종류의 정보를 처리하거나 다른 정보를 기다리고 있다는 것을 표시하기 위해 사용된다.

operater

  1. opt
    • 단일 조건이 맞으면 블럭 안이 실행됨
    • if, then
  2. alt
    • 두 개 이상의 조건에 의해 실행이 보호된다.
  3. loop
    • max, min, 반복 회수
    • 조건이 만족되는 동안 반복한다.
  4. break
    • loop를 빠져나온다.
  5. ref
    • 재사용 가능한 인터랙션을 참조

Communication diagram

상호 작용의 구조적인 측면을 나타낸 것이다. Class Diagram과 Sequence Diagram의 가교 역할을 한다.

Sequence Diagram처럼 시간 순서대로 그리지 않지만 메시지 교환을 잘 드러난다.

Workflow related to Use Case Description

Use case 하나가 sequence diagram 한 개로 실현된다.

  • 어떤 클래스들이 협력하여 하나의 use case를 실현하는지 설명한다.

State Machine Diagram

event에 의한 객체의 상태 변화를 나타낸다.

하나의 시작점과 하나 이상의 종료점이 있어야 합니다. 상태는 내부에 변수나 액티비티를 가질 수 있습니다.

Transition(전이)

객체의 상태가 다른 상태로 변경되는 것을 의미합니다.

Action

Transition이 이루어질 때 Action이 수행된다.(event/action 으로 작성된다)

Activity와는 다르다

Activity

Activity는 현재 상태에서 수행되는 연산을 의미한다.

Event

상태 전이를 촉발하는 모든 것을 의미합니다.

Event는 외부 객체로부터 받는 메시지, 시간이 흐름, 조건, 오류 등이 있을 수 있습니다.

Guard

event 앞에 붙이며 상태의 transition을 제어하는 조건이다.

  • [t = 15s] move 이런식

Timing Diagram

시간 경과에 따라 전체적인 시스템 동작을 표현하는 Diagram입니다.

Activity Diagram

액티비티와 액티비티 간의 제어 흐름을 보여주는 workflow를 나타내는 흐름도이다.

순차적인 제어의 흐름 뿐 아니라 병렬적으로 수행되는 활동과 분기가 이루는 대안들에 대해서도 표현할 수 있다.

Activity, Transition, Decision Point, Synchronization bar, Swim Lane 등으로 구성된다.

  • Swim Lane은 Activity의 책임이 누구에게 있는지를 나타낸다.

fork 노드는 병렬 흐름을 생성하고 join 흐름은 그 병렬 흐름을 동기화합니다.

Component Diagram

시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존관계를 나타내는 다이어그램입니다.

컴포넌트는 시스템의 재사용 가능한 구성요소입니다.

Provided Interface, Required Interface

provided interface는 컴퍼넌트가 제공하는 인터페이스이고 required interface는 다른 컴퍼넌트가 제공하는 인터페이스를 사용한다는 의미이다.

Application에서 Provided Interface를 구현하여 제공하면, Platform에서 정의한 구조 내에서 그 인터페이스를 호출합니다. 이는 Platform 에서 구현한 연산의 흐름이나 객체간의 상호작용에 따라 동작하게 하기 위해 필수적인 과정입니다.

Pluggable Object

required interface를 통해 컴퍼넌트/시스템에 전달되는 객체를 의미한다.

Deployment Diagram

실제 하드웨어적인 배치와 연결상태를 나타내는 diagram이다.

  1. Node
    • 노드는 SW 컴포넌트가 탑재되어 처리되는데 관련된 HW 자원을 의미합니다.
  2. Component
    • 컴포넌트는 독립적으로 배포되고 교체되며 재사용될 수 있는 SW조각를 의미합니다.
  3. Connection
    • 두 노드 사이의 물리적인 연결
  4. Artifact
    • 배치하고자 하는 S/W 산출물을 의미합니다.

Package Diagram

클래스와 같은 여러 모델 요소들을 그룹화 하여 패키지를 구성하고 패키지 사이의 관계를 표현하는 Diagram입니다.

UML Constructs for Parallel Processing

Activity Diagram을 사용할 수 있고, Statediagram을 객체 레벨에서 고려할 수 있을 것 같습니다.

Consistency

Use Case Model, Class Diagram

Class Diagram은 Use case를 실현하기 위하여 상호작용하는 클래스들의 관계를 표현한다.

Use Case Model, Sequence DIagram

Sequence DIagram은 Use case를 실현하는 특정 객체들 사이의 협력을 보여준다.

Sequence Diagram, Activity Diagram

Activity Diagram은 workflow를 보여주는것이고 Sequence Diagram은 actor와 object간의 interaction을 보여준다.

Activity Diagram, Use Case Diagram

Activity Diagram에서는 Use Case Diagram과는 다르게 Actor가 Use case를 함께 혹은 독립적으로 어떻게 사용할 수 있는지 여부를 알 수 있습니다.

Applying MVC style paradigm in drawing Sequence Diagram

Actor에게 message가 발생하면 View Component -> Control Component -> Model Layer로 메시지가 전달하게 됩니다.