Software Engineering

Waterfall 방법론

폭포수 모델은 소프트웨어를 개발하는데 있어서 각 단계가 위에서 아래로 물이 떨어지는 것처럼 순차적으로 진행된다. 소프트웨어 개발은 크게 요구사항 분석, 설계, 구현, 테스트, 유지보수로 나뉘어져 있다.

이 모델의 특징은 폭포에서 물이 떨어지는 것처럼 위에서 아래 단계로 순차적으로 각 단계가 진행된다. 여러 단계가 병행적으로 진행되거나 거꾸로 진행되는 경우는 거의 없다. 예를 들어 요구사항 분석이 끝난 다음에 설계가 이루어지게 되며 각 단계가 끝나야 다음 단계를 진행할 수 있다.

개발 분야가 단순하거나 잘 아고 있는 경우에 적합하며 각 단계를 거칠 때마다 체계회된 문서가 작성되게 된다.

장단점

폭포수 모델은 각 단계를 문서화하는데 부담이 될 수 있다. 하지만 이 단점이 개발을 체계화된 문서를 기반으로 안정적으로 진행할 수 있다는 장점이 될 수 있다.

각각의 개발 단계에서 진행이 완료된 다음 다음 단계를 진행하기 때문에 개발 프로젝트를 진행하는데 리스크는 적다. 하지만 각 단계가 진행된 뒤 요구사항이 변경되거나 설계 등이 변경되면 추후에 커다란 문제가 발생될 수 있다.

그리고 실제 현실에서는 개발 프로젝트에서 요구사항이 변경될 가능성이 높아 각 단계가 반복될 수 있기에 다소 현실적이지 못한 개발 방법론이 될 수 있다. 실제 작동하는 소프트웨어는 개발 후반부에 확인할 수 있다는 것이 추가 단점이 될 수 있다.

Agile 방법론

애자일 모델은 실용적인 측면을 강조한 개발 방법론이다.

아무런 계획 없이 소프트웨어를 개발하는 방법과 지나치게 복잡하고 많은 계획을 수립하고 문서화를 한 뒤에 개발하는 방법론 사이에 타협점을 찾는 방법이다.

즉 적은 문서를 지향하고 실제 개발을 중요시하는 방법이다.

장단점

소프트웨어 개발 각 단계를 명확하게 구분하지 않고 각 단계를 반복적으로 수행하면서 요구사항을 더하거나 수정하며 소프트웨어를 완성해 나간다.

소프트웨어를 개발하는데 요구사항 분석이나 설계를 완벽하게 하기 어려울 때 적합한 개발 방법론이 될 수 있다.

그리고 적은 문서 작성을 목표하고 실제 개발을 지향하는 방법론이기 떄문에 실제 작동하는 소프트웨어를 기존 폭포수 모델과는 다르게 빠르게 확인할 수 있다는 장점이 있다.

하지만 체계화된 문서가 적을 수 있다는 단점이 존재한다.

따라서 실무에선 Waterfall 방법론과 Agile 방법론을 혼합해서 사용한다.

태그:

카테고리:

업데이트: