observe_db

[객체지향설계] 7. Behavioral Modeling 본문

학교 공부/객체지향설계(3-1)

[객체지향설계] 7. Behavioral Modeling

쩡윤 2023. 5. 17. 21:45

개발 과정-분석

요구사항->비즈니스 프로세스 이해->domain 모델링->행위적 모델링

 

기능모델: 어떻게 비즈니스 시스템이 동작하고 시스템이 무엇을 하는지. 시스템의 외부 행위 관점을 서술

구조모델: 비즈니스 시스템에 의해 생성되고 사용되는 객체. 정보 시스템의 정적 관점. 클래스 레벨 관점

행위모델: 내부 동작이나 정보시스템의 직접적인 관점 서술. 객체 레벨 관점

 

행위 모델의 종류

- 비즈니스 프로세스의 잠재된 세부사항을 나타내는 모델(sequence diagram, communicatoin diagram)

- 잠재된 데이터의 변화를 나타내는 모델(behavior state machine)

행위 모델링의 목적

-구조모델링의 usecase들끼리 객체가 어떻게 협업하는지.

-비즈니스 프로세스의 내부적 관점

-시스템의 다양한 프로세스의 효과를 보여줌.

 

시스템의 직접적인 관점

-Activity Diagram

-Interaction Diagram(Sequence, Communication, Interaction overview)

-State Machine(Behavior, Protocol)

-Other(usecase)

 

구성요소

-Object: 클래스의 예시

-Attributes: 객체의 정보/데이터

-Operation: 객체의 동작, 메시지를 주고받음

-Message: 객체가 그 동작을 실행하게끔 객체에게 보내는 정보. 하나의 객체에서 다른 객체로 보내진다.

 

Sequence Diagram(순서 다이어그램)

Dynamic 모델

설명(use-case의 객체/객체간의 상호작용)

정의된 상호작용 안에서 객체들이 어떻게 메시지를 보내는지.

SD의 2가지 축(time line과 객체 집합)

2개의 형태(instance-세부 시나리오/generic-시나리오의 가능한 모든 대안)

 

Diagram Syntax

Actor: 시스템 외부의. 이익을 얻는 사람이나 시스템. 다이어그램 꼭대기 위치.

Object: 메시지를 주고받음. 다이어그램 꼭대기 위치.

Lifeline: 시퀸스 동안 객체의 생애를 나타냄.

Execution Occurrence: lifeline에 존재하는 좁은 사각형. 객체가 메시지를 주거나 받은 때를 나타냄.

Message: 객체 하나에서 다른것으로의 정보 순환. (가는건 solid, 오는건 dashed)

Object Destruction: 객체 lifeline의 마지막에 위치하여 존재하지 않음을 보여줌.

Frame: 다이어그램의 맥락을 묶음.

 

Building

  1. 다이어그램 맥락(context: 시스템, usecase이나 그 시나리오, 클래스의 동작) 결정
  2. 참여하는 객체 식별
  3. 각 객체의 lifeline 설정
  4. 메시지를 다이어그램의 위에서 아래로 정렬
  5. 각 객체의 execution occurrence를 추가
  6. 제약조건과 단편 정의
  7. 다이어그램 검증

Communication Diagrams

다른 관계들(generalizaion, association, aggregation)대신 메시지 전달 관계를 보여줌

객체간의 메시지 흐름을 강조. 시간이나 공각적인것 대신

 

Sequence Diagram과의 차이

- sequence는 시간이나 순서를 중요시. 다중 상호작용을 보인다

- 관계의 맥락을 보인다. 협업하는 객체들간의 제어 흐름 이해.

 

Elements

Acotr: benefit을 얻는 시스템 외부의 사람 또는 시스템.

Object: 메시지를 주고받는데에 참여함. 다이어그램의 꼭대기에 위치.

Association: actors와/나 객체의 관계를 보여줌. 메시지가 이것을 통해 전달.

Message: 한 객체에서 다른 객체로 정보 전달(convey)

Frame: 다이어그램의 맥락 지시

 

Building

  1. Context(맥락) 설정
  2. 어떤 객체/액터나 관계가 협업에 참여하는 객체 사이에 있는지 식별(객체는 class의 인스턴스. CRUDE
  3. 다이어그램 나열(객체와 관계를 같이 위치시킴. 교차하는 관계 최소화)
  4. 메시지 추가
  5. 다이어그램 검증

Interaction Oerview Diagram

고수준에서 상호작용의 주요 흐름을 리뷰할 기회

다양한 activity diagram(그대로 가져옴)

관계가 존재하는 한 공간에만 관점을 맞춤.

노드들이 상호작용하는 제어 흐름의 overview

 

State Machine

생애주기동안 클래스의 객체가 가능한 모든 상태(state)를 보여줌.

행위(behavioral)/Protocol로 구분

 

Behavioral State Machine(행위 상태 머신)

클래스의 생애주기의 세부 정보를 기술하는 직접적 모델

모든 객체를 사용하지 않음.

State(상태): 특정 시점에서 다른 객체와 가지는 속성이나 관계의 값

Events: 확실한 한 시점에서 일어나는 것. 객체의 상태를 변화시킴.

Transitions(전이): 한 상태에서 다른 상태로 변화하는 것.(조건 만족시)

Guard-Condition: 속성값에 표현되는 Boolean 표현. 전이를 유발

Actions: 최소단위, 분해되지 않고 중단되지 않는 프로세스

Activities: 최소 단위가 아니고, 분해될 수 있으며, 중단될 수 있는 프로세스

 

Diagram Syntax

State: 이름은 객체 상태를 나타냄.

Initial: 객체가 존재하기 시작하는 시점을 나타냄.

Final: activity의 완료를 나타냄.

Event: 상태의 변화를 촉발시키는 요인. 전이의 label로 사용됨

Transition: 처음 상태에서 다음 상태를 가리킴.

Frame: BSM의 맥락을 묶음.

 

객체 A는 B의 상태이다.(나는 심심하다. 차가 질주한다. 그는 자는 중이다. 등등)

 

일반적으로 하나의 블럭으로 표시하지만,

그 상태에서 어떤 이름의 동작을 하는지. 그 동작은 어떤 Action인지 표시할 수도 있다.

 

Event[guard-condition]/Action-expression 

(셋다 생략하는 것도 가능)

 

Protocol State Machine

클래스의 어떤 동작이 상태에서 호출되는지 명시

그 동작을 보이지 않은 객체의 명시된 event의 과정 보여줌.

복잡한 protocol을 보여줌.\클래스의 interface가 보여질 때.

 

가이드라인

  • Compex한 객체만 BSM을 만들어라.
  • 좌측 상단에 initial state를 배치
  • 우즉 하단에 final state를 배치
  • 간단하게, 그러나 의미있는 이름으로 상태를 명명하라
  • Question blck hole과 miracle states
  • guard condition은 상호 배타적이게
  • 전이는 메시지와 동작과 관계되게.

Building

  1. 문맥 설정.(class, subsystem. entire system)
  2. 객체의 initial, final, stable state 식별
  3. order 결정.
  4. event, action, guard condition 식별
  5. diagram 입증.
Comments