[Unified Process] Inception Phase
Unified Process에는 총 4가지의 Phase가 존재하며, Inception은 첫 번째 Phase입니다.
이번 글에는 Inception Phase(단계)에 대해서 정리해보려 합니다.
Inception은 말 그대로 시작, 초입단계로서 시간적으로 매우 짧은 시간입니다. 1~2주 정도의 시간을 두고 진행을 하죠.
이 단계에서 진행하는 단계는 이 프로젝트를 진행을 해야하나? 말아야하나? 라고 정리할 수 있습니다. 이 프로젝트의 BM(Business Model)은 무엇인가? 진행 가능한가? 판매 가격을 얼마나 될 것인가? 라는 것이죠. Inception 단계에서 많은 사람들이 착각하는 것 중 하나가 모든 요구사항이 정의되어야 한다고 생각하는 것입니다. 요구사항은 다음 Elaboration Phase에서 대부분 정리가 됩니다. Inception에서 요구사항을 완전히 분석하지 않는 이유는 Waterfall과 달리 Iteration 마다 요구사항을 정리하고 구현하기 때문에 Inception 단계에서는 초기 약 10~20% 정도의 요구사항만 정의합니다. 요구사항은 고객의 요구사항이 가장 크겠죠. 개발하려는 프로젝트에서 반드시 포함, 만족되어야 하는 요소들입니다. 이런 요구사항을 만족하기 위해 분석 및 정리해야 합니다. Inception 단계에서 굉장히 중요한 요소겠죠. 하지만 위에서 설명했듯이 Elaboration Phase에서 대부분 요구사항이 정의되기 때문에 꼭 100% 정의를 할 필요 없다는 것 기억해주시기 바랍니다.
Inception Phase에서는 기본적으로 Use-Case나 Supplementary Specification, Risk List와 Risk Management Plan, Development Case등을 작성하게 됩니다. 위 작성이 필요한 내용만 보셨을 때도 알 수 있듯이 Inception 단계에서는 UML diagram을 거의 사용하지 않습니다 :-)
Unified Process에서는 요구사항을 FURPS+ model을 이용해서 분석한다고 합니다. FURPS+ model은 Functional Requirement와 Non-Functional Requirement 두 가지로 크게 나뉠 수 있으며 세세하게 아래의 항목으로 구성됩니다.
Functional
Usability
Reliability
Performance
Supportability
+ : 추가적인 내용
위에서 Functional Requirement는 Functional이며 나머지, Usability, Reliability, Performance, Supportability는 Non-Functional Requirement 입니다. 이런 요구사항들이 프로젝트에 많은 영향을 줄 수 있습니다. Functional Requirement에만 집중하는 분들이 많은데 꼭 Non-Functional Requirement도 챙겨보면 좋을 것 같습니다.
그럼 Requirement를 어떻게 구성할 것 인가 하면 크게 Use-Case Model과 Supplementary Specification 두 가지를 이용하며 이 글에서도 위 내용만 간단하게 다뤄볼 생각입니다.
Use-Case Model
먼저 Use-Case Model을 말씀드리면 Use-case는 요구사항을 분석하는 매우 유명한 방법으로, 어떠한 사용자가 어떠한 목적을 위해 시스템을 사용하는 것을 텍스트로 정리한 것입니다. 예를 들어 은행 ATM기를 설계한다면 사용자가 원하는 기능(출금, 입금, 잔액 확인 등)의 버튼을 누른 후 통장 또는 카드를 삽입하고, 작업을 한 후 카드 또는 통장을 다시 가지고 떠나는 과정을 각 기능마다 모두 정리한 것입니다. 착각하시는 부분이 Use-case diagram처럼 UML을 이용해서 Diagram으로 표현해야 하는 것 아닌가? 라고 생각하시지만 텍스트 기반으로만 정리한 것이라고 생각하시만 됩니다. 여기서 Use case의 scenario별로 잘 정리해야 하며 일반적인 경우 외에도 예외 시나리오도 잘 챙기셔야 합니다. 이렇게 정리한 Use case를 Diagram으로 표현할 것이 Use-case Diagram입니다. 사용자가 특정 기능들을 사용하기 위한 모든 시나리오를 표시하는 것입니다.
Use case는 3가지 Format으로 나타낼 수 있는데, 아래는 간단하게 정의한 내용입니다.
Brief Format : 매우 간단하게 작성하는 Use case
Casual Format : Main, Alternative, Exception 시나리오가 작성되어있는 Use case
Fully Dressed Format : 매우 자세하게 작성된 형태로 모든 경우에 대해 작성된 Use case
Supplementary Specification
Supplementary Specification은 Non-Functional Requirement입니다. 보충명세서로서 Functional Requirement가 아닌 기능적 요구사항을 만족시키기 위해 필요한 비기능적 측면에서 보충되어야 할 내용을 명세하고 있는 것입니다. FURPS+ model에서 'URPS+' 가 Non-Functional Requirement입니다. 비기능적 측면을 바라보기에 이 프로젝트의 Vision이나 BM(Business Model)등을 명세한 내용이 모두 여기 포함됩니다.
Inception Phase의 모든 내용을 다루고 싶지만, 그러긴 쉽지 않을 것 같아 겉핣기 식으로 정리만 조금 해보았는데요, 어느 분들께는 도움이 되었으면 좋겠습니다.. 감사합니다 :)