이번 포스팅에서는 지난번에 이어 차량 모델링에 대해 알아보고자 합니다.
차량 모델링에 필요한 행위와 동작 절차에 대한 모델링에 대해 살펴보겠습니다.
전체글 보기
- MBSE Example #1: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML)
- MBSE Example #2: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML)
- MBSE Example #3: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML)
- MBSE Example #4: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML)
지난 포스팅에서는 시스템 모델링을 위해 필요한 패키지 다이어그램과 요구사항 다이어그램, 그리고 외부 환경 정의를 위해 블록 정의 다이어그램을 이용하여 트레이드오프 분석을 위한 준비과정을 살펴보았습니다.
만약 이전글에 대해 다시 보고 싶으시면 다음 내용을 참고하시면 됩니다.
MBSE Example: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML) (1)
이번 포스팅에서는 지난번에 이어 차량 모델의 행위와 동작 절차를 모델링하는 방법을 살펴보겠습니다. 아울러 SysML에 대한 전반적인 표기법은 다음 포스팅을 참고하시면 됩니다.
1. 차량 운행을 위한 유즈케이스 다이어그램 (Use Case Diagram)
다음 그림은 차량 운행을 위한 유즈케이스 다이어그램입니다. 이는 차량 운행과 관련된 상위 수준의 기능을 표현하며, 주요 이해관계자인 승객(Passenger)과 운전자(Driver) 관점에서의 차량 동작을 유즈케이스 다이어그램으로 표현하고 있습니다. 즉, 이해관계자가 다양하면 다양할 수도록 더 많은 유즈케이스(Use Case)가 있을 수 있으며, 각 유즈케이스는 보다 상세하게 표현할 수도 있습니다.
- 차량 탑승자(Vehicle Occupant)는 승객(Passenger)과 운전자(Driver)를 자식 노드로 가집니다. 그리고 차량 탑승자는 차량 탑승(Enter Vehicle)이라는 유즈케이스와 연관(Association) 관계를 가지는데, 이는 "차량 탑승자는 차량 탑승이라는 행위에 참여합니다."라는 의미입니다. 즉, 모든 차량 탑승자는 차량 탑승이라는 행위를 수행할 수 있습니다. 그밖에 차량 하차(Exit Vehicle), 차량 액세서리 제어(Control Vehicle Accessory)와 같은 행위에도 참여하고 있습니다.
- 승객(Passenger)과 운전자(Driver)는 모두 차량 탑승자(Vehicle Occupant)를 상속하고 있으며, 차량 탑승자가 참여하는 모든 행위에 참여합니다.
- 운전자(Driver)는 차량 탑승자의 행위도 참여하지만, 추가로 차량 운전(Drive Vehicle) 행위도 참여하게 됩니다.
- 차량 탑승(Enter Vehicle)과 차량 하차(Exit Vehicle)는 Open Door 행위와 포함(Include) 관계로 정의되어 있습니다. 이는 Enter Vehicle과 Exit Vehicle 행위가 수행되기 전에 반드시 Open Door 행위가 수행되어야 함을 의미합니다.
- 차량 액세서리 제어 행위는 공조 제어(Control Climate Control)와 엔터테인먼트 시스템 제어(Control Entertainment System)를 하위 행위로 상속관계로 정의되어 있습니다. 즉, 공조 제어와 엔터테인먼트 시스템 제어 간 공통 행위가 존재한다는 의미입니다.
- 차량 운전(Drive Vehicle)은 내부적으로 마찰 손실(Loss of Traction)이라는 확장 지점(Extension Points)을 통해 확장되며, 이를 위해 Perform Anti-Lock Braking 행위와 확장(Extend) 관계로 정의되어 있습니다. 이는 차량 운전 중 확장 지점에 대해 Perform Anti-Lock Braking을 추가로 수행할 수 있다는 것을 의미합니다.
2. 차량 운전 동작을 위한 시퀀스 다이어그램 (Sequence Diagram)
다음 그림은 운전자(Driver)와 차량(Vehicle) 간의 상호작용을 시간 순서에 따라 시각적으로 표현합니다. 이때 시간 흐름은 다이어그램 내에서 세로축을 따라 위에서 아래 방향으로 진행합니다.
위 시퀀스 다이어그램에서 주요 상호작용은 다음과 같습니다.
- Turn On Vehicle(차량 전원 켜기)
• 첫 번째 상호작용으로, 차량의 전원을 켜는 행동입니다. - 병렬 동작 (Parallel Interactions)
• Control Power(동력 제어), Control Brake(제동 제어), Control Direction(방향 제어)는 병렬(parallel, par)로 수행됩니다.
• 병렬 처리로 표시되며, 각 동작이 독립적으로 실행됨을 나타냅니다. - Control Power의 대안 (Alternative)
• Control Power 상호작용은 대안(alternative, alt)으로 표시됩니다.
• 차량 상태에 따라 Control Neutral Power(중립 동력 제어), Control Forward Power(전진 동력 제어), 또는 Control Reverse Power(후진 동력 제어) 중 하나가 실행됩니다.
• 차량 상태는 [조건] 형식으로 나타나며, 상태는 4.3.8절의 상태 머신 다이어그램에서 명확히 정의됩니다. - Turn Off Vehicle(차량 전원 끄기)
• 위 상호작용들이 끝난 후 차량 전원을 끄는 동작이 수행됩니다.
다이어그램의 ref 키워드는 보다 상세한 상호작용을 참조하는 것을 나타내며, Turn On Vehicle 상호작용은 다음 시퀀스 다이어그램을 참조하게 됩니다.
여기서 운전자는 차량에 차량 시동을 요청(start vehicle())하면, 차량은 시동 완료(vehicle on())를 응답으로 회신한다는 의미가 포함되어 있습니다. 이때 시동 요청 메시지는 동기화 메시지(Synchronous Message)로, 이는 요청에 대한 응답을 수신할 때까지 대기한다는 의미입니다. 반면, 차량에서 송신하는 시동완료 메시지는 비동기화 메시지(Asynchronous Message)로서, 이는 송신 측이 메시지를 보낼 때 수신 측으로부터의 응답을 기다리지 않고 다음 작업을 진행할 수 있습니다.
3. 동력 제어 활동 다이어그램 (Activity Diagram)
시퀀스 다이어그램은 위의 Turn On Vehicle과 같이 서로 다른 개체 간 상호작용에 대한 제어 흐름을 표현할 때 유용합니다. 하지만 동력 제어(Control Power)나, 브레이크 제어(Control Brake), 방향 제어(Control Direction)와 같이 개체 내부에서 연속적인 동작은 표현할 수 없습니다. 이때는 활동 다이어그램(Activity Diagram)이 보다 효과적으로 표현될 수 있으며, 입력과 출력의 복잡한 흐름을 처리하는 데에도 적합합니다.
- 활동 다이어그램에서는 시퀀스 다이어그램과 유사하게 개체별 활동의 범위를 표현할 수 있는데, 이것을 스윔레인(Swimlane)이라고 합니다. 이를 통해 운전자(Driver)와 차량(Vehicle) 개체의 활동 범위를 표현하고 있습니다. 또한 최종적으로 차량(Vehicle)은 출력으로 토크(Torque)를 출력하고 있습니다.
- 활동 다이어그램에서는 시작 노드(Initial Node)와 종료 노드(Activity Final Node)를 이용하여 행위의 시작과 종료를 나타냅니다.
- 활동 제어 흐름은 먼저 운전자(Driver)가 차량에 시동 요청을 하기 위해 2개의 작업이 동시에 진행됩니다.
- 가속 페달 제어 (Control Accelerator Position)
- 변속기 레버 제어 (Control Gear Select) - 가속 페달 제어(Control Accelerator Position)는 운전자가 가속 페달을 조정하여 차량에 가속 명령(Accelerator Cmd)을 연속적으로 송신합니다.
- 변속기 레버 제어(Control Gear Select)는 기어 변속값을 차량으로 송신합니다.
- 그런 다음 차량(Vehicle)에서는 동력 제공(Provide Power) 활동이 운전자의 가속 명령과 기어 변속값을 수신하여 최종적으로 토크(Torque) 값을 생성하게 됩니다.
- 그 과정에서 차량은 시동 꺼짐(Ignition Off) 이벤트를 수신하게 되면, 활동이 종료되도록 설계되어 있습니다.
- 위 활동 다이어그램에서 보는 바와 같이 활동 다이어그램은 반드시 시작 노드와 종료노드 그리고 활동에 대한 흐름이 명시되어야 하며, 이때 행위에 따른 제어 흐름은 점선 화살표로 연결되며, 입출력 신호 전달과 같은 데이터 흐름은 직선 화살표로 표현됩니다.
4. 차량 주행 상태를 위한 상태 기계 다이어그램 (State Machine Diagram)
시스템은 수행하는 기능(활동)에 따라 서로 다른 상태를 가지게 됩니다. 예를 들어 차량 그 자체는 변화가 없지만, 시동이 걸린 상태, 주행 중인 상태 등과 같이 개체 자체는 변화가 없지만, 수행되는 활동과 수신하는 입력에 따라 각기 다른 상태로 변화할 수 있습니다. 이러한 개체의 상태 변화는 상태 기계 다이어그램(State Machine Diagram)을 이용하여 표현할 수 있습니다.
- 제일 처음 차량 상태는 시동 꺼짐(Ignition Off) 상태입니다. 이때 시동 켜짐(Ignition On) 또는 차량 시동 요청(Start Vehicle)이 수행되면, 차량은 Vehicle On 상태로 천이하게 됩니다.
- 모든 상태는 진입 동작(Entry)과 중간 수행 동작(Do), 그리고 탈출 동작(Exit)을 표현할 수 있으며, Vehicle On 상태의 진입 동작은 입력 트리거인 ignition on 또는 Start Vehicle 상태를 확인하는 Check Status 동작을 수행하고, 이를 만족하는 경우, 상태는 Vehicle On 상태로 전환됩니다. 또한 Vehicle On 상태로 전환되면 중간 수행 동작인 Provide Power 동작이 수행됩니다.
- Provide Power 동작은 다시 주어진 조건에 따라 3개의 상태값을 갖게 되는데, 먼저 처음에는 중립(Neutral) 상태로 시작합니다. 그러다 변속기 레버 값이 forward로 선택되면 차량 상태는 Vehicle On 상태의 하위 상태인 전진(Forward) 상태로 전환됩니다. 또한 변속기 레버 값이 reverse로 선택되면 차량 상태는 Vehicle On 상태의 하위 상태인 후진(reverse) 상태로 전환됩니다.
- 전진 상태와 후진 상태에서 다시 변속기 레버값이 중립으로 선택되면, 처음 상태인 중립 상태로 회귀하게 됩니다.
- 마지막으로 차량 상태가 Vehicle On 상태에서 Turn Off Accessories 활동이 트리거 되면 Vehicle On 상태에서 Vehicle Off 상태로 전환됩니다.
마치며...
이번 포스팅에서는 지난번에 이어 차량 행위에 대해 SysML을 이용하여 모델링하는 사례를 살펴보았습니다.
내용이 정확하게 실제 사례와 일치하지 않은 부분이 있고, 모호하게 정의된 부분이 있지만, 사례가 갖는 한계이니 이해할 수 있는 부분이라 생각됩니다.
다음 포스팅에서는 좀 더 상세하게 차량 정의와 활동에 대한 정의를 좀 더 상세하게 표현하는 예제를 살펴보도록 하겠습니다.
긴 글 읽어 주셔서 감사합니다.
<<이전글 다시 보기
MBSE Example: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML) (1)
'System Engineering > SysML' 카테고리의 다른 글
MBSE Example #4: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML) (1) | 2024.12.06 |
---|---|
MBSE Example #3: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML) (0) | 2024.12.02 |
MBSE Example #1: 차량 가속도 vs. 연비 - 트레이드오프 분석 (with SysML) (0) | 2024.11.30 |
SysML Reference Guide: 파라메트릭 다이어그램(Parametric Diagram) - 제약 사항 표현 (1) | 2024.11.28 |
SysML Reference Guide: 활동 다이어그램(Activity Diagram) - 제어 흐름 (Control Flow) 표현 (1) | 2024.11.27 |