Incremental Development Model
점진적 개발 모델
- Prototype을 빠르게 개발하여 점진적으로 개선시켜 나가는 방법이다.
* 본 포스트는 Software Process Model (소프트웨어 프로세스 모델) (URL)의 하위 문서이다.
Incremental Development Model Phases (점진적 개발 모델의 단계)
- Specification, Development, Validation 과정들이 개발 도중에 Interleave(끼워넣기)될 수 있다.
(즉, 명세, 개발, 검증 과정에 정해진 순서가 없다.)
- Plan-Driven Model 혹은 Agile에 속하는 모델로,
Increment를 모두 계획해놓은 경우는 Plan-Driven Model에 속하는 경우이며,
그렇지 않고 그때그때 한 Increment씩 계획해나가는 경우는 Agile에 속하는 경우이다.
(Planning의 Scope로 Plan-Driven 혹은 Agile을 구분할 수 있다.)
- Initial Model(= Prototype)을 가능한 한 빨리 개발하여 고객에게 시현한 후,
고객의 의견을 듣고 이를 반영하여 Refine한다.
(이로 인해, 많은 Version이 탄생하게 된다.)
Throw-away Prototyping
- 요구사항이 확실히 정립되지 않은 경우에 더 나은 요구사항 정의를 위해 수행하는 것으로,
프로토타이핑을 반복하여 필요한 요구사항을 알아내는 방법이다.
Prototype
- 프로토타입이란, System Concept과 Desing Option을 시현하기 위해 제작된 시스템의 초기버전이다.
- Specification 단계에서 프로토타이핑은 요구사항을 생각해내고, 검증하는데 도움을 준다.
(개발을 의뢰한 사람도 본인의 요구사항을 모르는 경우가 많은데, 프로토타이핑은 요구를 끄집어내는데 도움을 준다.)
- Design 단계에서 프로토타이핑은 UI Design을 개발하고, Option들은 생각해내는데 도움을 준다.
- Testing 단계에서 프로토타이핑은 그 자체로 테스트를 수행할 수 있게 해준다.
Advantages of Incremental Development (점진적 개발 방법의 장점)
Advantages | Description |
사용자가 시스템에 대한 이해가 높아질수록 Specification의 Uncertainty가 해결될 수 있다. |
- 프로토타이핑을 반복해가며 시스템의 지향점을 찾아나갈 수 있기 때문이다. |
Drawback of Incremental Development (점진적 개발 방법의 한계)
Drawbacks | Description |
Process Visibility가 미흡하다. | - 프로토타이핑이 성공과 실패를 반복하기 때문에 프로세스의 진행 단계를 확인하기가 힘들다. |
System 구조의 완성도가 떨어질 수 있다. | - 매 단계에서 생기는 변화를 계속해서 수용하기 때문에 전체적인 구조의 Quality가 떨어질 수 있다. (Flag Varialbe과 if Condition의 남용 등) |
빠른 프로토타이핑을 위한 Special Skill을 숙지해야 한다. | - 오직 프로토타이핑만을 위한 프로그래밍 언어 등의 Skill들을 개발자가 알고 있어야 한다. |
Appropriate Field of Incremental Development (점진적 개발 방법을 적용하기에 적합한 경우)
Appropriate Field | Description |
비교적 크지 않은 규모의 Interactive System을 개발하는 경우 |
- 규모가 작은 시스템은 점진적 개발 방법을 적용하기에 적합하다. |
대규모의 System에서 Specification이 모호한 경우 |
- 대규모 시스템 내에서 UI와 같이 User의 요구가 제대로 정립되지 않은 세부적인 Subsystem을 구현하기에 적합하다. |
Reference: Software Engineering 10th Edition
(Ian Sommerville 저, Pearson, 2016)