SDLC(Software Development Life Cycle)
소프트웨어 위기라는 이야기가 나온 지 수 십년이 지났지만, 아직도 소프트웨어는 여전히 품질, 납기 문제와 내재된 결함을 갖고 있다. 이러한 소프트웨어가 갖는 문제점을 해결하기 위해 소프트웨어 개발 프로세스에 소프트웨어 개발 생명주기모델을 도입한다.
SDLC의 정의
- 소프트웨어를 개발하기 위한 정의 과정, 개발 과정, 유지보수 과정, 폐기 과정까지를 하나의 연속된 주기로 보고, 효과적으로 수행하기 위한 방법론을 모델화 한다.
- 소프트웨어 공학을 실제 구현하기 위해 사용되는 프레임워크로서 소프트웨어 개발 생명주기 모델이라고도 함
SDLC의 등장 배경
- 소프트웨어 위기로 인한 체계적인 소프트웨어 개발 필요
- 소프트웨어 개발을 효과적으로 수행하기 우한 방안 모색
SDLC의 필요성
- 소프트웨어를 획득하는 과정에서 나타나는 소프트웨어 위기를 극복하기 위한 방안 필요
- 효과적으로 소프트웨어를 개발하기 위해 표준화된 수행 방법과 절차가 필요
- 고품질의 소프트웨어를 획득하는 데에도 일정 수준이상의 생산성을 확보
SDLC 방법론의 절차
단계 |
내용 |
타당성 검토 (Feasibility Study) |
- 요구사항을 만족시키기 위한 대안을 분석하는 작업을 수행 - 시스템 구현에 따른 생산성 향상, 향후 비용절감 등 전략적 이익을 결정 |
요구사항 정리 (Requirment Definition) |
- 타당성 검토시 선택된 시스템 개발에 대한 요구사항을 식별, 상세화 하는 과정 |
설계 (Design) |
- 고객의 요구사항에 기초하여 프로그램 개발을 위한 사양 작성 - 개발 프로세스에 대한 새로운 요구사항을 관리하기 위한 공식적인 변경관리 프로세스 정의 |
개발 (Development) |
- 프로그래밍을 착수하고, 시스템을 운영할 수 있는 형태를 갖춤 - 다양한 수준의 테스트를 통해 개발 시스템에 대한 검토와 검증이 수행됨 |
이행 (implementation) |
- 새로운 정보시스템에 대하여 운영환경을 구축하고 사용자 인수테스트를 수행 |
이행 후 검토 |
- ROI(Return on investment)와 같은 방법을 이용하여 프로젝트의 투입 원가 대비 효과를 분석 - 향후 수행할 타 프로젝트를 위한 Lessons Learned를 정리 |
SDLC 모델의 분류
구분 |
내용 |
폭포수 모델 (Waterfall Model) |
- 고전적 라이프사이클 패러다임 - 분석, 설계, 개발 구현, 시험, 유지보수를 순차적으로 접근하는 방법 |
프로토타이핑 모델 (Prototyping Model) |
- 개발 대상인 시스템 주요기능을 초기에 운영모델로 개발하는 것 - 점진적 개발방법(폭포수 모델 단점 보안) - 일회용, 진화용 시제품 |
반복적 개발 모델 (Iterative and Incremental Development Model) |
1. Incremental Development Model - 폭포수 모델변형으로, 소프트웨어를 구조적 관점에서 하향식 계층구조의 수준별 증분을 개발하여 이를 통합하는 방식 2. Evolutionary Development Model - 시스템이 가지는 여러 구성요소의 핵심부분을 개발한 후 각 구성요소를 개선 발전시켜 나가는 방법 |
RAD기법 모델 (Rapid Application Development) |
- 사용자에 주도로 요구사항 정의, 분석, 설계 - Code Generator에 의한 신속한 시스템 개발 기법 |
4세대 모형 (4th Generation Technique) |
- CASE 및 자동화도구를 이용하여 요구사항 명세로부터 실행코드를 자동으로 생성할 수 있게 해주는 기법 |
SDLC 모델의 선정기준
- 수행프로젝트의 규모와 성격에 따른 개발주기 선정 및 개발생명 주기기반의 개발방법론과 관리 방법론을 도입
- 도입된 개발, 관리 방법론과 연계하여 최대한의 생산성 확보 여부를 고려해야 함.
- 개발 소요시간, 비용, 기대 품질을 고려하여 불필요한 작업항목을 최소화하여 진행 할 수 있는 기준을 도입
- 개발 과정의 통제수단과 소프트웨어 산출물 인도 방식에 따라 개발모형을 선정 해야함.
SDLC의 문제점
- RAD 개발 모델과 프로토타입 모델에서는 사용자 참여가 충분하지만, 여타의 개발 모델에서는 사용자의 참여가 미흡하여 소프트웨어 완성 단계에서 품질의 문제가 있을 수 있다.
- 각 진행단계별 진행내용에 대한 점검을 대부분 문서위주로 확인 하는 방식이기 때문에 비효율적인 작업진행 가능성 있음.
- 단계별로 진행 내용을 수행하고 이에 따라서 다음 단계를 진행하기 때문에 전체 생명주기의 진행이 늦어질 가능성 있음.
- 지속적으로 발전해서 개발이 필요하거나 계속해서 확장되는 시스템에는 부적합한 모델임.
'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글
SWOT(Strength, Weakness, Opportunity, Threat) (0) | 2014.02.19 |
---|---|
데이터마이닝(Data Mining) (0) | 2014.02.17 |
요구공학(Requirement Engineering) (0) | 2014.02.12 |
SCRUM (0) | 2014.02.10 |
AGILE (0) | 2014.02.10 |