프로젝트 관리 및 생명주기 모형
04. 소프트웨어 개발의 생명주기 모형
1) 폭포수 모형(Waterfall model)
1. 폭포수 모형의 개발 순서
- 폭포수의 물흐름처럼 한 번 지나가면 다시는 되돌릴 수 없듯이 각 단계를 명확히 하고 다음 단계로 넘어가는 모형
- 타당성 검토
- 계획 단계
- 요구 분석
- 설계 단계
- 구현 단계
- 검사 단계
- 운용 + 유지보수
- 단계가 이미 정해져 있으며 어느 한 단계에 문제가 생겨도 이전 단계 혹은 전전 단계로 되돌아갈 수 없는 것이 원칙
- 가장 오래된 모형으로 많은 적용 사례가 있지만 요구사항의 변경이 어려움
- 각 단계의 결과가 확인되어야만 다음 단계로 넘어감
- 선행 순차적 모형으로 고전적 생명주기 모형이라고도 함
- 두 개 과정이 병행 수행되거나 이전 단계로 넘어가는 경우가 없음
- 사용자의 요구를 만족하는지는 최종적인 결과물이 나와야 확인 가능
2. 폭포수 모형의 특징
- 모형의 적용 경험과 성공 사례가 많음
- 순차적인 접근 방법을 이용
- 오래되고 널리 사용된 전통적인 기법
- 단계적 정의와 산출물이 명확함
- 단계별로 문서화 작업이 필요
- 오류 없이 명확하게 하여 다음 단계로 진행
- 현실적으로 오류 없이 진행하기 어렵기 때문에 거꾸로 되돌아가는 상황이 발생
- 새로운 요구나 경험을 설계에 반영하기 어려움
- 개발이 완료되고 사용 단계에 들어서야 사용자 의견 반영 가능
- 항공 방위 소프트웨어 시스템 개발 경험을 토대로 처음 개발되어 1970년대부터 널리 알려짐
- 유사한 개발 경험이 있는 경우 효율적이고, 품질 면에서 우수함
- 명확성이나 정밀성을 강조하는 경우 코딩이나 테스트 작업이 지연될 수 있음
2. 프로토타입 모형(Prototyping model, Working Prototype)
1. 프로토타입 모형의 순서
- 요구 수집 : 사용자(고객)에게 전부가 아니더라도 구현이 가능한 수준의 요구를 수집
- 빠른 설계 : 수집된 요구사항으로 빠른 설계, 개발 중 발생한 요구사항을 쉽게 반영할 수 있음
- 프로토타입 구축 : 프로토타입형 프로그램을 개발
- 고객 평가 : 사용자(고객)에게 평가를 받음
- 프로토타입 조정 : 프로토타입형 프로그램을 조정
- 전체 단계를 다시 반복
- 모든 단계를 사용자의 요구가 만족되는 수준까지 반복
- 완성된 프로토타입형 프로그램의 정보를 바탕으로 실제 구현 단계로 진행
- 개발 초기 단계에 시범 소프트웨어를 만들어 사용자(고객)에게 경험하게 함으로써 사용자 피드백을 신속하게 제공할 수 있음
- 시스템 개발 초기에 사용자(고객)의 요구 기능을 시제품으로 만들어 사용자로 하여금 기능과 사용성 등에 대해 검증시켜 가면서 시스템을 개발하는 기법
2. 프로토타입의 특징
- 요구사항의 변경이 용이함
- 요구사항이 불명확한 경우 적용하기 좋음
- 최종 결과물의 일부 또는 전체 모형을 볼 수 있음
- 개발 중 발생한 요구사항을 쉽게 반영 가능
- 공동의 참조 모델을 제공
- 구현 단계에서 구현 골격이 됨
- 가상으로 시뮬레이션을 통하여 최종 결과물에 대한 예측이 가능한 모형
- 실제 소프트웨어와 차이가 발생할 수 있음
브룩스(Brooks)의 이론
- 프로토타입 소프트웨어는 폐기 처분하는 첫 번째 시스템이다.
- 개발 일정이 지연된다고 해서 말기에 새로운 인원을 투입하면 일정이 더욱 지연된다.
3) 나선형 모형(Spiral model)
1. 나선형 모형의 개발 순서
- 계획 수립(Planning) : 개발 목적, 수정 계획, 제약조건 등을 설정
- 위험 분석(Risk Analysis) : 위험 요소 및 타당성을 분석하여 프로젝트의 추진 여부를 결정
- 개발 및 검증(Engineering) : 개선된 한 단계 프로토타입을 개발
- 고객 평가(Customer Evaluation) : 개발된 프로토타입을 평가
2. 나선형 모형의 특징
- 계획 수립부터 모든 단계를 반복하면서 개발
- 프로토타입을 지속적으로 발전시켜 최종 소프트웨어 개발까지 이르는 개발 방법으로 위험 관리가 중심인 소프트웨어 생명주기 모형
- 폭포수 모형과 프로토타입 모형의 장점을 살린 모형으로 사용자 요구 확인에 의한 시스템 개발이 가능
- 나선형 모형은 위험 분석을 해나가면서 시스템을 개발
- 대규모 시스템의 소프트웨어 개발에 적합
4) V 모형
1. V 모형의 개발 순서
2. V 모형의 특징
- 코딩을 중심으로 각 단계가 V자 모양을 이루고 있음
- 폭포수 모형은 명확성을 강조한 반면 V 모형을 검증을 강조한 기법
- 폭포수 모형에서 오류 발생 시 각 단계로 되돌아갈 수 있다는 것을 드러낸 모형
- 폭포수 모형의 변형으로 산출물보다는 각 개발 단계의 테스트에 중점을 두며, 테스트 활동이 분석 및 설계와 어떻게 관련되어 있는지 보여줌
- V자 모양 사이의 연결은 각 검사 단계에서 오류가 발생하였을 때 왼쪽의 단계로 되돌아갈 수 있음을 의미
- V 모형은 높은 신뢰성을 필요로 하는 의료 제어 시스템이나 원자력 발전소 제어 시스템 등의 개발에 적합
5) 4세대(4GT : Fourth Generation Techniques) 모형
1. 4세대 모형의 이해
- 4GT는 개발자나 사용자(개발 요청자)가 쉽게 접근할 수 있는 4세대 언어(4GL : Fourth Generation Language)를 이용한 기법
- 4세대 언어의 이용은 소프트웨어의 중요한 기능을 자연 언어와 가까운 수준에서 개발할 수 있다는 것이며, 설계 단계를 축소하고 요구분석 단계에서 구현 단계로 직접 전환할 수 있는 장점을 이용한 방법
- 현실적으로 4GT는 소규모 프로젝트에서는 설계를 축소하여 단기간에 개발될 수 있지만 대규모 프로젝트에서의 분석, 설계 그리고 검사 단계에서 많은 시간이 필요하므로 오히려 개발 시간이 오래 걸리는 문제점이 있음
2. 4세대 모형의 특징
- 자연 언어(4GL 사용)로 원시 코드를 자동 생성
- 설계 단계가 축소되어 있는 모형(4GL 개발 의지)
- 중, 소규모 프로젝트는 시간이 단축될 수 있지만 대규모 프로젝트는 시간과 비용이 많이 소비됨