UML 모델링 - 기능적 관점 : 사용자 관점에서 요구사항 중심으로 보는 것 ( 유스케이스 다이어그램 ) - 정적 관점 : 시간적인 흐름 없음, 시스템의 구조를 보는 것 ( 클래스 다이어그램 ) - 동적 관점 : 시간적인 흐름 있음, 객체의 소통이나 시스템의 처음과 끝 같은 시스템의 내부 동작을 보는 것 ( 시퀀스 다이어그램 )
동적 모델링을 하는 이유 - 시스템의 동작을 이해하기 위해서 -> 시스템의 객체들 사이의 인터렉션을 보고 이해 - 요구사항을 충족하는지 검증하기 위해서 - 시스템의 동작을 추적해서 문제 해결을 하기 위해서
동적 모델링의 다이어그램 - 시퀀스 다이어그램 (시스템 관점) : 객체들의 메세지(인터렉션) 순서를 이용해 어떻게 상호작용하는지 초점을 맞춰서 나타낸 것 - 상태 다이어그램 (객체 관점) : 하나의 객체가 이벤트 발생에 의해 어떻게 상태가 변화하는지에 초점을 맞춰서 나타낸 것 - 액티비티 다이어그램 (시스템 관점) : 객체보다는 시스템의 전체적인 흐름을 순차적으로 나타내는 것
시퀀스 다이어그램 (Sequence Diagram) - 객체들이 상호작용하는 인터렉션을 순서에 맞춰서 시각화한 것 - 클래스 다이어그램 기반으로 작성 (클래스 다이어그램만을 이용해서는 순서를 모르기 때문에 코딩을 구현할 수 없음)| - 시스템의 동적인 측면을 캡처한 것 - 동적 뷰(Dynamic View) - 각 클래스의 오퍼레이션을 파악하는데 유용
시퀀스 다이어그램의 구성 요소 - 액터 - 객체 -> Kim : Person Kim : 객체 이름 / Person : class 이름 / 명시되어있지 않음 : 자유 - 생명선 (life line) -> 객체의 생성, 소멸, 활성화될 때를 표현 (소멸시 생명선 아래에 X) -> 점선으로 표현 (위에서 아래) - 활성박스 (Activation Box) -> 객체가 다른 객체와 상호작용 하는 것을 표현 - 메세지 -> 객체간 주고받는 데이터를 표현 -> 일반적으로 요청(request)와 응답(response)로 구성 - 동기 메세지 : 요청을 보낸 후 반환이 올때까지 대기 (채워진 화살표 사용) - 비동기 메세지 : 요청을 보낸 후 반환을 기다리지 않음 - 자체 메세지 : 자기 자신에게 요청을 보내는 것 - 반환 메세지 : 요청에 응답하는 메세지 - 프레그먼트 -> 시퀀스 다이어그램에서 범위를 명시하기 위한 표현 (박스 형태) -> 대괄호로 조건 표현 ex. [N > 2000] - opt(옵션) : if, switch - alt(대한) : else if 같은 대안이 있는 조건문 - loop(반복) : 반복문, for, while - par(병렬) : 병렬처리, 동시에 수행
시퀀스 다이어그램 그리는 순서 1. 다이어그램의 범위 확정 2. 필요한 객체 요소 파악 3. 다양한 시나리오 고려 4. 구체적인 그림 그리기 - 프레임 생성, 라이프 라인을 왼쪽부터 배치, 메세지의 순서는 위에서 아래로 5. 다른 시나리오에 대한 시퀀스 다이어그램 그리기 6. 종합하여 하나의 시퀀스 다이어그램으로 종합하기
시퀀스 다이어그램의 장단점 - 장점 : 메세지의 순서나 시간 순서를 명확히 알 수 있음 객체 사이의 상호작용을 한눈에 볼 수 있음 코딩을 구현하기 쉬움 - 단점 : 복잡한 상호작용을 표현하기 어려움 (한계점) 이미 완성된 시퀀스 다이어그램을 수정하기 어려움 (유지보수때 상당히 큰 단점)