SDLC (Software Development Life Cycle)

I. 소프트웨어 공학의 패러다임, SDLC의 개요

가. SDLC(Software Development Life Cycle)의 정의

  • 소프트웨어 개발부터 폐기까지 전 과정을 하나의 생명주기로 정의하고 단계 별 공정을 체계화 한 모델

나. SDLC의 특징

특징내용
효율적 자원사용프로젝트 비용의 산정, 일정 계획 수립 지원
산출물 표준화용어, 산출물 등 일관성 있도록 산출물 표준화
프로젝트 관리원활한 프로젝트 수행을 위한 프로젝트 관리 지원

다. SDLC의 등장배경

구분등장 배경
SW 규모 측면SW 대규모화 및 위기로 인한 체계적인 SW 개발 필요
SW 품질 측면고품질 SW개발을 효과적으로 수행하기 위한 방안 필요

 

II. SDLC의 구성도 및 구성 단계

가. 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 모델 발전 방향

SDLC모델간 관계.png
  • 폭포수, 프로토타이핑과 같은 전통적 모형의 문제점을 개선한 나선형, 반복형 모델 등이 생기고, 최근 정형성을 강조한 클린룸 모델이 등장

 

V. SDLC 문제점 및 해결방안

가. SDLC 문제점 및 해결방안

문제점해결방안
  • 사용자 참여 미흡
  • 프로토타이핑, 반복적 모델 사용자 참여증대
  • 단계별 진행에 따른 전체 진행이 늦어질 가능성 존재
  • 모든 단계를 진행하기 보다 프로젝트에 맞게 최적화 하여 진행

나. SDLC 발전방향

  • 신기술이 보유한 소수 전문가 집단을 통한 개발조직 형성 및 개발 리딩
  • 산업계의 요구로 RAD 모델이 정착되어 가고 있음
  • 향후 CBD에 의한 SW 모듈화 및 재사용 증대로 개발 비용은 낮추고, 생산성과 품질을 향상시키는 방향으로 발전

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^