[Unified Process] Elaboration Phase
Unified Process에서는 4개의 Phase가 존재합니다. 이 전 글에서 첫 번째 Phase인 Inception Phase에 대해 설명했으며, 이번에 작성할 글은 Elaboration Phase입니다.
Elaboration Phase에서는 Iteration을 반복하며 한 Iteration당 4단계를 수행하며 그 단계는 아래와 같습니다.
Object-Oriented Analysis
Object-Oriented Design
Requirement Design
Implementation
하나씩 자세히 알아보기 전에 가볍게 설명드리면 OOA 단계에서는 Domain Model을 만들고 System Operation을 나타내는 System Sequence Diagram을 만들게 됩니다. OOA단계에서 Analysis한 System Operation을 어떻게 Design할지를 OOD 단계에서 진행합니다. UML Package Diagram이나 Iteration Diagram, Class Diagram이 OOD 단계에서 만들어집니다.
Elaboration Phase에서 Iteration에서는 핵심적인 기능, 또는 위험성 있는 소프트웨어 아키텍처가 구현 및 테스트되며, 요구사항을 대부분 찾아지고 안정화 즉 변경되지 않도록 정리가 되어야 합니다. 또한 Domain Model, Design Model, Software Architecture, Design 문서 등이 작성되기 시작합니다.이런 과정이 한 Iteration에 모두 완료되는 것이 아니라 Elaboration Phase가 진행되는 몇 번의 Iteration을 거치면서 완료됩니다.
Domain Model
Domain Model은 Elaboration Phase에서 작성되는 중요한 내용입니다. 만약 개발하려는 시스템의 Domain에 대한 이해가 깊다면 이 단계를 생략하셔도 됩니다.
Domain의 이해를 돕기위한 Model로써 시스템의 실제 상황에서의 Domain에서 class들 또는 Object들의 시각적인 표현을 나타냅니다. Domain model을 작성할 때는 Inception phase에서 정의했던 Use-case (Text only)를 가지고 클래스 후보들을 검토 및 정리하는 것 부터 시작합니다.
Domain model은 software object나 class들을 디자인하기 위해 매우 큰 도움을 주게 됩니다. Domain model은 Class diagram을 사용하여(?) 시각적으로 나타냅니다. 정확하게는 Class diagram과 유사하게 표현한다는게 맞을 것 같습니다. 하지만 다른 점은 Diagram에 operation이 없으며 domain object들이 표현되어 합니다. 상세하게 attribute들이 모두 표현되지 않고 개념적인 Class들 간의 관계만을 나타내는게 주 목적입니다.
Class diagram의 이전 버전!? 상세하게 그리기 전의 버전이라고 생각하셔도 됩니다. 절대 Software object를 디자인 하는게 아니라는 것! 이해하시면 좋을 것 같습니다. 오직 Domain에 대한 이해를 돕기위해서만 사용하는 Model임을 기억해주세요!
Domain Model은 Design Model에 모두 녹아 들어가기 때문에 Domain Model은 Elaboration 단계에서 모두 완료됩니다.
Domain Model은 Domain에 대한 이해를 돕고, Design단계에서 Software class들을 설계할 때 도움을 받고 실제 시스템과의 Gap을 줄이기 위함이라는 것 기억해주시면 좋을 것 같습니다.