Behaviorl model (행동 모델)
There are two types of behavioral models.
→ 행동 모델에는 두 가지 유형이 있습니다.
First, there are behavioral models used to represent the underlying details of a business process portrayed by a use-case model.
→ 첫 번째로, 유스케이스 모델로 표현된 비즈니스 프로세스의 세부 내용을 나타내기 위해 사용되는 행동 모델이 있습니다.
In UML, interaction diagrams (sequence and communication) are used for this type of behavioral model.
→ UML에서는 이 유형의 행동 모델을 위해 상호작용 다이어그램(시퀀스, 커뮤니케이션 다이어그램)이 사용됩니다.
Second, a behavioral model is used to represent the changes that occur in the underlying data.
→ 두 번째로, 행동 모델은 시스템 내부 데이터에 발생하는 변화를 표현하는 데 사용됩니다.
UML uses behavioral state machines for this.
→ UML에서는 이를 위해 상태 머신(state machine)을 사용합니다.
Traditionally, behavioral models have been used primarily during design, where analysts refine the behavioral models to include implementation details.
→ 전통적으로 행동 모델은 주로 설계 단계에서 사용되며, 이때 분석가들은 구현 세부사항까지 포함시키기 위해 모델을 다듬습니다.
For now, our focus is on what the dynamic view of the evolving system is and not on how the dynamic aspect of the system will be implemented.
→ 현재는 시스템의 동적인 모습이 무엇인지에 초점을 두며 어떻게 구현될 것인지는 아직 고려하지 않습니다.
⭐ 행동 모델 2가지
- 유스케이스 모델로 표현된 비즈니스 프로세스의 세부 내용을 나타내기 위한 행동 모델
→ 상호작용 다이어그램 (시퀀스 다이어그램, 커뮤니케이션 다이어그램)
2. 시스템 내부 데이터에 발생하는 변화를 표현
→ 상태 머신
시퀀스 다이어그램
메시지와 객체
Each object also can send and receive messages.
→ 각 객체는 메시지를 보내고 받을 수 있습니다.
Messages are information sent to objects to tell an object to execute one of its behaviors.
→ 메시지는 객체에게 특정 행동을 수행하라는 명령 정보를 전달하는 것입니다.
시퀀스 다이어그램 (Sequence Diagrams)
They illustrate the objects that participate in a use case and the messages that pass between them over time for one use case.
→ 시퀀스 다이어그램은 유스케이스에 참여하는 객체들과 그들 사이를 오가는 메시지 흐름을 시간 순서대로 보여줍니다.
A sequence diagram is a dynamic model that shows the explicit sequence of messages that are passed between objects in a defined interaction.
→ 시퀀스 다이어그램은 동적 모델로, 객체 간 정해진 상호작용에서 메시지가 전달되는 구체적인 순서를 표현합니다.
시나리오별 다이어그램 구성
Usually each analyst develops a set of instance sequence diagrams, each of which depicts a single scenario within the use case.
→ ⭐ 보통 분석가는 유스케이스 내의 각각의 시나리오에 대해 개별 시퀀스 다이어그램을 작성합니다.
시퀀스 다이어그램 특징 정리
- 객체는 특정한 시간에 생성된 후 일정 시간 경과 후 소멸
- 이를 위해 시퀀스 다이어그램은 객체의 생명선을 정의함 (수직선 상의 박스와 선으로 표현)
- 화살표는 메세지를 의미 (메세지의 표시: 동기, 비동기)
- 행위자는 시퀀스 다이어그램 외부에 존재
시퀀스 모델
- 시퀀스 모델은 시스템의 동적인 측면을 모델링하는 방법
- 시간의 흐름에 따른 객체간의 교류 (communication)을 표현
- 상태 다이어그램은 단일 객체를 대상으로 한 반면, 시퀀스 다이어그램은 다수의 객체를 대상으로 함
- 객체들 사이의 교류는 특정 시퀀스 내에서 발생하며, 시퀀스 시작과 끝에는 시간이 소요
CarOwner, Carkey, Car (예제)
- CarOwner → CarKey: 버튼 입력
- CarKey → Car: 무선 통신으로 버튼 입력 전달
- Car → BlinkLights, Beep: 신호 전송 (UML에서 <<send>>는 신호 전송 의미)
작은 동그라미는? (◯):
→ 포트(port) 또는 인터페이스 연결 지점
→ 클래스 내부의 구성요소가 외부와 소통하는 접점
→ CarKey는 ButtonPad와 포트를 통해 연결되어 있고, 또 다른 포트를 통해 WirelessConnection으로 연결된다.
등장 객체 (Lifelines)
- :CarOwner – 자동차 키를 조작하는 사용자
- :CarKey – 버튼을 눌렀을 때 메시지를 생성하고 처리
- :Car – 메시지를 받아 차량을 잠금(lock)
메세지 흐름 (중요)
- CarOwner → CarKey : getButtonPress(b)
- CarOwner가 "잠금(lock)" 버튼을 누름
- 버튼 입력(b)을 CarKey에 전달함
- CarKey → Car : processKeyMessage(b)
- CarKey가 해당 버튼 메시지를 Car로 전송함
- Car 내부 처리
- 메시지 b = "lock"일 경우:
- lock() 메서드 실행 → 차량 잠금
- <<signal>> BlinkLights → 비상등 깜빡임
- <<signal>> Beep → 경고음 발생
- 메시지 b = "lock"일 경우:
- Car → CarOwner
- BlinkLights, Beep 신호가 사용자에게 전달됨 (간접적 피드백)
자판기 클래스 다이어그램& 시퀀스 다이어그램
Framing an interaction occurrence in a sequence diagram
- ref 프레임: 하위 시나리오를 재사용하거나 묶어서 처리할 때 사용됨 → 이 예에서는 releaseSoda ~ receiveSoda 절차가 ref 프레임으로 처리되어 있다
Alternative의 표현
등장 객체 (Lifelines)
- :Customer – 고객
- :Front – 자판기의 사용자 인터페이스
- :Register – 결제 및 잔돈 처리 담당
- :Dispenser – 음료 재고 확인 및 배출
주요 흐름
- 고객이 현금과 음료 선택을 입력 (accept(cash, selection))
- Front가 Register에 고객 입력 전달 (getCustomerInput(cash, selection))
- Register는 다음 두 가지를 확인함
- 잔돈 반환 가능 여부 (checkForChange)
- 선택한 음료 재고 여부 (checkAvailability)
⭐조건 분기 (alt 프레임)
1. 잔돈 부족 (no change)
- 잔돈 반환 불가 → 현금 반환 (returnCash)
- 메시지 출력: "Use Correct Change"
- 거래 종료
2. 음료 품절 (sold out)
- 재고 없음 → 현금 반환 (returnCash)
- 메시지 출력: "Sold Out"
- 거래 종료
3. 정상 구매 (else)
- 금액 갱신 (update(cash, price))
- 잔돈 반환 (receiveChange)
- 음료 배출 (releaseSoda)
- 고객이 음료 수령 (receiveSoda)
- 거래 종료
Parallel sequence(병렬 시퀀스)의 표현
특이사항
- par 프레임: 잔돈 반환과 음료 배출이 동시에 일어남을 의미 (병렬 처리)
- alt 대신 조건문을 메세지 옆 주석으로 처리한 형식
정상 처리 흐름 (par 병렬 프레임 내)
- 조건: [cash > price]
- 잔돈 반환 (receiveChange)
- 동시에
- 금액 정보 갱신 (update)
- 음료 배출 (releaseSoda)
- 고객이 음료 수령 (receiveSoda)
- 트랜잭션 종료
커뮤니케이션 vs 시퀀스
시퀀스 다이어그램
- 객체 간의 교류를 시간 순서에 초점을 둠
- 시간에 따른 배열
통신 다이어그램
- 교류하는 객체의 전체적인 조직과 상황(context)에 초점을 맞춤
- 공간에 따른 배열
통신 다이어그램 구성요소
1. Actor (행위자)
- 시스템 외부에 있으며 시스템으로부터 이익을 얻는 사람 또는 시스템
- 메시지를 보내거나 받으며 협업에 참여함
- 기본적으로 막대 그림(사람 아이콘)으로 표시
- → 비인간 행위자는 <<actor>>가 들어간 사각형으로 표시
2. Object (객체)
- 메시지를 보내고 받는 협업에 참여하는 객체
- 형식: anObject : aClass 형태로 표기됨
3. Association (연관 관계)
- 행위자와 객체 또는 객체들 사이의 관계를 나타냄
- 메시지를 주고받는 경로로 사용됨
- 시각적으로는 실선으로 표현
4. Message (메시지)
- 객체 간 정보를 전달함
- 방향은 화살표로 표시됨
- 순서는 시퀀스 번호로 구분됨
- 예: 1: aMessage
5. Guard Condition (조건문)
- 메시지가 전송되기 위한 조건을 나타냄
- 형식: [조건] 메시지
- 예: 1: [조건] aMessage
6. Frame (프레임)
- 커뮤니케이션 다이어그램의 전체 맥락 또는 시나리오 이름을 감싸는 구조
커뮤니케이션 다이어그램의 구성
diagram kind | 다이어그램의 종류 (예: interaction) |
frame heading | 다이어그램의 이름 (예: Online Bookshop) |
diagram frame | 다이어그램 전체를 감싸는 외곽 프레임 |
name of owning element | 다이어그램을 포함하는 네임스페이스 또는 클래스 이름 |
lifeline | 객체나 액터의 생명선 (예: 사람 아이콘, :Online Bookshop) |
lifeline name | 생명선의 식별 이름 (예: b, sc[customer]) |
class name | 해당 객체가 속한 클래스 이름 (예: Book, Shopping Cart) |
selector | 해당 객체가 어떤 조건으로 선택되는지를 명시 (예: [customer]) |
message | 객체 간 전송되는 메시지 (예: find_books(), checkout()) |
sequence expression | 메시지의 순서를 나타냄 (예: 1, 1.1, 2.2) |
iteration | 반복되는 메시지를 표시 (예: 1*) |
guard | 조건이 참일 때만 메시지가 전달됨 (예: [order complete]) |
'💾 lecture > 소프트웨어분석 및 설계' 카테고리의 다른 글
[소프트웨어분석 및 설계] UP Modeling 기법 (3) | 2025.06.29 |
---|---|
[소프트웨어분석 및 설계] UML과 OOP (0) | 2025.06.29 |
[객체 지향 설계와 분석을 위한 UML 기초와 응용] 8장 상태 다이어그램 (0) | 2025.04.15 |
[객체 지향 설계와 분석을 위한 UML 기초와 응용] 4장 연습문제 (0) | 2025.04.12 |
[객체 지향 설계와 분석을 위한 UML 기초와 응용] 3장 연습문제 (0) | 2025.04.12 |