• 이 단계에서는 소프트웨어 아키텍처가 상세하게 설계된다.
  • 입력은 OOA 프로세스에서 나온다.
    • OOA와 OOD는 병렬적으로 서로 지원할 수 있다.
  • 실제 구현 단계보다 시간이 더 많이 소요되는 경우가 많다.
  • 우수한 설계로 구현 및 테스트 소요 시간 단축시킨다.
  • 가능한 출력
    • 업데이트된 class diagram
    • Sequence diagram
    • Activity diagram
    • 객체 간 인터페이스
    • 알고리즘 등에 관한 문서
    • 데이터베이스 설계(예: entity-relationship diagram)
    • 사용자 인터페이스 설계
    • 보안 기능 설계
      • 시스템 아키텍처 및 기능을 설명하는 다른 UML 다이어그램

From what to how

  • OOA에서는 시스템이 수행해야 하는 작업을 정의한다.
  • OOD에서는 시스템의 작동 방식을 정의한다.
    • 즉, 프로그래머가 시스템을 구현하는 방법
  • 소프트웨어 작성 방식에 대한 상세 구조를 명시한다.

OO Design steps

  • 1단계 : use cases 분석
  • 2단계: 각 사용 사례에 대한 activity diagrams작성
  • 3단계: sequence diagrams 생성
  • 4단계: 1-3에 따라 class diagram(s)을 업데이트한다.
  • 5단계: 필요한 경우 state diagrams을 업데이트한다.
  • 6단계: 반복된다. 위의 각 단계마다 업데이트해야 하는 다른 모델에 대한 정보가 표시된다. 예를 들어 시퀀스 다이어그램의 개체에 지정된 서비스는 클래스 다이어그램의 해당 개체의 클래스에 추가해야 한다.

Activity diagrams

  • use cases의 activity 흐름을 나타낸다.
    • activity = 시스템의 작동
  • 흐름은 다음과 같을 수 있다.
    • 순차적
    • 분기(다른 경우)
    • 동시(여러 스레드/프로세스)
  • 시스템에서 보낸 메시지를 표시하지 않다(시퀀스 다이어그램 참조).
  • 활동 다이어그램은 OOA 중에 작성한 후 OOD 중에 업데이트할 수 있다.

Syntax

  • Action or Activity
    • 액션 또는 액션 집합을 나타낸다.
  • Control Flow
    • 실행 순서를 표시한다.
  • Initial Node
    • 일련의 행동의 시작을 의미한다.
  • Final Node
    • 활동의 모든 흐름 중지를 의미한다.
  • Decision Node
    • 테스트 조건을 표시한다.

Sequence diagram

  • use cases에서 object 간의 상호 작용을 설명한다.
    • 일련의 메소드는 시간 순서대로 호출된다.
    • 객체 간에 전달되는 메시지/데이터(파라미터, 반환 값)
    • 관련 물체의 라이프라인
  • 물체가 함께 작동하는 방식과 필요할 때 시각화하는 데 적합하다.
  • 외부 시스템/개체 포함 가능

Syntax

Updating class diagram

  • 다른 도표를 기준으로 클래스 다이어그램의 구조가 업데이트된다.
  • 매개 변수 및 반환 값을 포함하여 방법을 상세하게 정의한다.
  • 시스템 아키텍처 향상을 위해 다양한 설계 패턴 및 설계 원칙(다음 강의)을 적용할 수 있다.
  • 마지막에는 최종 클래스 다이어그램을 사용하여 골격 클래스를 생성할 수 있다.

Profile

한창헌

https://github.com/HanChangHun