폭포수 방법론의 단점

폭포수(워터폴) 방법론 이란?

폭포수 방법론은 프로그래밍 개발 방법론 중 아마도 가장 오래된 방법론이 아닐까 생각된다. 이름 그대로 폭포수 처럼 위에서 아래로, 즉 한방향으로 진행하는 프로그램 개발 방법론이다.

예를 들어 자바 웹 프로그램을 개발한다고 치면 아래와 같이 프로젝트가 단계별로 진행하는 것이다.

요구사항 분석(업무분석가) -> 화면설계서(디자인) -> 디자인 이지미(디자인) -> HTML(퍼블리셔) -> 자바스크립트, ajax 코드(퍼빌리셔, 개발자) -> JSP, JAVA 코드(백엔드 개발자) -> 테스트 케이스, 테스트 코드 ...

차근차근, 하나하나, 차곡차곡 단계별로 프로젝트를 진행하는 이 폭포수 방법론은 방법론이라는 말이 무색하게 아주 심플하기 때문에 프로젝트 구성원이 이 방법론을 따로 배울 필요가 없다는 엄청난 장점이 있다.

하지만 그 반대로 엄청난 단점 또한 있으니...


폭포수 방식 프로젝트 진행의 문제점

문제점1

하위 업무가 상위 업무에 종속되므로 상위 업무가 완료될 때까지 하위 업무 담당자들은 대기해야 한다. 가장 하위에 있는 개발자와 QA가 항상 일정에 쫒기는 이유가 된다.

문제점2

프로세스 진행중 지속적으로 발생하는 변화에 대응하기 어렵다. 즉, 개발 중 기능 변경하기 어렵다. 차곡차곡 아래부터 쌓아 올리는 돌탑의 아랫돌을 빼기가 어렵듯이 말이다.

위와 같은 문제가 발행하는 이유는, 폭포수 개발 방법론이 인간의 불완전성을 간과하고 있기 때문이다. 인간의 생각에는 많은 오류가 있다. 인간이 미래를 예측하는 것은 매우 어렵다. 인간은 복잡한 것을 다루는 것이 취약하다. 위 말을 달리 하면, 인간은 완벽한 요구사항 분석을 할 수 없다. 인간은 완벽한 화면설계를 할 수 없다. 인간은 완벽한 개발을 할 수 없다. 인간은 완벽한 테스트를 할 수 없다.


변화에 능숙하게 대응 하기 위해서...

애자일, xp, 스크럼 등등 방법론은 폭포수 방법론의 문제점을 극복하기 위해 태어난 방법론이다. 이 것들도 완벽한 방법론이 아니다. 각자 자신의 환경에 맞게 필요한 것만 차용하고 커스텀할 필요가 있다. 다만 중요한 점은 애자일 등의 방법론은 인간의 불완전성을 인지하고 있다는 것이다. 이것이 중요하다.