소프트웨어공학
설계(part 4) - 동적 모델링 (시퀀스 다이어그램)
chlqhrud0208
2024. 12. 15. 12:27
- 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. 종합하여 하나의 시퀀스 다이어그램으로 종합하기
- 시퀀스 다이어그램의 장단점
- 장점 : 메세지의 순서나 시간 순서를 명확히 알 수 있음
객체 사이의 상호작용을 한눈에 볼 수 있음
코딩을 구현하기 쉬움
- 단점 : 복잡한 상호작용을 표현하기 어려움 (한계점)
이미 완성된 시퀀스 다이어그램을 수정하기 어려움 (유지보수때 상당히 큰 단점)