3. 소프트웨어 공학과 개발 프로세스(3) - 진화적, 단계적, 통합 프로세스 모델
소프트웨어 개발은 상당한 시간과 비용이 요구되는 작업이다. 효과적인 개발을 위해 단계적이고 체계적인 계획을 수립하는 것은 분명히 도움이 되지만 현실적으로는 다양한 도전 과제에 직면하게 된다. 개발 과정에서 사람은 실수를 저지를 수 있으며, 요구사항은 지속적으로 변화하기 때문에 개발이 완료되었다고 해서 모든 작업이 끝난 것이 아니다. 이후에도 유지보수와 수정이 필요하며, 새로운 요구사항에 따라 기능을 확장하거나 수정해야 할 수도 있다.
그러나 전통적인 폭포수 모델과 같은 소프트웨어 개발 방법론은 이러한 변화에 유연하게 대응하기 어렵다는 한계를 지닌다. 따라서 오늘은 이러한 문제를 해결하기 위해 제안된 여러 소프트웨어 개발 모델들에 대해 살펴보겠다.
1. 진화적 프로세스 모델

가장 먼저 소개할 모델은 진화적 프로세스 모델이다. 이 접근법은 점진적인 개발 방식을 대체하며 프로토타입(prototype)을 통해 사용자의 요구사항을 신속하게 반영하고 수정할 수 있는 특징이 있다.
프로토타입을 사용하면 사용자의 피드백을 빠르게 반영할 수 있어 최종 개발 단계에서 수정이 최소화된다는 장점이 있다. 특히, 요구사항이 명확하지 않거나 변화 가능성이 큰 경우에 효과적이다.
그러나 이것의 단점은 초기 프로토타입을 만드는데 시간이 오래 걸리면 전체적인 일정이 지연될 수 있다는 점과 초기 프로토타입을 완성한 이후에도 여러 번의 수정이 필요할 수 있어 개발 범위가 명확하지 않은 경우에는 오히려 혼란을 초래할 수 있다.
1.1. 나선형 모델

위의 모델의 단점을 보완한 모델로 나선형 모델(Spiral Model)이 있다. 이 방법은 위험 분석(Risk Analysis)을 추가한 방법이다. 이는 주기적으로 위험을 분석하고 해결 방안을 모색하여 개발을 반복하기 때문에, 수정 과정에서의 리스크를 최소화할 수 장점이 있다.
그러나 이 방법의 단점은 위험 분석을 위한 시간이 많이 걸릴 수 있다는 점이다. 이는 비용의 증가의 원인이 될 수 있다. 또한 위험 분석을 위해서 개발자가 어떤 일을 하는지 모를 경우 위험 분석사를 고용해야하기 때문에 더 많은 비용이 생길 수가 있다.
2. 단계적 기본 모델

위 방법에 시간이 많이 걸리는 단점을 더욱 보안한 모델이 있다. 이름은 단계적 기본 모델로 기능들을 정의하고 이를 개발하고 이를 사용하게 하고 다시 기능들을 개발하고 릴리즈 하는 방식을 반복한 다음 하나로 합병하는 것이 있다.
장점은 빠르게 개발이 가능하다는 장점이 있고 이에 따라 비용이 줄어든다는 장점이 있다. 하지만 통합을 할 때, 시간이 많이 걸러 문제가 발생하는 경우가 존재한다.
3. 점증적 개발 모델
위의 모델의 문제점을 보안하는 방법은 점증적인 개발 방법이 있다. 예로 들어 1~3장 까지 만들고 나중에 4~7장을 만들고 8~10장까지 만드는 방법이 있다. 이렇게 만들게 되면 장점은 적은 금액으로도 개발이 가능하고 필요할 때 자본을 더욱 풀어 점증적으로 모델을 만들어내는 것이 있다.
하지만 단점은 다른 서브시스템과 연관성과 통합을 하기가 어렵다는 단점이 있다.
4. 반복적 개발 모델

위 모델보다 더 좋은 방법이 있는데 이 방법은 바로 반복적 개발 모델이다. 즉, 반복적으로 요구사항을 정리하고 개선하는 방법을 사용하고자 하는 것이다. 여기서 등장하게 된 개념은 patch로 초기 버전을 빠르게 릴리즈한 후, 추가적인 기능이나 수정 사항을 반복적으로 반영하여 완성도를 높인다.
5. 통합 프로세스 모델

소프트웨어 개발에서 발생하는 다양한 문제를 해결하기 위해 여러 개발 모델이 제안되었으며, 그중 하나가 통합 프로세스 모델(Unified Process Model, UPM)이다. 이 모델은 2000년대 이전 대기업에서 개발되었고, 소프트웨어 설계 언어인 UML(Unified Modeling Language)의 기초가 되었다. 이후 이 방법론은 IBM에 의해 흡수되어 더욱 발전하였다.
통합 프로세스 모델은 네 단계의 명확한 절차를 바탕으로 반복적이고 점진적인 개발을 추구한다. 단순히 순차적으로 개발 단계를 따르는 것이 아니라 각 단계에서 모델링과 요구사항 분석을 지속적으로 검토하고 수정한다. 이러한 반복적인 접근은 오류를 최소화하고 요구사항의 변경에 유연하게 대응할 수 있게 한다.
5.1 통합 프로세스 모델의 단계
1. 도입(Inception)
목적: 프로젝트의 초기 아이디어를 구체화하고, 비용과 시간 계획을 수립한다.
주요 활동: 요구사항 분석, 위험 요소 평가, 프로토타입 제작, 유스케이스 도출을 통해 프로젝트의 전반적인 방향성을 설정한다.
2. 구체화(Elaboration)
목적: 시스템의 아키텍처를 설계하고, 핵심 기능을 명확히 정의한다.
주요 활동: 전체 유스케이스의 약 80%를 완료하며, 아키텍처의 기초를 다지고 주요 리스크를 해결한다.
3. 구축(Construction)
목적: 실제 소프트웨어를 개발하고, 실행 가능한 시스템을 만든다.
주요 활동: 모든 개발 요소를 구현하고, 테스트를 통해 오류를 검증한다. 이 과정에서 사용자 매뉴얼도 작성하게 된다.
4. 전이(Transition)
목적: 개발된 시스템을 실제 운영 환경에 배포하고, 최종적인 테스트를 통해 성능을 검증한다.
주요 활동: 메타 테스트와 사용자 피드백을 수집하여 개선 사항을 반영하고, 제품을 안정화한다.
5.2 통합 프로세스 모델의 특징과 장점
- 반복적 접근: 각 단계를 반복적으로 수행하여 요구사항 변경에 유연하게 대응한다.
- 형상 관리(Configuration Management): 지속적인 버전 관리와 협업 도구를 통해 효율적으로 협업하고 변경 사항을 추적한다.
- 위험 관리: 각 반복 주기에서 리스크를 분석하고 해결책을 마련하여 프로젝트의 안정성을 높인다.
통합 프로세스 모델은 대규모 소프트웨어 프로젝트에서 특히 효과적인 방법론으로 평가받고 있다. 복잡한 요구사항과 지속적인 변경이 예상되는 프로젝트에 유용하며, 반복적인 피드백을 통해 높은 품질의 소프트웨어를 개발할 수 있게 해준다.
'Computer Science(컴퓨터 과학) > 소프트웨어공학' 카테고리의 다른 글
6. UML(2) - 클래스, 순차, 통신, 활동, 상태, 컴포넌트 다이어그램 (0) | 2025.04.01 |
---|---|
5. UML(1) - 유스케이스 다이어그램 (0) | 2025.03.25 |
4. 소프트웨어 공학과 개발 프로세스(4) - 에자일 모델 (0) | 2025.03.24 |
2. 소프트웨어 공학과 개발 프로세스(2) - V모델과 Test와 Moduel (0) | 2025.03.11 |
1. 소프트웨어 공학과 개발 프로세스(1) (1) | 2025.03.10 |