235. 시퀀스 다이어그램 (Sequence Diagram) - UML 동적 다이어그램 상호작용 시간 흐름 라이프라인 메시지 동기 비동기 통신 시스템 워크플로우
핵심 인사이트: (233번 클래스 다이어그램의 반대) 233번에서 멈춰있는 뼈대 엑스레이(클래스 다이어그램)를 잘 그렸다. 근데 사장님이 묻는다. "야, 뼈대 튼튼한 건 알겠는데, 손님이 결제 버튼을 누르면 1초 뒤에 무슨 일이 터지고, 2초 뒤엔 돈이 빠져나가고, 3초 뒤에 영수증이 뜨는 그 '시간의 흐름'에 따른 통신 과정은 어떻게 증명할래?!" "아 놔! 엑스레이는 시간이 멈춰있어서 그건 못 보여준다고!! 당장 '동영상 촬영 카메라(동적 다이어그램)'를 꺼내!! 위에서 아래로 흘러가는 시간(Time) 선을 길게 쭉 그어놓고, 손님, 결제기, DB 이 세 놈이 시간에 따라 핑퐁치듯 메시지(함수)를 쏘고 받는 걸 화살표로 그려내!! 그럼 버튼 누르고 영수증 뜰 때까지 누가 누구한테 언제 명령을 내리는지 영화 보듯이 쫙 보이잖아!!" 객체들이 살아서 펄떡이며 시간의 흐름에 따라 핑퐁을 치는 시나리오 영화, 시퀀스 다이어그램이다.
Ⅰ. 뼈대만으론 부족하다 (동적 다이어그램의 필요성)
- 233번 **클래스 다이어그램(정적)**은 병원의 조직도(원장 밑에 과장, 과장 밑에 의사)를 보여줍니다.
- 하지만 응급 환자가 들어왔을 때 10초 만에 접수처 ➜ 의사 ➜ 수술실로 데이터(환자)가 흘러가는 **'시간에 따른 업무 프로세스'**를 보여주려면 뼈대 도면으로는 불가능합니다.
- 여기서 시간(Time)이라는 4차원 개념을 투입한 상호작용(Interaction) 동적 다이어그램 4대장(시퀀스, 커뮤니케이션, 상호작용 개요, 타이밍)이 등판합니다. 그중 압도적 1위가 시퀀스입니다.
Ⅱ. 시퀀스 다이어그램 (Sequence Diagram)의 개념 🌟
- 개념: 시스템의 객체(Object)들이 어떠한 특정 기능(예: ATM 출금 기능)을 수행하기 위해, **'시간의 흐름(위에서 아래로)'**에 따라 순차적으로 서로 어떤 메시지(함수 호출)를 주고받으며 상호작용하는지를 영화 대본처럼 시각적으로 표현한 다이어그램입니다.
- 특징: 객체지향 설계에서 유스케이스(요구사항) 명세서를 구체적인 코드(메서드 통신) 레벨로 구체화할 때 가장 많이 그리는 족보입니다.
Ⅲ. 시퀀스를 이루는 4대 연기자(구성 요소) 🌟 핵심 기출 🌟
도면 위쪽(X축)에 객체들이 나란히 서고, 아래쪽(Y축)으로 시간이 흘러갑니다.
1. 객체 (Object)와 생명선 (Lifeline)
- 객체 (네모 상자): 위쪽에
회원,장바구니,DB라고 네모 상자를 나란히 그립니다. (영화의 주인공들) - 생명선 (Lifeline, 점선
---): 각 네모 상자 밑으로 길게 뻗은 점선입니다. 이 점선이 아래로 내려갈수록 **시간이 미래로 흘러가고 있음(Y축=시간)**을 뜻합니다.
2. 활성 구간 (Activation / 실행 상자)
- 점선(생명선)을 따라가다 보면 갑자기 길쭉한 직사각형 **'막대기 덩어리'**가 덧붙여 그려진 구간이 나옵니다.
- 의미: "이 막대기가 있는 시간 동안, 이 객체가 꿀 빨며 노는 게 아니라 실제로 CPU를 처먹으며 열심히 함수 연산(실행)을 하고 있음"을 뜻하는 실행(Activation) 상태 표시입니다. 일이 끝나면 막대기가 끝나고 다시 점선으로 돌아옵니다.
3. 메시지 (Message) - "통신 화살표" 🌟
주인공들끼리 대사를 치며 소통하는 선입니다. (화살표 모양이 코드 방식을 결정합니다.)
- 동기 메시지 (Synchronous 꽉 찬 화살표
▶): 화살표를 쏘고 나서, 쏜 놈이 멍때리며 대답이 올 때까지 멈춰서 무한 대기(Wait/Blocking)합니다. (일반적인 함수 호출) - 비동기 메시지 (Asynchronous 꺾쇠 화살표
>): 쪽지(이벤트)를 휙 던져놓고 대답 안 기다리고 쿨하게 지 할 일 하러 갑니다. (214번 EDA 비동기 통신) - 응답 메시지 (Reply 점선 화살표
<--): 일을 다 끝낸 놈이 원래 놈한테 "다 했어~"라고 결과를 던져주는 리턴(Return) 선입니다.
4. 객체 소멸 (X 마크)
- 1회용 객체(예: 보안 인증 토큰 객체)가 역할을 다하고 메모리에서 쓰레기 수집(GC) 되어 죽어버리는 시간 위치에 엑스(
X) 표시를 쾅 박아줍니다.
📢 섹션 요약 비유: **시퀀스 다이어그램(Sequence Diagram)**은 식당 주방의 **'요리 타임라인 핑퐁 시나리오 대본'**입니다. 233번 클래스 다이어그램이 식당의 조직도(점장, 주방장, 홀서빙)라면, 시퀀스는 **'위에서 아래로 흘러가는 초시계(생명선)'**를 켜놓고 요리 과정을 찍은 동영상입니다. 화면 위쪽 가로로 [홀서빙], [주방장], [고기 굽기 기계]가 나란히 서 있습니다. 시간이 0초일 때 홀서빙이 주방장에게 "스테이크 주문!" 이라는 화살표(메시지)를 쏩니다. 그럼 주방장 점선 밑에 굵은 막대기(활성 구간)가 짠 하고 생기면서 "아, 주방장이 이제부터 노는 게 아니라 요리(CPU 연산)를 시작했구나!"라는 걸 보여줍니다. 2초 뒤 주방장이 기계로 "불 켜라!" 꽉 찬 화살표(동기 메시지)를 쏘고, 고기가 구워질 때까지 멍때립니다. 10초 뒤 기계가 주방장에게 "다 구워짐!" 이라는 점선 화살표(응답 메시지)를 뱉으면, 주방장이 다시 홀서빙에게 접시를 넘기는 이 모든 시간 순서에 따른 핑퐁 대화가 화살표의 궤적으로 완벽하게 추적되는 마법입니다. 객체들이 살아서 펄떡이는 시간적 상호작용을 한 편의 영화처럼 증명해 내는 객체지향 동적 설계의 꽃입니다.