소프트웨어 개발 프로세스 - 반복적 모델의 종류와 차이점
소프트웨어 개발 프로세스 - 반복적 모델의 종류와 차이점
소프트웨어 개발 프로세스 모델 중 반복적 모델은 증분형(Incremental) 모델과 진화형(Evolutional) 모델 두 가지로 구분할 수 있다.
1. 반복적 모델 - 진화형 모델(Iterative Evolutional Model)
- 불안정한(미완성된) 요구사항으로부터 명세(설계) ➡️ 개발 ➡️ 검증 과정을 거쳐 초기버전 개발
- 명세(설계) ➡️ 개발 ➡️ 검증 과정을 반복하여 중간 버전, 최종 버전 개발
- 프로토타이핑을 통해 요구사항을 보완하며 점차적으로 명확한 요구사항 도출
- 반복 진화형 모델의 확장 형태로 나선형 모델(spiral model)🔗이 있다.
- 장점
- 요구사항이 완성되지 못한 경우에도 초기 버전 개발 가능
- 단점
- 개발 비용 예상 어려움
- 반복 작업에 의한 프로젝트 지연 가능성 큼
- 잦은 수정 작업 - 소프트웨어 구조와 유지보수에 악영향
2. 반복 진화형 모델에서 사용하는 프로토타이핑(Prototyping) 방법이란?
프로토타이핑은 개발초기에 시스템의 모형(원형, prototype)을 간단히 만들어 사용자에게 보여 주고, 사용자가 정보시스템을 직접 사용해 보게 함으로써 기능의 추가, 변경 및 삭제 등을 요구하면 이를 즉각 반영하여 정보시스템 설계를 다시 하고 프로토타입을 재구축하는 과정을 사용자가 만족할 때까지 반복해 나가면서 시스템을 개선시켜 나가는 방식이다. - 위키백과
- Throwaway Prototyping
- 프로토타입을 의사소통 수단으로만 사용
- 요구사항이 확인되면 프로토타입을 버리고 새로 개발
- Evolutionary Prototyping
- 요구사항이 명확한 부분부터 프로토타입을 개발하여 점진적으로 발전시켜 최종 버전을 개발
- 장점
- 프로젝트 실현 가능성, 소프트웨어 개발 가능성 판단 가능
- 개발자-사용자 간 의사소통이 명확해짐
- 기능적 요구사항 외에도 성능, 유용성 등의 품질 요구를 분명히 할 수 있음
- 시스템을 미리 사용함으로써 사용자 교육 효과가 있음
- 개발 단계에서 유지보수가 일어나는 효과가 있음
- 단점
- 문서화 어려움
- 진행사항 제어가 어려움
3. 반복적 모델 - 점증적 모델(Iterative Incremental Model)
- 여러 개의 시스템/모듈로 분해하고 각각을 점증적으로 개발, 릴리즈하는 방식
- 선형 순차 모델을 여러 번 적용하고 그 결과를 조합함
- 각 모듈을 증분(Increment)이라고 한다.
- 핵심 증분을 우선적으로 개발
- 장점
- 핵심 증분을 먼저 개발하므로 사용자는 시스템을 비교적 일찍 사용 가능
- 릴리즈 방식 - 요구사항 변화에 대응 용이
- 여러 증분으로 쪼개지므로 각 증분의 관리가 용이
- 먼저 개발되는 핵심 증분이 반복적으로 테스트되는 효과
- 단점
- 현실적으로 기능적 분해가 어려움
- 증분들을 개발하기 전에 요구사항을 명확하게 정의해야 함
4. 반복적 모델 - 진화형 모델 VS 점증적 모델
- 반복 진화형 모델
- 요구사항이 불안정, 불명확할 때 사용
- 개발이 진행되면서 요구사항의 변화를 수용
- 새로운 기술을 적용해야 할때 적합
- 한 번에 모든 기능을 포함한 버전을 인도해야 하는 경우에 사용
- 요구사항을 나누지 않고 전체 요구사항에 대해 명세(설계) ➡️ 개발 ➡️ 검증 반복
- 반복 점증적 모델
- 요구사항의 중요도에 따라 요구사항을 나누고 작업 순서를 정함
- 중요한 요구사항을 먼저 개발
- 개발 과정에서 여러 번의 릴리즈가 발생
References
한국방송통신대학교 컴퓨터과학과 소프트웨어공학(김희천 교수)
'기타 정보 > 소프트웨어 공학' 카테고리의 다른 글
소프트웨어 개발 방법론 - 애자일(Agile) 방법론 (0) | 2021.04.21 |
---|---|
소프트웨어 개발 프로세스 - 나선형 모델과 V 모델 (0) | 2021.04.21 |
소프트웨어 개발 프로세스 모델 - 폭포수 모델(Waterfall Model) (0) | 2021.04.21 |
[컴퓨터보안] 암호의 개념과 대칭키 암호, 공개키 암호 (0) | 2021.04.21 |
[컴퓨터보안] 정보보호의 목표 - 기밀성, 무결성, 가용성 (0) | 2021.04.21 |
[컴퓨터공학/소프트웨어공학] 소프트웨어 공학 개요 (0) | 2021.04.21 |
[자료구조] 단순 연결 리스트(singly linked list) - 정리 및 연습문제 (0) | 2021.04.21 |
[자료구조] 큐 - 정리 및 연습문제 (0) | 2021.04.21 |