소프트웨어 공학
소프트웨어 개발 모델
rabbit-jun
2025. 4. 12. 18:28
진화적 프로세스 모델
1. 나선형(Spiral)모델
- 위험 중심(Risk-driven) 개발 모델
- 위험 분석 단계에서 위험 요소는 소프트웨어 개발 과정이 진행되는 데 방해되는 모든 것
- 초기 요구분석 후 프로토타입 개발 이전에 위험 분석 단계를 거침
2. 나선형모델의 개발 절차
- 계획 및 요구분석 단계
- 사용자의 개발 의도를 파악해 해당 프로젝트의 목표를 명확히 하고, 여러 제약 조건의 대안을 고려한 계획을 수립
- 사용자의 요구를 통해 파악 한 기능 요구사항과 성능 등 비기능 요구사항을 정의하고 분석
- 위험 분석 단계
- 프로젝트 수행에 방해되는 위험 요소를 찾아 목록을 작성하고 위험에 대한 예방 대책을 논의
- 심각한 위험이 존재하는 경우에는 해당 프로젝트를 계속 진행해도 되는지를 점검
- 개발 단계
- 프로토타입을 만드는데, 다른 소프트웨어 개발 프로세스의 설계와 구현에 해당
- 사용자 평가 단계
- 사용자가 만족할 때까지 n번 반복해 더 이상의 추가 및 수정 요구가 없으면 최종 제품을 개발
- 사용자 평가 단계는 진화적 프로토타입 모델에서 매우 핵심적이고 중요
3. 나선형 모델의 장점과 단점
- 나선형 모델의 장점
- 사전에 위험을 의식하고 개발하기 때문에 프로젝트가 중단될 확률 적음
- 사용자의 요구가 충분히 반영되어 사용자의 불만이 적음 (개발자가 힘듬)
- 나선형 모델의 단점
- 요구분석, 위험 분석, 개발, 사용자 평가가 반복적으로 계속 진행되기 때문에 프로젝트 기간이 길어질 수 있음
- 반복 횟수가 많아질수록 프로젝트 관리가 어려움
- 위험 관리가 중요한 만큼 위험 관리 전문가가 필요하다는 부담감이 있음
단계적 개발 모델
- 각 릴리스마다 사용자에게 제공
- 사용자가 릴리스를 사용하면 개발자는 다음 릴리스 버전 개발
1. 점증적 개발 방법: 개발 범위의 증가
- 기능 단위로 조금씩 추가하여 전체 시스템을 구성해감
- 중요한 부분부터 개발 후 그 일부를 사용하면서 개발 범위를 점차 늘려가는 방식
- 요구분석명세서에 명시된 시스템 전체를 기능에 따라 독립성 높은 서브 시스템으로 분할
- 각 서브시스템을 단계적으로 하나씩 릴리스해 완성하는 방법
2. 단계적 개발 방법의 장점과 단점
- 장점:
- 한꺼번에 많은 비용 들이지 않아도 된다
- 완전히 새로운 시스템 전체를 한 번에 주었을 때 조직이 받는 충격 완화
- 이미 사용하고 있는 서브시스템이 있어 어떤 유형으로 개발해야 하는지 잘 알 수 있음
- 단점:
- 서브시스템들이 서로 관련이 있어 처음 설계할 때부터 이후에 개발할 다른 서브시스템과의 연관성을 고려해야 함
- 이미 개발된 서브시스템들과 통합하는 데 어려움을 겪을 수 있음
3. 반복적 개발 방법: 품질의 증가
- 이미 만든 기능의 완성도를 높이고 품질을 다듬는 과정 반복
- 초기 버전의 전체 시스템을 일차적으로 구현한 후 , 기능과 성능을 점진적으로 개선
- 초기의 요구사항이 불분명한 경우에 적합
통합 프로세스 모델: 반복적 개발 방법론
- 폭포수 모델의 문제점( 요구사항이 많거나 변경이 많은 경우, 민첩하게 대응하기 어려움)을 해결하기 위해 반복적 개발 방법론이 등장(시간이 오래걸림)
- 사용자 요구 변화에 유연하게 대응하고, 점진적 산출물 도출, 위험 최소화를 목표로 함.
- 반복적 생명주기 기반 모델 중 대표적인 방식
- 대표적으로 RUP (Rational Unified Process)가 있음.
1. 통합 프로세스 모델의 절차
- 통합 프로세스 모델의 개발 과정은 크게 4단계도입,구체화,구축,전이로 나뉨
- 각 단계도 여러 개의 작은 단위(반복)로 나뉘어 반복 구간을 하나씩 정함
- 반복 주기를 시작하기 전에 기준선(베이스라인)계획 수립
- 반복 주기가 끝나면 실행 가능한 산출물이 도출되며, 이것을 위험 요소의 제거 여부를 판단하는데 사용
- 반복 구간 하나가 수행될 때 전체 9개의 개발 영역이 대부분 수행
2. 통합 프로세스 모델의 개발 순서
- 관리 가능한 소규모 단위로 나뉨
- 그 안에서 수행될 작은 단위의 계획을 세움(9개 개발 영역도 작은 단위 내에서 이루어짐)
- 각 반복에서 작은 부분을 통합,테스트 실행
3. 도입 단계
- 비즈니스 모델링과 요구사항 정의 관련 작업이 가장 많이 이루어진다
- ex. 아이디어 도출, 투자 비용 대비 효과 분석, 프로젝트 계획, ...
4. 구체화 단계
- 상세 단계, 정련 단계로도 불리고 보통 2~4개의 반복 단위로 구성
- 비즈니스 모델링과 요구사항 정의 작업은 점차 줄고, 대신 분석 및 설계 작업이 크게 이루어짐
- 설계 결과에 따라 구현(코딩)작업, 구현에 대한 단위 테스트가 조금씩 시작
- ex. 아키텍처 수립, 상세한 프로젝트 계획, 요구사항의 기능 요소에 대한 문서화, ...
5. 구축 단계
- 구현 작업이 가장 많이 이루어짐
- 비즈니스 모델링과 요구사항 정의 작업은 많이 줄고, 분석 및 설계 작업도 구체화 단계보다 줄어듬
- ex. 만들어진 프로토타입을 기반으로 인도 가능한 최초 실행 버전의 소프트웨어 개발, 모든 개발 요소 구현, ...
6. 전이 단계
- 이행 단계라고도 하며 사용자를 위한 제품을 완성하는 단계
- 완성된 제품을 사용자에게 넘겨주는 과정에서 수행해야 할 일을 작업
- ex. 개발된 모듈에 대해 베타 테스트 실시, 개발된 소프트웨어를 사용자 환경에서 사용자가 직접 테스트(인수 테스트), ...
7. 각 단계의 공통점
- 분석,설계,구현,테스트 작업을 공통으로 수행(정도의 차이 있음)
- 각 작업 반복 수행(구체적 반복 횟수는 조직 또는 프로젝트에 따라 달라질 수 있음)
- 형상 및 변화 관리, 프로젝트 관리, 환경 점검 등은 지속적으로 수행
8. 개발 시간과 복잡도 곡선
- 실행 시간은 일반적으로 입력 크기 n 에 따라 변화하며, 이를 수학적으로 상한(Big-O), 평균(Theta), 하한(Omega)으로 표현할 수 있다.
반응형