-
Notifications
You must be signed in to change notification settings - Fork 4
OO Analysis & Design
범용적으로 사용되는 시각적인 모델링 언어이다.
시스템에 대한 지식을 찾고 표현하기 위한 언어이자 개발하는데 도움을 줄 수 있는 도구이다.
구조 다이어그램과 동작 다이어그램으로 구분된다.
- 구조 : class, object, composite, package, deploy diagram
- 동작 : usecase, interaction, activity, state diagram
개발할 시스템이 의도하는 동작을 기록한 것이다. Use case를 이용해서 시스템의 범위를 정하고 개발 과정을 계획하는데 사용한다.
시스템과 상호작용하는 외부 요소를 의미한다. 사용자일 수도, 관리자일 수도 있다.
Actor로부터 시스템에 요청이 오고 그 요청을 처리하기까지를 Actor의 관점으로 Use Case로 작성하는 것이 적절하다.
각 Use case를 상세하게 나열한 것을 의미하며 아래 사항들을 포함한다.
- 이름
- 구동하는 Actor
- 상호작용하는 Actor
- Precondition
- Scenario
- Postcondition
- Alternative
유스케이스 다이어그램은 유스케이스를 그려놓은 다이어그램이다. 여기서 유스케이스란 말 그대로 컴퓨터 시스템과 사용자가 상호작용을 하는 하나의 경우이다.
- Actor 일반화
- 여러 Actor가 같은 부모 Actor를 갇도록 하고 그 Use case를 상속받는다.
- include 관계
- 여러 use case의 공통 부분을 뽑아낸 것
- exclude 관계
- 기본 use case에 동작을 추가하여 확장하는 방법(좀더 optional하다)
- 추가되는 usecase로부터 추가하는 usecase로 화살표를 향한다.
클래스와 클래스 사이의 관계를 나타낸다.
순서대로 weak -> strong relationship
이다.
- Dependency
- 상대방 클래스에 대해서 알고 있는 수준
- Association
- 반대쪽의 객체에 message를 보내는 관계
- Aggregation
- 반대쪽 객체의 reference를 공유하는 관계
- Composition
- 반대쪽 객체를 소유하고 있는 관계
interaction diagram에는 sequence, communication, interaction overview, timing diagram이 있다.
보통 sequence diagram이 많이 사용된다.
문제 해결에 필요한 객체를 정의하고 객체간 주고받는 메시지의 순서를 시간의 흐름에 따라 보여주는 diagram이다.
활성 객체와 메시지, 제어 사각형으로 구성되어 있다.
- 활성 객체는 actor거나 시스템 내의 유효한 객체이다. lifeline을 가지고 있다.
- 메시지는 다른 활성 객체간의 의사소통을 묘사하는데 필요하다.
- 제어 사각형은 객체가 제어를 가지고 있다는 것과 어떤 종류의 정보를 처리하거나 다른 정보를 기다리고 있다는 것을 표시하기 위해 사용된다.
- opt
- 단일 조건이 맞으면 블럭 안이 실행됨
- if, then
- alt
- 두 개 이상의 조건에 의해 실행이 보호된다.
- loop
- max, min, 반복 회수
- 조건이 만족되는 동안 반복한다.
- break
- loop를 빠져나온다.
- ref
- 재사용 가능한 인터랙션을 참조
상호 작용의 구조적인 측면을 나타낸 것이다. Class Diagram과 Sequence Diagram의 가교 역할을 한다.
Sequence Diagram처럼 시간 순서대로 그리지 않지만 메시지 교환을 잘 드러난다.
Use case 하나가 sequence diagram 한 개로 실현된다.
- 어떤 클래스들이 협력하여 하나의 use case를 실현하는지 설명한다.
event에 의한 객체의 상태 변화를 나타낸다.
하나의 시작점과 하나 이상의 종료점이 있어야 합니다. 상태는 내부에 변수나 액티비티를 가질 수 있습니다.
객체의 상태가 다른 상태로 변경되는 것을 의미합니다.
Transition이 이루어질 때 Action이 수행된다.(event/action 으로 작성된다)
Activity와는 다르다
Activity는 현재 상태에서 수행되는 연산을 의미한다.
상태 전이를 촉발하는 모든 것을 의미합니다.
Event는 외부 객체로부터 받는 메시지, 시간이 흐름, 조건, 오류 등이 있을 수 있습니다.
event 앞에 붙이며 상태의 transition을 제어하는 조건이다.
-
[t = 15s] move
이런식
시간 경과에 따라 전체적인 시스템 동작을 표현하는 Diagram입니다.
액티비티와 액티비티 간의 제어 흐름을 보여주는 workflow를 나타내는 흐름도이다.
순차적인 제어의 흐름 뿐 아니라 병렬적으로 수행되는 활동과 분기가 이루는 대안들에 대해서도 표현할 수 있다.
Activity, Transition, Decision Point, Synchronization bar, Swim Lane 등으로 구성된다.
- Swim Lane은 Activity의 책임이 누구에게 있는지를 나타낸다.
fork 노드는 병렬 흐름을 생성하고 join 흐름은 그 병렬 흐름을 동기화합니다.
시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존관계를 나타내는 다이어그램입니다.
컴포넌트는 시스템의 재사용 가능한 구성요소입니다.
provided interface는 컴퍼넌트가 제공하는 인터페이스이고 required interface는 다른 컴퍼넌트가 제공하는 인터페이스를 사용한다는 의미이다.
Application에서 Provided Interface를 구현하여 제공하면, Platform에서 정의한 구조 내에서 그 인터페이스를 호출합니다. 이는 Platform 에서 구현한 연산의 흐름이나 객체간의 상호작용에 따라 동작하게 하기 위해 필수적인 과정입니다.
required interface를 통해 컴퍼넌트/시스템에 전달되는 객체를 의미한다.
실제 하드웨어적인 배치와 연결상태를 나타내는 diagram이다.
- Node
- 노드는 SW 컴포넌트가 탑재되어 처리되는데 관련된 HW 자원을 의미합니다.
- Component
- 컴포넌트는 독립적으로 배포되고 교체되며 재사용될 수 있는 SW조각를 의미합니다.
- Connection
- 두 노드 사이의 물리적인 연결
- Artifact
- 배치하고자 하는 S/W 산출물을 의미합니다.
클래스와 같은 여러 모델 요소들을 그룹화 하여 패키지를 구성하고 패키지 사이의 관계를 표현하는 Diagram입니다.
Activity Diagram을 사용할 수 있고, Statediagram을 객체 레벨에서 고려할 수 있을 것 같습니다.
Class Diagram은 Use case를 실현하기 위하여 상호작용하는 클래스들의 관계를 표현한다.
Sequence DIagram은 Use case를 실현하는 특정 객체들 사이의 협력을 보여준다.
Activity Diagram은 workflow를 보여주는것이고 Sequence Diagram은 actor와 object간의 interaction을 보여준다.
Activity Diagram에서는 Use Case Diagram과는 다르게 Actor가 Use case를 함께 혹은 독립적으로 어떻게 사용할 수 있는지 여부를 알 수 있습니다.
Actor에게 message가 발생하면 View Component -> Control Component -> Model Layer로 메시지가 전달하게 됩니다.