티스토리 뷰

안녕하세요 강정호입니다. 오늘은 도메인 분석설계에서 요구사항 분석에 대해 공부해 볼게요.



요구사항 분석



System Sequence Diagram이란?


- Use case의 특정 시나리오에 대해 외부 Actor가 생성하는 이벤트, 순서 및 시스템 간 이벤트를 보여주는 그림




왜 SSD를 그려야 하는가?


- 어떤 이벤트가 시스템에서 발생하는지 식별, 예측하기 위해서

- 시스템 동작을 블랙 박스로서 정의하기 위해서. 즉 어떤 input이 들어오면 어떤 output이 나가는지 판단하기 위해서.

- 외부 액터가 시스템에 요청을 했을 때, 시스템의 동작을 묘사하기 위해서.



SSD의 역할은 무엇인가?


1. 시스템과 액터의 역할 설명 : 소프트웨어 시스템과 시스템 외부의 액터가 어떻게 상호

작용하는 가를 설명

2. 이벤트 핸들링 : 액터는 시스템 이벤트(해당 이벤트를 처리하기 위한 시스템 오퍼레이션을 요청)를 생성.

3. 시스템 동작 표기법 : 시스템 오퍼레이션을 표현하기 위한 UML 표기법이 시스템 시퀀스 다이어그램이다.



SSD를 그리는 가이드라인


- 각 유즈케이스별로 Main Success 시나리오를 작성하고, 빈번하고 복잡한 대안적인 시나리오를 작성하는 순서로 SSD를 그린다.




요약하자면

SSD는 객체간의 협력 관계를 디자인 하는 시작 지점이다


**시험에 나오는 그림




SSD로 Process Sale 그린 예시



  • 위의 그림을 보면 makeNewSale, enterItem, ''' , change due까지의 시나리오가 액터와 시스템간의 상호 작용으로 표현되어 있다. 즉 SSD는  유즈케이스의 하나의 시나리오를 보여준다.
  • 액터는 시스템에 이벤트를 발생시켜서 이에 대한 요청을 시스템이 핸들링 해야한다.



Operation Contracts(시스템 작동, 운영 규약)


목적

- 시스템 오퍼레이션을 정의하기 위함

- SSD에 정의된 시스템 오퍼레이션을 생성하기 위한 규약


Operation Contract(운영 규약)은 시스템 오퍼레이션이 실행 후에 도메인 모델의 객체 상태 변화의 관점에서 상세 시스템 동작을 기술한다. 즉 Operation이 실행되고 나서 객체의 관점에서 시스템 동작을 묘사




사전조건과 사후조건의 측면에서 Operation Contract를 정의


  • Operation : 오퍼레이션의 이름과 파라메터
  • Cross references : 오퍼레이션이 속한 케이스? use cases this operation can occur within
  • Precondition : 오퍼레이션이 실행되기 전 시스템 혹은 도메인 모델의 객체 상태
  • Postcondition : 오퍼레이션이 완료된 이후의 도메인 모델의 객체 상태




Contract 가이드라인

1. SSD의 시스템 오퍼레이션을 정의한다.

2. 시스템 오퍼레이션의 결과가 복잡하고 애매모호, 명확하지 않을 때 규칙(contract)을 만들어야 한다.

3. Contract는 어떻게 달성될 것인가에 대한 기술 없이 선언하는 방식으로 표현되어야 한다.

4. Contract를 쓰는 것은 도메인 모델을 업데이트 하는 것과 같다.

5. 새로 생겨나고 사라진 새로운 연관관계를 포함하는 것을 잊지 말기. 새로운 인스턴스가 생기면 여러 객체들은 새로운 관계를 맺어야할 가능성이 높아진다.



Contract - Post Conditions


  • 사후조건은 다음을 포함한 도메인 객체의 변화를 기술해야함
    • 인스턴스 생성 및 삭제
    • 속성 변경사항
    • 연관관계의 형성 및 해제
  • 사후조건은 과거형으로 써라! 그 이유는 상태변화가 과거에 이루어졌다는 것을 강조하기 위함이다.
    •  (권장) 세일즈아이템은 생성되었다.
    •  (비권장) 세일즈 아이템 생성
  • 사후 조건을 극장에서의 각 단계의 막이라고 생각해봐라
    • 오퍼레이션이 진행되기 전 무대의 사진을 찍는다
    • 무대의 커튼을 내리고 시스템 오퍼레이션을 적용한다
    • 커튼을 걷고 2번째 무대 사진을 찍는다
    • 첫 번째 사진과 두 번째 사진을 비교한다.


댓글