1) 폭포수 모형(Waterfall Model)
특징
-
1970년대 항공 소프트웨어 개발 경험으로 습득
-
계획 -> 요구분석 -> 설계 -> 구현 -> 테스트 -> 인수 설치
-
각 단계가 순차적으로 진행되며 다음 단계는 이전 단계가 완전히 끝난 후 진행되어야 함
장점
-
프로세스가 단순하여 초보자도 쉽게 적용 가능
-
중간 산출물이 명확하고 관리하기 쉬움
-
코드 생성 전 충분한 연구/분석이 진행됨
단점
-
각 단계의 전환에 많은 노력이 필요
-
필요 없는 다종의 문서를 생산할 가능성이 높음
-
오랜 계획과 분석으로 코딩 및 테스트가 지연될 가능성 존재
-
프로토타입과 재사용성의 기회가 줄어듦
적용 분야
-
이미 잘 알고 있는 문제나 연구
-
변화가 적은 프로젝트에 적합
2) 프로토타이핑 모형(Prototyping Model)
특징
-
사용자의 요구를 더 정확히 추출하기 위한 모형
-
이해를 목적으로 만들고 버리는 '쓰고 버리는 프로토타이핑(Throwawy Prototyping)'과
-
개발된 프로토타입을 수정, 보완하여 확장하는 '진화하는 프로토타이핑(Evolution Prototyping)'이 있음
장점
-
사용자의 의견을 반영함
-
개발자가 요구를 정확히 도출
단점
-
중간 산출물의 정의가 난해하여 관리하기 어려움
-
사용자의 오해 및 기대심리 유발
적용 분야
-
사용자의 요구가 불투명한 프로젝트
-
실현 가능성을 타진하는 용도
-
혁신적인 기술을 사용하는 프로젝트에 적합
3) 점증적 모형(Incremental Model)
특징
-
빠른 시간 내에 프로젝트를 완료하기 위하여 시스템을 나누어 릴리즈
-
기능별로 릴리즈 하는 점증적 방법과 릴리즈 할 때마다 완성도를 높이는 반복적 점증으로 나뉨
장점
-
기능이 부족하더라도 초기에 사용 가능
-
시장 선점 가능
-
예상하지 못한 문제에 대해 신속하고 꾸준하게 수정 가능
-
릴리즈 할 때마다 다른 전문 영역에 포커싱 가능
단점
-
사용자의 요구를 적절한 크기로 릴리스하기 어려움
4) 나선형 모형(Spiral Model)
특징
-
시스템을 기능별로 나누어 점증적으로 개발하여 실패의 위험을 줄이고, 테스트를 용이하게 함
-
계획 수립, 위험분석, 개발, 평가의 단계로 이루어짐
장점
-
대규모 시스템 개발에 유용
-
반복적인 개발 및 테스트로 강인성 향상
단점
-
관리가 중요
-
위험 분석이 중요
적용 분야
-
재정적 또는 기술적으로 위험 부담이 큰 경우
-
요구사항이나 아키텍처 이해가 어려운 경우
5) V 모형(V-Model)
특징
-
요구분석 → 시스템 설계 → 상세 설계 → 코딩
인수/설치 ← 시스템 테스트 ← 통합 테스트 ← 단위 테스트
-
폭포수 모형의 변형으로 감추어진 반복과 재작업을 드러내고 결과의 검증에 초점을 맞춘 모델
장점
-
오류를 줄임
단점
-
반복이 없어 변경을 다루기 어려움
적용 분야
-
신뢰성이 요구되는 분야
6) 일정 중심 설계 모형(Design-to-schedule Model)
특징
-
사용자 요구에 대하여 우선순위를 정하고, 이를 기초로 각 사이클을 계획
-
초기 단계에 중요한 기능들을 설계하고 구현하여 시스템의 골격을 만듦
장점
-
상대적으로 덜 중요한 기능을 후순위에 두기 때문에 일정 조정이 가능
단점
-
출시에 포함되지 않을 기능까지 분석, 설계하기 때문에 시간 낭비 가능성 존재
적용 분야
-
소프트웨어 제품의 출시 날짜가 매우 중요한 경우
-
목표 일정을 달성할 수 있을지 불확실할 때
7) 진화적 출시 모형(Evolutionary-delivery Model)
특징
-
고객의 요구를 여러 사이클에 걸쳐 개발하여 보여주면서 제품을 개선해 나가는 모형.
* 프로토타이핑 모형과 차이점
-
고객의 요구를 프로토타이핑 모형처럼 전적으로 수용하지는 않음
-
즉, 고객의 요구로 변경사항이 적은 부분이 시스템의 핵심
-
프로토타이핑 모형은 시스템에서 눈에 띄는 부분을 먼저 강조하고 나중에 구멍을 메워 나가는 식
'컴퓨터공학과 > Software Engineering' 카테고리의 다른 글
[소프트웨어공학] 요구공학(요구공학 작성 / 요구사항 프로세스) 정리 (0) | 2020.03.30 |
---|---|
[소프트웨어공학] 애자일 소프트웨어 개발 방법론: Crystal 완벽 정리 (0) | 2020.03.18 |
[소프트웨어공학]소프트웨어 오류. 에러의 종류 및 차이. (0) | 2020.03.15 |
[소프트웨어공학] 소프트웨어 품질 성숙도 모델. CMMI와 SPICE (0) | 2020.03.14 |
[소프트웨어 공학] 소프트웨어공학 이론 (0) | 2014.01.14 |