앞에서 우리는 Agile, UP Software Development들을 살펴보았다. 이번 포스팅에서는 Iterative Model 말고 다른 개발 방법론도 함께 살펴보고자 한다.
Waterfall Model은 소프트웨어 개발에서 사용되는 전통적인 방법론 중 하나이다.이 모델은 개발 과정을 선형적으로 진행하는 방식으로, 다음 단계로 넘어가기 위해서는 이전 단계가 완료되어야 한다. 흔히 우리가 간단한 코딩 문제나 프로젝트를 진행할 때를 사용하면된다. 프로젝트 규모가 작아서 순차적으로 진행할 때 주로 사용한다. 주요 단계는 요구 분석, 설계, 구현, 테스트, 유지보수로 구성된다.
Waterfall Model의 장점으로는 각 단계가 명확하게 구분되어 이해하기 쉽고, 각 단계가 완료된 후 변경이 적게 발생한다는 점이 있다. 또한 문서화가 강조되어 개발 프로세스를 문서로 기록하는 것이 중요시된다.
하지만 Waterfall Model은 유연성이 낮고, 초기에 요구사항을 완벽하게 이해하기 어렵다는 한계가 있다. 또한 고객과의 상호작용이 제한되어 있어 변경 요청에 대응하기 어려울 수 있다. 이러한 한계로 인해 최근에는 Agile과 같은 반복적이고 유연한 방법론이 Waterfall Model을 대체하는 추세이다.
Iterative Model로 잘 알려진것은 대표적으로 UP가 있다. UP(Unified Process)에서 정의된 소프트웨어 개발 생명주기는 각 단계를 가지고 있는데 각 iteration별로 Inception, Elaboration, Consturction, Transition 4단계를 가지고 있다. 각 단계를 살펴보면 아래와 같다.
이러한 단계는 UP의 반복적이고 적응적인 특성을 반영하며, 소프트웨어 개발 생명주기를 체계적으로 관리하여 프로젝트의 성공을 촉진한다.
반복적인 개발: 전체 개발 주기를 여러 개의 작은 반복 주기로 나누어 진행하고 각 반복 주기는 일정한 시간 동안 요구사항 수집, 설계, 구현, 테스트 등의 활동을 포함한다.'
위험 중심의 개발: 위험 요소를 식별하고, 초기에 위험을 줄이기 위한 방안을 모색한다. 이를 통해 초기에 문제를 해결하고, 후속 반복 주기에서 더 나은 제품을 제공할 수 있도록 한다.
고객 중심의 개발: 고객과의 지속적인 상호작용을 강조하여 요구사항의 변화에 유연하게 대응할 수 있도록 한다.
반복적인 제품 출시: 각 반복 주기가 끝날 때마다 실행 가능한 제품 또는 프로토타입을 제공하여 고객 피드백을 수렴하고 개선할 수 있다.
문서 중심의 접근: UP도 워터폴 모델과 마찬가지로 문서화를 중요시한다. 각 반복 주기의 결과물과 결정 사항은 문서로 기록된다.
UP의 개발 흐름

전체적인 개발 사이클

Agile model은 Scrum, eXtreme Programming및 Crystal Clear를 포함한 방법론을 통한 민첩한 소프트웨어 개발이 가능하다. Agile model은 반복을 통한 점진으로 다양한 장점이 있다. 작동가능한 소프트웨어를 초기부터 계속 확인 가능한 것, customer와 개발자의 긴밀한 상호협력, 팀의 자기 조직화 가능, 뒤늦게 customer가 요구하거나 다른 변화하는 환경에 적응 하는것에 집중 할 수 있음 등이 장점이다. 이렇듯 Agile은 팀워크, 적응성, customer와 가까운 상호 작용에 포커스 되어있다.
위에서 살펴본 Agile과 UP는 모두 반복적인 개발 주기를 갖고 고객의 요구사항에 대한 지속적인 피드백을 중요시 하는 등 공통점도 있지만 차이점도 있다. Agile과 UP가 어떤점이 다른지 알아보자.
이러한 차이점들이 있지만, 두 방법론은 모두 팀 간의 협업을 강조하고 빠른 변화에 대응하기 위한 유연한 접근 방식을 제공하여 프로젝트의 성공을 도모한다.
-> 모델 주도적인 방법론
Model - Driven 개발은 소프트웨어 개발 방법론 중 하나로, 소프트웨어 시스템의 설계, 구현 및 테스트를 모델 중심으로 수행하는 접근 방식이다. MDD에서는 소프트웨어 시스템의 모델을 중심으로 개발 과정을 추상화하고, 이를 바탕으로 자동화된 도구를 사용하여 코드를 생성하는 방식으로 개발이 이루어진다.
MDD에서 사용되는 두 가지 주요 모델은 다음과 같다:
Model - Driven에서 모델은 시스템의 추상개념으로 다양한 추상화 수준에서 모델을 생성하여 가치를 제공하고 가장 작은 구현 세부 사항까지 개념적 관점을 형성한다. 코드가 자동으로 생성되는 도메인 모델을 만들며 인개발자는 플랫폼 정의 모델(PDM)과 결합된 플랫폼 독립적인 모델(PIM)을 만들어 실행코드를 생성한다. PIM은 기능적 요구사항을 숭수하게 구현한 반면 PDM은 플랫폼 세부 사항과 품질 특성을 다룬다.