가장 많이 사용되는 생명주기 모델의 예시 4가지를 알아보자.
❗️프로젝트의 특성에 따라 생명주기 모델을 변경하여 사용할 수도 있다.
1. V모델
- 확장된 폭포수 모델 중 하나
- 시스템의 요구사항이 모두 식별되고 명확할 때 이상적인 생명주기 모델이다.
- 즉, 요구사항이 명확하지 않으면 제대로 작동하지 않을 가능성이 높음
- 요구사항이 명확하지 않아도 사용할 수는 있음. 다만 이 경우, 프로젝트 초기 계획은 고객이 기대하는 시작/종료일, 주요 리스크, 가정사항, 의존관계, 요구사항이 모두 식별되고 명확해지는 예상 날짜 등을 포함하여 기술해야 한다.
- V 모델은 개발 생명주기의 각 단계와 그에 상응하는 소프트웨어 시험 각 단계의 관계를 보여준다.
- 즉, 프로젝트 관리자와 개발자에게 프로젝트 수행 동안 어떤 활동이 수행되어야 하는 지 명확하게 보여줌
- 또한 테스트 동안 결함이 발견되면, 개발 활동의 어느 단계를 재수행해야하는 지 알 수 있음
- 프로젝트의 검증 및 확인(Verification and Validation)을 강조하는 모델
- 왼쪽 단계들 : 검증 (Vefication)
- 오른쪽 단계들 : 유효화 (Validation)
- 소프트웨어 개발의 각 단계마다 상세한 문서화를 통해 작업을 진행하는 잘 짜인 방법을 사용한다.
- 테스트 설계와 같은 테스트 활동을 코딩 이후가 아닌 프로젝트 시작 시에 함께 시작하여, 전체적으로 많은 양의 프로젝트 비용과 시간을 감소시킨다.
2. VP모델 (V Model with Prototyping)
VP모델에 프로토타이핑 기법을 추가함으로써 프로젝트의 불확실성 요소나 리스크를 줄일 수 있다.
💡 프로토타이핑이란?
시스템에 대한 이해 또는 리스크, 불확실성 요소와 같은 이슈를 해결하기 위해 시스템 혹은 시스템의 일부분을 빠르게 개발하는 방법
➡︎ 무엇이 필요하고 무엇이 개발되어야 하는지 개발자와 고객이 공통적인 이해를 이끌어낼 수 있음
✅ 프로토타이핑은 폭포수 모델 혹은 V 모델 등의 개발 단계에 적용될 수 있으며 독립적인 생명주기 모델로 사용될 수도 있음
프로토타이핑 기법은 아래와 같이 두 가지 접근방법으로 수행될 수 있다.
1️⃣ 해결하려는 문제가 명확하지 않을 경우
적용 가능한 해결책을 조사하고 이를 적용해본다.
예) 사용자 인터페이스를 구현하는 경우, 시스템 성능 향상 방안을 찾는 경우, 에러 혹은 결함 관리의 경우
[절차]
1. 불확실성 요소를 정의한다.
2. 해결책을 찾고, 이를 적용하기 위한 방법을 정의한다.
3. 해결책을 정의해 본다.(반복 수행 가능)
4. 적용 결과를 통해 불확실성 요소의 원인을 찾는다.
2️⃣ 해결하려는 문제가 명확해 적용하려는 해결책에 리스크나 불확실성 요소가 존재하는 경우
여러가지 선택 가능한 해결책을 열거하고, 정해진 기준에 따라 이를 평가한다.
예) 특정 기능에 대한 미들웨어를 선택해야 하는 경우, 여러 환경 요소에 대한 설계의 성능을 고려해야 하는 경우
[절차]
1. 불확실성 요소를 정의한다.
2. 선택 가능한 해결책을 열거하고, 선택 기준을 정의한다.
3. 선택 기준에 따라 해결책을 평가한다.
4. 가장 적합한 해결책을 선택한다.
3. 점증적 모델
시스템 개발 시간을 줄일 필요가 있을 경우 유용한 모델이다.
예) 고객이 원하는 날짜까지 완벽한 시스템 구현은 어렵지만, 동작 자체는 하도록 개발해야 하는 경우
- 위와 같은 경우에는 핵심 기능만 먼저 개발하여 동작 가능하게 만든 후, 나머지 기능을 구현하는 방식을 채택한다는 것
- 스스로 생각하기에 주로 해커톤 프로젝트가 점증적 모델을 채택하는 경향이 있다고 판단됨.
[ 특징 ]
- 시스템은 몇 번의 기능 확장을 통해 개발되며, 각 단계에서는 구현한 몇 가지 기능만 작동함
- 마지막 시스템 버전이 모든 기능이 구현된 시스템
- 대부분의 요구사항이 정의되어 있지만, 시간이 지남에 따라 개선 여지가 있는 경우에 유용한 모델
- 시간이 지나면서 점진적으로 기능 구현을 하기 때문에 비교적 수정 및 개선 용이
- 개발 초기의 외부 인터페이스(H/W & S/W)에 대한 리스크를 줄이는 데 유용하게 적용
- 각 기능 확장 개발 단계의 요구사항이 대체적으로 명확하기 때문에 V모델 및 VP 모델 모두 적용 가능함.
4. 진화 모델
시스템 개발 시간을 줄일 필요가 있을 경우 유용한 모델이다.
💡 점증적 모델과의 차이점
➡︎ 전체 시스템에 대한 개발 단계가 여러 번 반복된다.
즉, 각 시스템 버전은 사용자에게 모든 기능을 제공한다.
한 번에 개발을 완성하고, 이 후 변경 사항이 도출되며 다음 시스템 개발에 반영되는 방식이다.
- 시스템 명세가 전체적으로 불분명한 경우, 제품의 개선이 지속적으로 요구되는 경우에 적합한 모델
- 실무에서는 보통 점증적 모델과 조합해서 혼합 모델을 사용하는 경우가 많음.
- 즉, 새로운 시스템 버전에서 (1)기존 기능이 향상됨과 동시에 (2)새로운 기능 추가 가능
[ 혼합 모델의 특징 ]
- 시스템이 완전한 기능을 갖추지 않아도 시스템에 대한 초기 교육 가능
- 초기 교육을 받고 시스템을 사용함으로써 시스템에 익숙해지고, 실무에 필요한 개선사항 도출 가능
- 개발 기간의 단축으로 인한 시스템 조기 사용 (시장 우선 점유)의 경쟁력을 가질 수 있음
- 시스템이 여러 번에 걸쳐 개발되기 때문에 시스템의 예상치 못한 문제 도출 및 조기 수정 가능
- 전문 분야별로 나눠서 시스템 개발 가능
'소프트웨어_개발' 카테고리의 다른 글
소프트웨어공학-애자일개발방법론 (2) | 2023.09.10 |
---|---|
소프트웨어공학-개론/개발생명주기/개발방법론 (0) | 2023.09.10 |