일반적인 소프트웨어 생명주기
정의 단계
-무엇을 처리하는 소프트웨어인지 정의하는 단계.
-타당성 검토단계, 개발 계획단계, 요구사항 분석단계
개발 단계
-방법에 초점을 두고 소프트웨어를 개발하는 다계
-설계단계, 구현단계, 테스트 단계
유지보수 단계
-변경에 초점을 두고 여러 환경 변화에 따라 소프트웨어를 적응 및 유지시키는 단계
-소프트웨어 생명주기단계에서 시간과 비용이 가장 많이 듬
소프트웨어 개발 과정
1. 일반적인 소프트웨어 생명주기
소프트웨어 개발 생명주기 (SDLC)
분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 단계 -> 유지보수 단계
소프트웨어 개발 생명주기의 대표적인 모델
-폭포수 모델
-프로토타입 모델
-나선형 모델
-애자일 모형
SDLC 모형의 장단점
장점
-각 시스템 개발의 각 단계가 비교적 명확
-각 단계들 간에 유기적인 연관성을 가지고 있어 쉽게 적용할 수 있음
단점
-충분한 분석을 기반으로 개발이 진행되지 않았을 경우 테스트 단계 또는 유지보수 단계에서 문제점이 노출되어 이를 개선하는데 많은 비용과 시간이 소요됨
-대형 프로젝트의 경우 긴 개발기간 동안 외부환경이나 내부 정책이 변화할 소지가 크고, 이를 개선하기 위해 이전 단계로 되돌아가 변경관리를 해야 하므로 막대한 시간과 비용이 들어감
장점
-모형의 적용경험과 성공사례가 많다.
-단계별 정의가 분명하고, 각 단계별 산출물이 정확하다.
단점
-개발과정 중 새로운 요구나 경험을 반영하기 어려움.
-개발된 프로그램이 운영될 때 검출되지 않은 오류에 의해 사용자들의 불편을 초래할 수 있다.
특징
-두 개 이상의 과정이 병행수행 되거나 이전 단계로 넘어가는 경우가 없다.
-현실적으로 오류 없이 다음단계로 진행하기 어렵다.
-개발 과정 중에 발생하는 새로운 요구나 경험을 설계에 반영하기 어렵다.
-실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측함.
-개발 완료시점에서 오류가 발견되는 폭포수 모델의 단점을 보완한 모형
-요구분석단계에서 사용됨
-개발단계에서 유지보수가 이루어짐
특징
-생명주기 중간단계에서 치명적인 오류가 발생할 경우나 사용자의 요구를 잘못 받아들였을 경우 오류를 최소화
-사용자 요구사항 변경이 용이, 요구분석 중심의 개발 방법론
-시스템의 요구사항이 불명확한 경우 효과적
-소프트웨어 생명주기에서 유지보수가 없어지고 개발 단계 안에서 유지보수가 이루어진다.
-사용자가 빠른 시간 내에 개발 완료를 요구할 때 적당한 방법
Brooks 이론
-개발 일정이 지연된다고 해서 말기에 새로운 인원을 투입하면 일정이 더욱 지연된다.
-프로토타입은 폐기 처분하는 첫번째 시스템이다.
-대규모 프로젝트나 큰 시스템에 적합
-추가적인 요구사항이 첨가가능하므로 유지보수 과정이 필요 없음
특징
-대규모 프로젝트에 적당함
-위험분석에 중점을 두어 프로토타입을 발전 시킬 때 마다 점증적으로 소프트웨어 개발을 한다.
-유지보수는 처리절차에 포함되지 않는다.
애자일 모형을 기반으로 하는 소프트웨어 개발 모형
스크럼(Scrum), XP(eXtreme Programming), 칸반(Kanban), ASD(Adaptive Software Deverlopment), 기능 중심 개발(FDD: Feature Driven Development), DSDM(Dynamic System Development Method) 등
애자일 모형의 가치와 실행 지침