워터폴 방법론
워터폴(Waterfall) 방법론은 폭포수처럼 위에서 아래로 단계별로 진행되는 순차적인 소프트웨어 개발 방법론입니다.
요구사항 정의 -> 디자인 -> 개발 -> 테스트 -> 배포
위와 같은 단계로 구분되어 있으며 애자일 방법론이 등장하기 전까지는 소프트웨어 개발 뿐아니라, 자동차, 선박 등 산업 현장에서 보편적으로 사용되던 프레임워크입니다.
워터폴 방법론 프로세스
각각의 단계별 프로세스에 대해 알아봅시다.
요구사항 정의
고객과의 커뮤니케이션을 통해 프로젝트의 목표와 요구사항을 이해하고 이를 문서화 하는 과정입니다.
디자인
앞에서 정리한 요구사항을 충족할 수 있게 제품 또는 시스템의 아키텍쳐를 설계합니다.
개발
디자인 단계에서 정의된 문서화를 통해 시스템을 개발합니다. 프로그래밍 언어로 코드를 작성하고 소프트웨어를 구축합니다.
테스트
개발한 코드를 제대로 작동하는지 테스트하고 검증하는 단계입니다.
배포
테스트를 통과하면 소프트웨어를 사용자에게 배포하는 단계입니다.
장단점
각 단계가 명확히 구분되어 있고 각 팀원들이 해당 단계에서의 역할과 책임을 잘 이해하고 있기 때문에 프로젝트의 관리와 진행이 보다 체계적으로 이루어질 수 있습니다. 또한, 문서화를 통한 추후 참고는 프로젝트의 지식을 유지하고 이해하기 쉽게 만들어 줍니다.
하지만, 이러한 구조적인 장점이 동시에 요구사항 변경의 어려움과 전환의 어려움으로 이어질 수 있습니다. 각 단계가 순차적으로 진행되기 때문에 요구사항이 변경될 경우 해당 변경을 수용하기가 어렵고, 이미 진행된 단계를 수정하거나 새로운 단계를 추가하는 데에 많은 비용과 시간이 소요될 수 있습니다. 더불어 초기에 정의된 요구사항에 대한 변경이 어려워 개발 속도가 느릴 수 있습니다
애자일 방법론
애자일 방법론은 '민첩한', '기민한'이라는 뜻을 가진 영어 단어로, 소프트웨어 개발 분야에서 빠르고 유연하게 제품을 출시하고 고객 피드백을 반영하며 지속적으로 개선하는 방법론을 말합니다.
애자일은 4가지 핵심 가치를 중시합니다.
- 문서보다 개인과 상호작용을
- 포괄적인 문서보다 작동하는 소프트웨어를
- 계약 협상보다 고객과 협상을
- 계획을 따르는 것보다 변화에 대한 적응
애자일 방법론 프로세스
애자일 방법은 다양한 프로세스가 많지만 주로 널리 사용하는 것은 스크럼(Scrum)과 칸반(Kanban)입니다. 그 중에서도 스크럼에 대해서 알아보겠습니다.
스크럼은 반복적이고 점진적인 개발 방법론으로, 작은 팀이 짧은 시간 간격으로 일하는 것을 강조합니다. 핵심 개념은 스프린트입니다. 1 ~4주 작은 스프린트 단위로 디자인 → 개발 → 테스트를 진행합니다.
장단점
애자일 방법론은 고객과의 끊임없는 상호 작용과 빠른 제품 출시를 강조하여 팀의 유연성과 적응력을 높이는 데에 큰 장점이 있습니다. 작은 개발 주기를 통해 빠르게 작동하는 소프트웨어를 제공하고, 고객의 피드백을 빠르게 반영하여 제품을 지속적으로 개선할 수 있습니다.
그러나 애자일 방법론은 고객의 요구 사항이 명확하지 않거나 변경될 경우 프로젝트의 품질과 일정에 부정적인 영향을 줄 수 있습니다. 또한 프로젝트의 변화가 잦고, 팀원들의 의사소통이 필요하여 관리가 어려울 수 있습니다.
참고 https://www.codestates.com/blog/content/%EC%95%A0%EC%9E%90%EC%9D%BC%EB%B0%A9%EB%B2%95%EB%A1%A0-%EC%9B%8C%ED%84%B0%ED%8F%B4%EB%B0%A9%EB%B2%95%EB%A1%A0 https://brunch.co.kr/@lucy5016/8 https://www.servicenow.com/kr/products/strategic-portfolio-management/what-is-agile-vs-waterfall.html https://www.atlassian.com/ko/agile/kanban/kanban-vs-scrum