I. 소프트웨어 공학의 패러다임, SDLC의 개요
가. SDLC(Software Development Life Cycle)의 정의
- 소프트웨어 개발부터 폐기까지 전 과정을 하나의 생명주기로 정의하고 단계 별 공정을 체계화 한 모델
나. SDLC의 특징
특징 | 내용 |
---|---|
효율적 자원사용 | 프로젝트 비용의 산정, 일정 계획 수립 지원 |
산출물 표준화 | 용어, 산출물 등 일관성 있도록 산출물 표준화 |
프로젝트 관리 | 원활한 프로젝트 수행을 위한 프로젝트 관리 지원 |
다. SDLC의 등장배경
구분 | 등장 배경 |
---|---|
SW 규모 측면 | SW 대규모화 및 위기로 인한 체계적인 SW 개발 필요 |
SW 품질 측면 | 고품질 SW개발을 효과적으로 수행하기 위한 방안 필요 |
II. SDLC의 구성도 및 구성 단계
가. SDLC의 구성도
- 타당성 조사, 분석, 설계, 개발, 테스트, 유지보수, 폐기 단계별로 구성된 요구사항이 시스템의 운영에 효과적으로 사용되기 위한 SW 생명주기
나. SDLC의 구성요소
구분 | 내용 |
---|---|
계획 | 시스템이 갖추어야 할 기능 파악 및 비즈니스 타당성 검토 |
분석 | 사용자의 요구사항을 구체적으로 분석하고 파악 |
설계 | 시스템 골격을 형성하는 모듈간의 구조 및 인터페이스 설계 |
구현 | 정해진 설계 내용을 프로그래밍 언어로 표현하는 단계 |
테스트 | 실행 프로그램의 오류를 발견하고 수정하는 테스트 단계 |
운영/유지보수 | 사용자가 직접 운영하고 운영 시 발생 가능한 문제점을 수정/보완하는 단계 |
III. SDLC의 대표 유형 및 모델 비교
모델 | 구분 | 특징 및 설명 |
---|---|---|
폭포수 모델 (Waterfall) | 정의 | 분석, 설계, 개발, 구현, 시험, 납품 과정을 순차적으로 진행하는 생명주기 모델 |
장점 | 이해 용이, 다음단계 진행 전에 결과검증, 관리 용이 | |
단점 | 요구사항 도출 및 프로젝트 단계별 피드백 어려움 | |
프로토타입 모델 (Prototype) | 정의 | 시스템의 핵심 기능이나 위험성이 높은 기능을 시제품으로 먼저 만들어 평가한 후 구현하는 점진적 개발 방법 |
장점 | 요구사항 도출 용이, 시스템 이해 용이, 의사소통 향상 | |
단점 | 사용자가 시제품을 완제품으로 오해할 가능성 폐기되는 시제품에 따른 오버헤드 및 개발자 불만 발생 가능성 | |
나선형 모델 (Spiral) | 정의 | 폭포수 모델과 프로토타입 모델의 장점을 선택적으로 수용하고 위험분석을 추가하여 만든 모델 계획 → 위험분석 → 개발 → 고객평가 순으로 진행 |
장점 | 점증적으로 개발 함으로 실패위험 감소 및 테스트용이 | |
단점 | 관리 복잡, 위험 식별 능력이 프로젝트 성패를 좌우 | |
점증적 모델 (Iterative & Incremental) | 정의 | 사용자의 요구사항 일부분 혹은 제품의 일부분을 반복적으로 개발하여 점진적으로 최종 시스템을 완성하는 방법 1) 증분형 모델(Incremental Development Model) 2) 진화형 모델(Evolutionary Development Model) |
RAD 모델 (Rapid Application Development) | 특징 | 1~3개월의 짧은 개발 주기 동안 소프트웨어를 개발하기 위한 순차적 프로세스 모델로 빠른 개발을 위해 CASE 도구(Tool)등을 활용하여 수행 |
장점 | 요구사항의 완전한 이해와 프로젝트 범위의 명확한 설정 시 신속한 개발 및 완전한 기능 구현가능 | |
단점 | 책임감 있는 구성원이 없을 경우 실패가능 적절한 모듈화 가능성 전제 기술적 위험이 높을 경우 부적합 |
IV. SDLC 모델 설정
가. SDLC 모델 선정 기준
① 프로젝트 규모와 성격
② 도입된 개발, 관리 방법론
③ 개발 소요시간, 비용, 기대 품질
④ 개발 과정의 통제 수단, 산출물 인도 방식
나. 프로젝트 특성 별 SDLC 모델 선정
특성 | SDLC 모델 |
---|---|
대규모 | 프로토타입, 나선형, 점증형 |
위험이 다수 존재 | 프로토타입, 나선형, 점증형 |
Reference 부족 | 폭포수, RAD |
요구사항 불명확 | 프로토타입, 나선형 |
장기간의 프로젝트 | 나선형, 점증형 |
충분한 비용 확보 | 나선형, 점증형 |
구현 난이도가 쉬움 | 폭포수, RAD |
정확성을 요구 | 프로토타입, 나선형, 점증형 |
적극적인 고객 확보 | RAD |
다. 프로젝트 유형별 SDLC 모델 선정
유형 | 모델 | 특징 |
---|---|---|
일반적 | 폭포수 | 위험성이 적고, 기존에 진행된 유사사례 많음 요구사항이 명확하고 변경 가능성이 적음 |
대규모 | 점증형 | 프로젝트의 위험성이 높고, 연관되어 있는 도메인이 많음 CBD 방법론을 활용해야 하는 경우 향후 변경의 여지가 많고, 요구사항 Fix가 어려운 경우 |
소규모 | 폭포수 | 단기간 내 요구사항 만족, 고객 참여 및 자동화 도구 사용이 여의치 않음 |
RAD | 단기간 내 요구사항 만족, 자동화 도구 사용 고객의 참여를 통한 효율성 확보 | |
임베디드 시스템 | 증분형 (Incremental) | 소프트웨어 외에 여러 요소 (HW, 사용자 인터페이스)를 고려 |
타당성 검토 | 나선형 | 프로젝트를 해야 하는지에 대한 타당성 검증을 필요로 하는 경우 |
연구형 개발 | 나선형 | 요구 사항이 불명확하고, 지속적인 검증 필요 |
신뢰성 필요 위험성 높음 | V모델 | 대규모의 비용이 확보 되어 있음 |
패키지/ 판매형 제품 | 진화형모델 (Evolution) | 의료, 항공 등 위험성이 높고 신뢰성을 요구하는 경우 단계별 산출물 검증, 결과물 확인이 명확해야 하는 경우 |
다. SDLC 모델 발전 방향
- 폭포수, 프로토타이핑과 같은 전통적 모형의 문제점을 개선한 나선형, 반복형 모델 등이 생기고, 최근 정형성을 강조한 클린룸 모델이 등장
V. SDLC 문제점 및 해결방안
가. SDLC 문제점 및 해결방안
문제점 | 해결방안 |
---|---|
|
|
|
|
나. SDLC 발전방향
- 신기술이 보유한 소수 전문가 집단을 통한 개발조직 형성 및 개발 리딩
- 산업계의 요구로 RAD 모델이 정착되어 가고 있음
- 향후 CBD에 의한 SW 모듈화 및 재사용 증대로 개발 비용은 낮추고, 생산성과 품질을 향상시키는 방향으로 발전