오늘은 지난 포스트에서 언급했던
'Plan-driven development'에 대해 심층적으로 알아본다. 특히 이 방법론에 해당하는 모델들을 비교해봄으로써 장단점을 다시 한번 분석한다.
_계획 중심의 소프트웨어 개발은 응용 프로그램을 만드는 보다 형식적인 특정 접근 방식입니다. 계획 기반 방법론은 모두 반복성 및 예측 가능성, 정의된 증분 프로세스, 광범위한 문서화, 사전 시스템 아키텍처, 세부 계획, 프로세스 모니터링, 제어 및 교육, 위험 관리, 검증 및 검증을 통합합니다.
이는 wikiversity에 적힌 Plan-driven development의 간략한 설명이다. 솔직히 추상적 개념이 나열된 설명이어서, 한번에 알아먹기 어렵다. 이보다 Plan-driven development의 개념은 건물 건축을 떠올리면 이해하기 쉽다.
건물이 완공되기 이전부터 건물의 전체적인 도면과 각 층의 용도는 미리 결정되어 있다. 고정된 설계 도안의 명확한 모델이 구현되어 있는 것이다. 건축 설계사는 시공이 이뤄지기 이전에 고객의 요구를 받아 건물을 완벽히 설계한다. 이를 Plan-driven development방법론에 적용시켜 보자. 이 방법론에서도 마찬가지로, 중요한 것은 '완벽히 설계하는 것'인데, 이는 해당 프로젝트가 예측할 수 있는 것이고, 처음부터 마지막까지 전과정을 계획하고 설계할 수 있다는 가정 때문에 그렇다.
우리나라에선 보통 '증분 모델'이라고 불린다. 위 그림을 통해 알 수 있듯이 여러 요구사항 각각에 분석과 설계과정을 붙여 여러 분위로 세분화한다. 세분화된 분위를 '증분'이라고 하는데, 보통 첫번째 증분은 핵심기능을 다루게 되고, 가운데 증분은 세부적인 요소를 다루며, 마지막 증분으로 전체 프로젝트가 release 된다. 요구 사항의 우선순위가 설정되면 순위가 높은 순서대로 증분에 배정받게 된다. 이로써 추가되는 새로운 기능은 기존 증분들에 포함된 것보다 중요하지 않은 것이여야 한다.필자가 보기엔 이게 최악의 단점이다. Agile 방법론과 비교했을 때 모델의 수정이 어려운 건 당연한 거고, 추가마저 힘든 건 너무 큰 약점..
사실 증분형 모델은 반복적 개발 모델의 하위모델로 알려져 있다. 그 말인 즉슨, 프로토타입의 반복적 개발이 이뤄진다는 것이고 이런 모델이 또 있다는 것인데...
반복적 개발 모델의 또 다른 하위 모델이 바로 진화형 모델이다. 해당 모델은 프로토타입이 형성된 이후에도 지속적으로 추가 기능을 붙임으로써 release가 이뤄질 때마다 기능의 추가가 이뤄진다. 이로써 새로운 기능을 추가해 점진적으로 프로그램을 개선시킬 수 있다는 장점이 생긴다. Incremental-model와 비교해 분명 뛰어난 모델이다. 허나 이 개발도 최종 지향점은 완벽한 시스템 개발에 있기 때문에 중도 수정은 어렵지 않나?? Agile development를 선호하는 프로그래머들의 지적은 피하기 어려워 보인다..
사실 Incremental-model은 Waterfall model의 변형으로 보는 견해가 많다. 그럼에도 필자가 Waterfall model을 2번째로 넣은 건, 순전히 이에 대해 소개하는 wikiuniversty에서 이 순서로 소개했기 때문.
Icremental-model과 뼈대는 크게 다르지 않다. 사진만 봐도 비슷해 보인다. 큰 차이점은 반복여부에 있다.Waterfall model의 경우 선형구조 특성을 보인다. 따라서 다음 작업 이전에 기존에 진행되던 작업이 끝마쳐야 한다.
아래는 이 모델의 순서//
마찬가지로 Waterfall-model의 변형이라고 보면 된다.
각 개발 단계에서 위험 분석 및 반복이 이루어진다고 한다. lifecycle 이 Waterfall-model것과 동일하나 이 모델이 위험을 대비하기 위해 구현된 것이다 보니 Waterfall-model의 각 단계가 반복 프로세스로 바뀌었다.
이외에도 V-model, sashimi-model이 있는데, 이에 대한 논의는 다음번 포스트에서 다뤄보겠다.
그림 및 자료 출처:
researchgate
바보상자의 개발블로그
wikiuniverity