폭포수 모델(waterfall model)
소프트웨어 프로세스 중 하나로 개발의 흐름 단계가 마치 폭포수처럼 흐른다 하여 폭포수 모델이라고 하며, 선형 순차 모델 또는 고전적 소프트웨어 생명주기라고도 한다.
폭포수 모델의 특징
- 수행되는 활동들이 서로 겹치지 않음
- 단계들이 병행 수행되거나 거슬러 올라가지 않음
- 매 단계에서 끝날 때마다 결과를 확인 후 다음 단계로 가야 함
- 수정을 위한 재작업을 위해 앞 단계의 피드백 필요
폭포수 모델은 다음과 같은 단계를 가진다.
- 타당성 조사
- 요구분석
- 설계
- 개발
- 통합과 시스템 테스트
- 이행과 유지보수
타당성 조사
먼저 첫 번째 단계에서는 개발할 소프트웨어 시스템의 세부 사항을 확인하는 것이다. 이것을 확정 지어야 다음 설계 단계로 넘어갈 수 있다. 즉, 소프트웨어 개발 시나리오를 미리 예측해볼 수 있는 단계로 문제 해결 방안들을 평가하고 타당성 있고 합리적인 방향으로 방안을 제시하기 위한 것이다.
- 문제점 파악 및 방안을 제시하여 비용 대비 이익 평가
- 문제를 분석하는데 시간적 제약
- 타당성 조사 보고서 작성 : 문제 정의, 기술적 경제적 타당성, 비용과 날짜 포함
요구 분석
요구분석 단계는 프로젝트 요구 사항과 필요성을 기술하는 단계이다. 이 단계는 폭포수 모델에서 매우 중요한 단계라고 할 수 있다.
요구분석 단계에서는 소프트웨어 시스템이 갖추어야 할 기능, 성능, 편의성, 이식성 등을 파악하기 때문에 중요한 단계라고 할 수 있다.
또한 이 단계의 결과 문서인 SRS(요구사항 명세서)는 소프트웨어 시스템이 무엇을 하는지에 관한 설명을 담고 있다.
- 문제에 관한 구체적 기술
- 문제 해결을 위한 대안
- 시스템의 기능 요구사항
- 제약사항
SRS는 위와 같은 내용을 포함하여야 한다.
설계
위 단계에서 언급한 요구사항들을 구현 작업에 적합하게 조직화된 구조의 형태로 바꾸는 것이다. 시스템 설계는 하드웨어 및 시스템 요구 사항을 지정하며 설계 단계는 시스템 아키텍처, 프로그램 설계, 인터페이스 설계로 구분된다.
개발
실제 프로그램을 개발하는 단계이다. 코딩 작업을 할 때는 조직이 정한 프로그램 레이아웃과 코딩 표준을 준수해야 한다. 단위 테스트도 마찬가지이다. 테스트 계획, 모듈 테스트 방법, 테스트 수준의 결정에 조직이 정한 표준을 적용한다. 또한 코드의 정적 분석 방법을 검사하기 위해 코드 인스펙션 작업을 수행할 수도 있다.
통합과 시스템 테스트
모듈을 통합하고 최종적으로 전체 시스템이 요구사항을 만족하는지 확인하는 단계이다. 개발 현장에서 직접 테스트하는 '알파 테스트'와 실제 사용자가 테스트하는 '베타 테스트' 두 가지 의 테스트 작업이 존재한다. 이 테스트 과정들에서는 문제점을 발견하여 피드백을 받고 그 피드백을 기반으로 수정하여 시장에서 판매한다.
이행과 유지보수
유지보수란 결함을 수정하고 성능이나 기타 특성을 개선하는 소프트웨어 제품의 수정을 말한다. 일반적으로 유지보수라고 하면 결함을 수정하는 것을 동반하는 것을 말하며, 네 가지 종류로 분류된다.
- 수정 유지보수
- 적응 유지보수
- 완전 유지보수
- 예방 유지보수
폭포수 모델의 장점
- 선형 모델로써 단순함과 이해가 편함
- 체계적 문서화 가능
- 프로젝트의 진행 상황을 알 수 있음
폭포수 모델의 단점
- 완벽한 문서화를 요구함
- 변경의 수용이 용이하지 못함
- 시스템의 동작을 개발 막바지에 확인 가능함
- 위험 분석을 수행하지 않음
- 위험 분석을 수행하지 않기 때문에 대형 프로젝트에 적합하지 않음
- 확장되기가 어려움
폭포수 모델의 진화 모델 : 사시미 모델
사시미 모델
모델은 각 단계가 겹쳐서 진행된다는 의미에서 이러한 이름이 붙었다. 또한 피드백 있는 폭포수 모델로 볼 수 있다. 각 단계들이 서로 오버랩되어 있기 때문에 문제점이 발생하면 그 전 단계에서도 파악이 가능하다.
- 설계과 구현은 겹쳐서 진행됨
- 위험 요소의 발견이 비교적 빠름
- 폭포수 모델의 한계점을 완화함
- 중간 규모 프로젝트에 적합
- 하지만 진행사항을 추적하기에는 다소 어려움이 따름
참고 서적과 자료
소프트웨어 공학(김희천 저)
https://medium.com/@joneswaddell/the-cascading-costs-of-waterfall-5c3b1b8beaec
https://ko.wikipedia.org/wiki/%ED%8F%AD%ED%8F%AC%EC%88%98_%EB%AA%A8%EB%8D%B8
https://www.softwaretestinghelp.com/what-is-sdlc-waterfall-model/
학부에서 공부한 내용들을 정리하며 올립니다.
'Study > Software Engineering' 카테고리의 다른 글
[소프트웨어공학] 소프트웨어 프로세스 개요 (2) | 2020.04.05 |
---|---|
[소프트웨어공학] 소프트웨어 공학의 정의 (2) | 2020.04.04 |
[소프트웨어공학] 소프트웨어(Software) (3) | 2020.04.03 |