소프트웨어 공학(2)

윤휘영·2024년 4월 26일
0

7주차

1. 동적 모델링

1.1 시퀀스 다이어그램

동적 모델링은 시스템에서 객체의 상호작용을 나타낸다.

동적 모델링은 객체가 함께 동작하는 방법을 모델화하도록 상세하게 디자인된 다이어그램들을 포함한다. 동적 모델링은 시스템이 사용자의 행위에 응답하는 방법, 내부적인 일관성을 유지하는 방법, 사용자에게 보여주기 위해 저장소에서 데이터를 가져오는 방법 그리고 객체가 만들어지고 조작되는 방법을 표현할 수 있다.

시퀀스와 협동 다이어그램의 목적 이해

동적 모델링에는 시퀀스, 협동 그래고 상태도 다이어그램 등의 세 가지 UML이 있다. 시퀀스와 협동 다이어그램은 객체들 사이의 상호작용을 설명한다. 상호작용은 객체가 어떻게 서로 통신하는지를 보여준다. 객체는 필요할 때마다 인터페이스를 통해서 다른 객체와 통신을 한다(오퍼레이션 호출). 따라서 상호 작용을 모델링할 수 있다면 객체가 요구하는 인터페이스/오퍼레이션을 찾을 수 있다.

상호 작용을 객체에 매핑

객체지향 시스템에서 모든 것은 객체에 의해 수행된다. 객체는 데이터를 관리하고 시스템에 있는 데이터를 전송하며 요청에 응답하고 시스템을 보호하는 것과 같은 일을 책임진다. 객체는 서로 간의 통신이나 인터페이스를 통하여 서로 작업한다. 그림 16-1은 빌이라는 고객, 빌의 주문 그리고 재고 목록이라는 세 개의 객체가 참여하는 시퀀스 다이어그램을 보여준다. 형식적인 표기법을 모르더라도 무슨 일이 일어나는지를 대략 짐작할 수 있을 것이다.

  • 단계 1과 2: 빌이 주문을 한다.
  • 단계 3: 빌은 주문에 품족을 추가한다.
  • 단계 4와 5: 재고 목록에서 이용 가능한 품목을 확인한다.
  • 단계 6과 7: 만약 물품을 사용할 수 있으면 주문 목록에 추가한다.
  • 단계 8: 빌은 모든 일이 잘 되었는지를 확인한다.

시퀀스 다이어그램의 기본적 표기법 정의


시퀀스 다이어그램은 클래스 수준이 아니라 객체 수준에서 모델링된다. 시퀀스 다이어그램에서 객체 표기법은 객체 다이어그램에서 사용하는 표기법과 동일하다. 그림 16-1에서 다이어그램의 맨 윗 부분에 밑줄이 그어진 참여하고 있는 세 개의 객체가 있다. 객체의 생명선은 각각의 객체 아래 수직으로 선이 그어져 있다. 객체 생명선은 항상 윗부분에서부터 시작하여 바닥 부분까지 긋는다. 시간의 양은 시나리오나 모델링하고 있는 행위에 따라 표현한다.

메시지는 대체 호출, 신호 또는 응답이다. 메시지는 화설표로 표현한다. 화살표의 유형은 시각적으로 메시지의 유형을 나타낸다. 검은 삼각형 화살표 머리를 가진 실선 화살표는 응답을 요구하는 메시지이다. 메시지는 그들이 일어나는 순서를 표현하기 위해 타임라인과 수직으로 놓는다.

위 그림에 표시한 참조 번호는 다음과 같은 사항을 나타낸다.
1. 객체 생명선
2. 메시지
3. 반복
4. 자기 참조
5. 반환값
6. 익명의 객체
7. 객체 이름
8. 순서 번호
9. 조건
10. 주석

시퀀스 다이어그램에 대한 확장 표기법 정의

객체가 활성 상태에 있다는 것을 보여주는 표기법은 그림 16-3에서 보듯이 폭이 좁고 긴 사각형 모양의 수직 객체 생명선으로 나타낸다. 폭이 좁고 긴 사각형을 활성 막대라고 한다. 참조번호 1은 객체가 사각형의 맨 위에서 활성 상태가 되는 것을 보여준다.

객체가 작업을 시작할 때, 객체는 활성 상태가 된다는 것에 주목하라. 참조번호 2는 객체가 비활성 상태이거나 작업을 끝내고 다음 요청을 기다리고 있다는 것을 보여준다. 이와 같은 표기법을 사용하여 재고 목록 객체는 'product available' 질문에 응답하는 동안만 활성 상태가 되고 주문 객체는 한 번 이상 활성 상태가 된다는 것을 알 수 있다. 주문 객체의 활성 상태는 주문 객체를 만들 때와 빌이 'additem'을 요청할 때이다.

객체가 실행 종료될 때에는 객체의 생명선에 XX로 표기한다. 이것은 대게 삭제와 취소같은 메시지의 응답에서 사용된다. 메시지 10: cancel()은 참조 번호 5의 XX 표시로 간다. 객체 생명선에 XX표시가 없다는 것은 이러한 일련의 이벤트들이 끝난 이후에도 객체가 살아있다는 것을 의미한다.

위 그림의 표기법을 관찰해 보자.
1. 활성화: 수직 사각형의 시작, 활동 막대
2. 비활성화: 수직 사각형의 끝, 활동 막대
3. 타임아웃 이벤트: 일반적으로 검은 삼각형 머리를 가진 화살표의 선 위에 작은 시계 모양의 원을 그려 표시한다.
4. 비동기 이벤트: 일반적으로 선으로 된 화살표 머리를 가진 화살표로 표시한다.
5. XX 표시는 객체의 종료를 나타낸다.

참조번호 4는 비동기 이벤트(호출자가 응답을 기다리지 않고 수신자에게 메시지를 보내는 이벤트)를 가리킨다. 메시지 7에서 소요된 물품의 개수만큼 재고량을 감소시키라는 메시지를 재고 목록에게 보낸다. 이 요청을 대기행렬에 쌓고 관리하는 것은 재고 목록에 달려있다. 주문 객체는 메시지 7의 응답을 기다리지 않는다.

시퀀스 다이어그램 작성 과정

1. 작성할 사용사례의 시나리오를 선정
2. 참여하는 객체를 파악, 해당 객체를 X축에 나열
3. 사용사례에 기술된 이벤트 순서(시나리오)에 따라 객체의 메시지 호출을 화살표로 나타냄
4. 호출된 객체는 실행 동안 라이프라인 표시

시나리오

개(dog)가 짖을 때, 개문(dogDoor)을 통해 밖으로 나가는 과정입니다. 이 과정은 두 가지 버전으로 나뉩니다. 각 버전은 개문을 여는 방식에 따라 다릅니다.

  1. 버전 2:

    • 개가 짖습니다.
    • barkRecognizer는 이 짖음을 듣고, 개문을 열 수 있는지 판단합니다. 이 때, 짖음이 알려진 경우에만 문을 엽니다.
    • 문이 열리면, 개가 밖으로 나갑니다.
    • 잠시 후, 문이 닫힙니다.
  2. 버전 3:

    • 개가 짖습니다.
    • barkRecognizer는 짖음이 알려진 것인지를 barkManager에게 묻습니다.
    • barkManager가 확인 후 개문을 열어줍니다.
    • 문이 열리면, 개가 밖으로 나갑니다.
    • 잠시 후, 문이 닫힙니다.

0개의 댓글