Waterfall Model(폭포수 모델)
포스트 난이도: HOO_Junior
# Waterfall Model이란?
Waterfall Model은 소프트웨어 개발에 있어서 대표적인 개발 프로세스 방법 중 하나에 해당한다. 한국에서는 직번역하여 폭포수 모델이라고도 불리는데 어렵게 생각할 필요 없이 단어 자체의 의미를 이해하면 된다. Waterfall은 폭포를 의미하는데 폭포는 일반적으로 위에서 아래로 떨어지게 된다. 폭포에서 물이 떨어지듯이 프로그램이나 소프트웨어 개발에 있어서도 첫 번째 단계부터 마지막 단계까지 순차적으로 개발되는 과정을 Waterfall Model이라고 한다.
# 모든 소프트웨어 개발 과정이 단계적으로 진행되는게 아닌가요?
Waterfall model은 단계적으로 소프트웨어 개발 과정이 이루어지지만 여기서 중요한 점은 처음부터 끝까지 단계적으로 진행된다는 점이다. 선행 단계를 마무리해야지만 다음 단계로 넘어갈 수 있다는 것이다. 예를 들어서 Stage가 존재하는 게임 중에서 한번 죽으면 처음부터 다시 하는 게임을 해본 적이 있을 것이다. 반면에 특정 Stage를 Clear 하면 처음부터 다시 하는 게임이 아니라 Clear 한 부분부터 시작하는 게임도 있다. Waterfall는 전자와 비슷한 조건을 가진 소프트웨어 개발 프로세스 모델이라고 볼 수 있다. 모든 단계를 차례로 끝내야지만 다음 단계로 넘어가는 방식을 가진 개발 모델이다. 따라서 모든 소프트웨어 개발 과정에서는 단계라는 게 존재하지만 어떤 과정과 방식으로 개발되는지는 다르다. 그중에서 오래되면서 대표적인 개발 모델 중 하나가 Waterfall Model인 셈이다.
아래 그림을 통해 Waterfall Model 개발 프로세스 과정이 진행되는지 살펴보자.
# 단계별 개발과 유지 관리
총 6개의 단계로 나누어서 Waterfall Model를 나타내보았다. 혹시라도 각 단계별 추가 설명이 필요하다면 필자에게 알려주어 추가 포스팅을 이어나가도록 하겠다. 이번 포스트 난이도는 HOO_Junior인 점을 감안하여 각 단계별 설명은 생략하겠다.
위의 그림에서 살펴보는 거와 같이 Waterfall model은 단계적 개발 과정을 나타내고 있다. 여기서 중요한 점 중에 하나는 개발 과정뿐만 아니라 유지 보수 면에서도 Waterfall model를 채택하고 있다면 단계적으로 유지보수가 이루어진다는 걸 알 수 있다. 예를 들어, Unit testing 부분에서 작업을 수행한다고 할 때, Unit testing만 하고 끝이 나는 게 아니라 최종 Operation and maintenance 전까지에 있는 단계를 다시 한번 더 진행해줘야 한다. Waterfall Model를 살펴보다 보면 실제로 해당 프로세스를 기반으로 개발을 진행했을 때 나타날 수 있는 장점과 단점들이 속속 보이기 시작한다. Waterfall model은 모든 프로그램 개발에서 장점을 가진 모델은 아니다. 상황에 따라 장점으로 작용할 수도 있지만 반대로 단점으로 작용할 수도 있다.
#Waterfall Model 장단점
Waterfall Model을 사용하여 소프트웨어를 개발하는 경우는 일반적으로 복잡하거나 큰 소프트웨어 개발이 필요한 경우에 해당 개발 방식을 채택한다. 그림에서 살펴보았듯이 선행 단계가 완벽하지 않으면 다음 단계로 진행이 불가하다. 따라서 Waterfall Model은 에러가 발생할 수 있는 경우가 적다. 왜냐하면 각 단계에서부터 완벽하게 처리가 되고 Testing이 이루어지다보니, 에러 발생률이 낮아질 수밖에 없다. 또한 프로그래밍 특성상 각 단계에서 처리되지 않은 에러의 경우 개발 완성 단계로 가까워질수록 문제점 파악이나 해결이 상대적으로 어렵다. 따라서 Waterfall Model은 에러가 많이 발생하면 안 될 프로그램 개발에 있어서 사용되는 개발 방식이다.
하지만 여기서 유의할 점은 이미 알려지거나 개발 기획 과정에서 개발이 완벽히 가능할 것 같은 경우에 Waterfall Model를 채택한다는 점이다. 모든 소프트웨어나 프로그램 개발이 기존에 있던 SW를 개발하는 것은 아니다. 그렇다보니 단계적 완성도가 떨어질 것으로 예상되는 프로그램이나 추후에 지속적인 단계별 보완이 필요한 소프트웨어의 경우 Waterfall Model 기반으로 개발이 어렵다.
반면에 Waterfall Model 기반으로 개발된 프로그램이나 소프트웨어의 경우 유지 관리성이 용이하다. 1차적으로 에러가 많지 않지만 업데이트나 수정이 필요한 경우 단계 맞추어 진행이 이루어지면 된다. 한마디로 잘 지어진 집에 살짝 문제가 있으면 절차대로 진행하여 수리를 하면 되듯이 유지 관리성이 편하다는 장점을 가지고 있다. 하지만 유지 관리성이 편하다고 말하기 이전에 전제 조건이 필요한데 유지 관리를 하는 개발자의 프로그램 이해도이다. Waterfall Model은 해당 프로그램에 대한 전체적으로 완벽한 이해를 개발자가 하고 있어야 한다. 이해가 부족하다면 단계별 진행이 어려워 반대로 유지 관리가 제대로 이루어지지 못한다. 또한 수정이나 업데이트 과정에서 한 단계만 처리되면 끝나는 것이 아니라 하위 단계에 있는 Testing도 단계에 걸쳐서 진행해야 되다 보니 사용자 요구에 맞는 빠른 SW 변화가 어려운 것이 사실이다.
이러한 장단점 때문에 Waterfall Model 개발 방식은 큰 규모의 SW 개발 과정에서 사용된다.
# In conclusion, 3줄 요약
1. Software Engineering Model은 다양하다.
2. Waterfall Model은 단계적 개발 방식을 채택하고 있다.
3. Waterfall Model 개발 방식은 장단점을 가지고 있다.
# 참고 포스트
https://whoishoo.tistory.com/174
댓글