맨위로가기

소프트웨어 개발 수명 주기

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

소프트웨어 개발 수명 주기(SDLC)는 1960년대 대규모 사업 시스템 개발을 위해 시작되었으며, 시스템 설계자와 개발자가 따라야 할 일련의 단계/단계/활동을 제공한다. SDLC는 예비 분석, 시스템 분석, 설계, 개발, 통합 및 테스트, 인수, 설치, 배포, 유지보수, 평가, 폐기 등의 단계를 거치며, 폭포수 모델, 시스템 분석 및 설계, 객체 지향 분석 및 설계, 시스템 수명 주기 등의 다양한 방법론이 존재한다. SDLC는 유연성과 제어 사이의 균형을 맞추어 대규모 프로젝트에 주로 사용되지만, 개발 시간과 비용 증가, 요구 사항 변화에 대한 비내성 등의 약점도 존재한다.

2. 역사

소프트웨어 개발 수명 주기(SDLC)는 1960년대 대규모 사업 시스템을 개발하기 위해 시작되었으며, 당시에는 대규모 기업 연합 시대였다. 정보 시스템 활동은 대규모 데이터 처리계산 루틴을 중심으로 이루어졌다.[9]

구조적 시스템 분석 및 설계 방법론(SSADM)은 1980년대 영국 정부 상업부를 위해 개발되었다.[9]

3. 단계

소프트웨어 개발 수명 주기(SDLC)는 명확하게 나뉜 여러 단계들로 구성된다. 마치 조립 라인처럼, SDLC의 목표는 고객의 요구를 만족시키는 고품질 시스템을 만드는 것이다.[25] 현대의 복잡한 컴퓨터 시스템은 여러 소프트웨어 회사들의 시스템을 연결해야 하는 경우가 많다. (특히 서비스 지향 아키텍처에서 두드러진다.) 이러한 복잡성을 관리하기 위해 폭포수 모델, 스파이럴, 애자일, 빠른 프로토타입, 반복 및 확장, 동기화와 안정화 등 다양한 SDLC 모델과 방법론이 개발되었다.[26]

SDLC는 애자일의 반복성과 순차성 사이의 균형을 맞추는 과정이라고 할 수 있다. 익스트림 프로그래밍이나 스크럼과 같은 애자일 소프트웨어 개발 방법론은 개발 중 빠르게 변화에 대응할 수 있는 유연성에 중점을 둔다. 래셔널 통합 프로세스동적 시스템 개발 방법과 같은 반복적 방법론은 프로젝트의 작은 부분을 빠르게 개발하고 반복적으로 확장하거나 개선하는 데 초점을 맞춘다. 반면, 폭포수 모델과 같은 순차적(BDUF) 모델은 큰 프로젝트를 세밀하게 계획하고 위험을 줄여 예측 가능한 결과를 얻는 데 집중한다. 변형 개발과 같은 다른 모델들은 프로젝트의 크기나 기능 개발에 따라 개발 형태를 조정하는 경향이 있다.

프로젝트 관리에서 프로젝트는 프로젝트 수명 주기(PLC)와 SDLC로 정의되는데, 이 둘은 약간 다르다. 테일러(Taylor, 2004)에 따르면 "프로젝트 수명 주기는 프로젝트의 모든 활동을 다루지만, 소프트웨어 수명 주기는 상품의 요구 사항을 실현하는 데 중점을 둔다."[7]

SDLC는 IT 프로젝트 개발에 사용되며, 계획부터 완성까지 모든 단계에 관여한다. 일반적으로 계획, 분석, 설계, 구축, 테스트, 구현, 유지보수/지원의 단계를 포함하지만, 단계 목록은 확정적이지 않다.[8] 예를 들어, 스크럼 프레임워크에서는 단일 사용자 스토리가 2주 스프린트 내에서 SDLC의 모든 단계를 거칠 수 있다. 반면, 폭포수 방법론에서는 모든 비즈니스 요구 사항이 기능/기능 설명으로 변환된 후 몇 달 또는 그 이상 동안 구현될 수 있다.


3. 1. 폭포수 모델

소프트웨어 개발 수명 주기의 한 방법론인 폭포수 모델은 가장 오래되고 잘 알려진 개발 방식 중 하나로, 여러 단계들이 선형적으로 이어진다.[11] 폭포수 모델에는 여러 변형이 있다.[10][11][14][15]

폭포수 모델은 큰 프로젝트를 상세하게 계획하고 위험을 줄여 결과를 예측 가능하도록 관리하는 데 초점을 맞춘 순차적(big-design-up-front, BDUF) 모델이다.[6]

3. 1. 1. 예비 분석

조직의 목표를 파악하고 프로젝트의 성격과 범위를 정의하며, 프로젝트가 목표에 부합하는지 확인한다.[10][11][14][15] 직원, 고객, 공급업체 및 컨설턴트와의 인터뷰와 경쟁사 분석을 통해 대안을 찾을 수 있다. 또한 프로젝트의 비용과 편익을 분석한다.

3. 1. 2. 시스템 분석, 요구사항 정의

폭포수 모델은 가장 오래되고 잘 알려진 개발 수명 주기로, 일련의 단계를 선형적으로 사용한다.[11] 폭포수 모델에는 여러 변형이 있는데, 그 중 하나는 다음과 같다.[10][11][14][15]

프로젝트 목표를 정의된 기능과 운영으로 분해한다. 이는 사실을 수집하고 해석하며, 문제를 진단하고, 변경 사항을 권장하는 것을 포함한다. 최종 사용자의 정보 요구 사항을 분석하고, 불일치와 불완전성을 해결한다.[16]

  • 사실 수집: 문서 검토, 클라이언트 인터뷰, 관찰 및 설문지를 통해 최종 사용자 요구 사항을 얻는다.
  • 기존 시스템 검토: 장단점을 파악한다.
  • 제안된 시스템 분석: 문제에 대한 해결책을 찾고, 적절한 사용자 제안을 통합하여 사양을 준비한다.


분석의 목표는 문제의 위치를 파악하는 것이다. 이 단계는 시스템을 조각으로 분해하고, 프로젝트 목표를 분석하며, 생성해야 할 사항을 세분화하고, 사용자를 참여시켜 요구 사항을 정의하는 것을 포함한다.

3. 1. 3. 시스템 설계

이 단계에서는 화면 레이아웃, 비즈니스 규칙, 프로세스 다이어그램, 의사 코드 및 기타 결과물을 포함하여 원하는 기능과 작동 방식이 자세히 설명된다.[10][11][14][15] 모듈식 설계는 복잡성을 줄이고, 출력을 하위 시스템 모음으로 시스템을 설명할 수 있도록 한다.

시스템 설계 단계에서는 이미 정의된 요구 사항을 입력으로 사용하여, 각 요구 사항에 대해 일련의 설계 요소를 생성하고, 기능과 운영을 자세하게 설명한다. 이때 화면 레이아웃, 비즈니스 규칙, 프로세스 다이어그램 및 기타 문서가 포함된다.

설계 문서는 일반적으로 기능 계층 다이어그램, 화면 레이아웃, 비즈니스 규칙, 프로세스 다이어그램, 의사 코드 및 완전한 데이터 모델데이터 사전과 함께 포함한다. 이러한 요소는 개발자와 엔지니어가 최소한의 추가 입력으로 시스템을 개발하고 제공할 수 있도록 시스템을 충분히 자세하게 설명한다.

3. 1. 4. 개발

코드를 작성한다.[10][11][14][15]

3. 1. 5. 통합 및 테스트

코드는 소프트웨어 테스팅의 다양한 수준에서 테스트된다. 일반적으로 단위 테스트, 시스템 테스트, 사용자 인수 테스트가 수행된다. 다양한 테스트 접근 방식이 채택되었다.[10][11][14][15]

다음 유형의 테스트가 관련될 수 있다.

  • 경로 테스트
  • 데이터 세트 테스트
  • 단위 테스트
  • 시스템 테스트
  • 통합 테스트
  • 블랙 박스 테스트
  • 화이트 박스 테스트
  • 회귀 테스트
  • 자동화 테스트
  • 사용자 인수 테스트
  • 소프트웨어 성능 테스트

3. 1. 6. 인수, 설치, 배포

폭포수 모델은 가장 오래되고 잘 알려진 개발 방식 중 하나로, 일련의 단계를 선형적으로 거친다.[11] 폭포수 모델에는 여러 변형이 존재한다.[10][11][14][15]

시스템을 프로덕션 환경에 투입하는 단계에서는 사용자 교육, 하드웨어 배치, 이전 시스템의 정보 로딩 등이 이루어진다.

3. 1. 7. 유지보수

시스템의 지속적인 적합성을 평가하기 위해 시스템을 모니터링한다. 필요에 따라 적절한 변경 및 수정을 수행한다. 시스템이 효과적이고 고품질을 유지하도록 지속적인 모니터링 및 업데이트를 한다.[17] 유지보수는 변경, 수정 및 개선을 포함한다.

3. 1. 8. 평가

폭포수 모델은 일련의 단계를 선형적으로 사용하는 가장 오래되고 잘 알려진 방법이다.[11] 시스템과 프로세스 검토에는 새로 구현된 시스템이 요구 사항을 충족하고 프로젝트 목표를 달성하는지, 시스템의 사용성, 신뢰성/가용성, 적절한 확장성 및 내결함성이 있는지 등이 있다. 또한, 일정 및 비용 검토와 사용자 수용도 포함된다.

소프트웨어 개발 수명 주기(SDLC)의 마지막 단계는 시스템의 효율성을 측정하고 잠재적인 개선 사항을 평가하는 것이다.

3. 1. 9. 폐기

수명이 다한 시스템은 중단 및 교체 계획이 수립된다. 관련 정보와 인프라는 보안을 적절히 보호하면서 용도 변경, 보관, 폐기 또는 파기해야 한다.[18]

3. 2. 시스템 분석 및 설계

시스템 분석 및 설계(SAD)는 문제 해결 단계를 설정하고 범위를 정하는 메타 개발 활동으로 간주될 수 있다. SAD는 상충하는 상위 수준의 요구 사항을 균형 있게 조정하는 데 도움이 될 수 있으며, 분산된 엔터프라이즈 아키텍처, 엔터프라이즈 IT 아키텍처 및 비즈니스 아키텍처와 상호 작용한다. 또한 파티셔닝, 인터페이스, 페르소나 및 역할, 배포/운영 모델링과 같은 개념에 크게 의존하여 상위 수준의 시스템 설명을 도출한다. 이 상위 수준의 설명은 비즈니스 목표를 달성하기 위해 별도로 분석, 설계, 구축하고 통합할 수 있는 구성 요소 및 모듈로 세분화된다. 소프트웨어 개발 수명 주기와 SAD는 전체 수명 주기 제품 및 시스템 계획의 초석이다.[7]

3. 3. 객체 지향 분석 및 설계

객체 지향 분석 및 설계(OOAD)는 문제 영역을 분석하여 개발을 안내하는 데 사용할 수 있는 개념적 모델을 개발하는 과정이다. 분석 단계에서 프로그래머는 이해 관계자와의 인터뷰를 통해 문서화된 요구 사항과 공식적인 비전 문서를 개발한다.

OOAD의 결과로 나오는 개념 모델은 일반적으로 유스 케이스클래스 및 상호 작용 다이어그램으로 구성된다. 또한 사용자 인터페이스 모형을 포함할 수도 있다.

출력 아티팩트는 객체 지향 설계를 위한 입력으로 사용되기 위해 완전히 정의될 필요는 없으며, 분석과 설계는 병렬적으로 수행될 수 있다. 실제로 한 활동의 결과는 반복적인 프로세스에서 다른 활동에 영향을 줄 수 있다.

OOAD의 일반적인 입력 아티팩트는 다음과 같다.

  • 개념 모델: 개념 모델은 객체 지향 분석의 결과이다. 문제 영역의 개념을 포착한다. 개념 모델은 구현 세부 사항과 명시적으로 독립적이다.
  • 유스 케이스: 유스 케이스는 함께 필요한 작업을 완료하는 일련의 이벤트에 대한 설명이다. 각 유스 케이스는 시스템이 행위자(사용자)와 상호 작용해야 하는 방식을 전달하는 시나리오를 제공한다. 행위자는 최종 사용자 또는 다른 시스템일 수 있다. 유스 케이스는 다이어그램을 사용하여 추가로 상세화될 수 있다. 이러한 다이어그램은 행위자와 그들이 수행하는 프로세스를 식별한다.
  • 시스템 시퀀스 다이어그램: 시스템 시퀀스 다이어그램 (SSD)은 특정 유스 케이스에 대해 행위자가 생성하는 이벤트, 그 순서 및 시스템 간 이벤트를 보여주는 그림이다.
  • 사용자 인터페이스 문서: 사용자 인터페이스를 보여주고 설명하는 문서.
  • 데이터 모델: 데이터 모델은 데이터 요소가 서로 어떻게 관련되는지 설명한다. 데이터 모델은 설계 단계 전에 생성된다. 객체 지향 설계는 데이터 모델에서 직접 매핑된다. 관계형 설계는 더 복잡하다.

3. 4. 시스템 수명 주기

시스템 수명 주기는 시스템 또는 제안된 시스템의 구상, 설계 및 개발, 생산 및/또는 구축, 배포, 운영, 유지 관리 및 지원, 퇴역, 단계적 종료 및 폐기를 포함하는 모든 단계를 다루는 관점이다.[21]

3. 4. 1. 개념 설계

개념 설계 단계는 식별된 요구 사항을 검토하고, 잠재적인 해결책에 대한 요구 사항을 정의하며, 잠재적인 해결책을 평가하고, 시스템 명세서를 개발하는 단계이다. 시스템 명세서는 시스템 설계를 위한 전반적인 지침을 제공하는 기술 요구 사항을 나타낸다. 이 문서는 모든 미래 개발을 결정하므로, 개념 설계 검토를 통해 시스템 명세서가 동기를 부여하는 요구 사항을 적절하게 해결했는지 확인해야만 이 단계를 완료할 수 있다.[1]

개념 설계 단계의 주요 단계는 다음과 같다.

  • 요구 사항 식별
  • 타당성 분석
  • 시스템 요구 사항 분석
  • 시스템 명세
  • 개념 설계 검토

3. 4. 2. 예비 시스템 설계

시스템 수명 주기의 이 단계에서 원하는 시스템 기능을 수행하는 하위 시스템이 설계되고 시스템 사양에 따라 지정된다. 하위 시스템 간의 인터페이스와 전반적인 테스트 및 평가 요구 사항이 정의된다.[20] 이 단계가 완료되면 상세 설계 및 개발을 수행하기에 충분한 개발 사양이 생성된다.

예비 설계 단계의 주요 단계는 다음과 같다.

단계
기능 분석
요구 사항 할당
상세한 트레이드 오프 연구
시스템 옵션의 종합
엔지니어링 모델의 예비 설계
개발 사양
예비 설계 검토



예를 들어, Viti Bank의 시스템 분석가로서 현재 정보 시스템을 검토하는 임무를 맡았다고 가정해 보자. Viti Bank는 피지에서 빠르게 성장하는 은행이다. 외딴 시골 지역의 고객은 은행 서비스를 이용하는 데 어려움을 겪고 있다. 은행 서비스를 이용하기 위해 여러 날 또는 몇 주가 걸린다. 고객의 요구를 충족하겠다는 비전으로, 은행은 현재 시스템을 검토하고 현재 시스템이 어떻게 고객의 요구를 충족하도록 제공될 수 있는지에 대한 솔루션이나 권장 사항을 제시해 줄 것을 요청했다.

3. 4. 3. 상세 설계 및 개발

이 단계는 초기 설계 작업을 완료된 형태의 명세로 구체화하는 상세 설계를 개발하는 것을 포함한다. 이 작업에는 시스템과 의도된 환경 간의 인터페이스 명세, 그리고 시스템의 물류, 유지 보수 및 지원 요구 사항에 대한 포괄적인 평가가 포함된다. 상세 설계 및 개발은 제품, 프로세스 및 재료 명세를 생성하는 역할을 하며, 개발 명세에 상당한 변경을 초래할 수 있다.

상세 설계 및 개발 단계의 주요 단계는 다음과 같다.

  • 상세 설계
  • 상세 합성
  • 엔지니어링 및 프로토타입 모델 개발
  • 개발 명세 개정
  • 제품, 프로세스 및 재료 명세
  • 주요 설계 검토

3. 4. 4. 생산 및 구축

생산 및 구축 단계에서 제품은 제품, 프로세스 및 재료 사양에 명시된 요구 사항에 따라 제작 또는 조립되며, 운영 대상 환경 내에서 배포 및 테스트된다. 결함을 수정하고 지속적인 개선을 위해 시스템을 적응시키기 위한 시스템 평가가 수행된다.

제품 구축 단계의 주요 단계는 다음과 같다.

단계설명
시스템 구성 요소의 생산 및/또는 구축제품, 프로세스, 재료 사양에 따라 시스템 구성 요소를 제작하거나 조립한다.
인수 테스트사용자가 시스템을 인수할지 여부를 결정하기 위한 테스트를 수행한다.
시스템 배포 및 운영운영 환경에 시스템을 배포하고 운영을 시작한다.
운영 테스트 및 평가시스템이 운영 환경에서 정상적으로 작동하는지 테스트하고 평가한다.
시스템 평가결함 수정 및 지속적인 개선을 위해 시스템을 평가한다.


3. 4. 5. 활용 및 지원

시스템이 완전히 배포되면, 의도된 운영 역할에 따라 사용되고 운영 환경 내에서 유지 관리된다.

사용 및 지원 단계의 주요 단계는 다음과 같다.

  • 사용자 환경에서의 시스템 운영
  • 변경 관리
  • 개선을 위한 시스템 수정
  • 시스템 평가

3. 4. 6. 단계적 폐지 및 폐기

시스템의 효과성과 효율성은 제품이 최대 유효 수명 주기에 도달했는지를 판단하기 위해 지속적으로 평가되어야 한다.[21] 고려해야 할 사항으로는 운영 요구 사항의 지속적인 존재 여부, 운영 요구 사항과 시스템 성능 간의 일치, 시스템 단계적 폐지 또는 유지 보수의 실현 가능성, 대체 시스템의 가용성 등이 있다.

4. SDLC 관리 및 제어

소프트웨어 개발 수명 주기(SDLC)는 고객의 요구를 만족시키는 고품질 시스템을 만들기 위한 과정이다. 현대의 복잡한 컴퓨터 시스템은 여러 소프트웨어 회사들의 시스템을 연결해야 하기 때문에, 이러한 복잡성을 관리하기 위해 폭포수, 스파이럴, 애자일 소프트웨어 개발, 신속 개발, 반복적 개발 , 동기화와 안정화 등 다양한 SDLC 모델과 방법론이 개발되었다.[26]

SDLC는 애자일의 반복성과 순차성 사이의 균형을 맞추는 과정이라고 할 수 있다. 익스트림 프로그래밍이나 스크럼과 같은 애자일 방법론은 개발 중 변화에 빠르게 대응하는 것에 집중한다. 반면, 래셔널 통합 프로세스나 동적 소프트웨어 개발 방법과 같은 반복적 방법론은 작은 부분을 빠르게 개발하고 반복적으로 확장하는 데 초점을 맞춘다. 폭포수 모델과 같은 순차적 모델은 대규모 프로젝트를 세밀하게 계획하고 예측 가능하도록 관리하는 데 중점을 둔다.

프로젝트 관리에서 프로젝트는 프로젝트 수명 주기(PLC)와 SDLC로 정의되는데, 이 둘은 약간 다르다. 프로젝트 수명 주기는 프로젝트의 모든 활동을 다루는 반면, 소프트웨어 수명 주기는 상품의 요구 사항을 가장 중요하게 다룬다(Taylor, 2004). SDLC는 IT 프로젝트 개발에 사용되며 계획부터 완성까지 모든 단계에 관여한다.



SDLC 단계별 목표는 주요 산출물, 권장 작업 설명 및 효과적인 관리를 위한 관련 제어 목표 요약을 통해 설명된다. 프로젝트 관리자는 프로젝트 실행 중 제어 목표를 설정하고 모니터링하는 것이 중요하다. 제어 목표는 원하는 결과나 목적에 대한 명확한 진술이며, 프로젝트 전반에 걸쳐 정의되고 모니터링되어야 한다.

대규모 SDLC 계획을 관리하고 제어하기 위해 작업 분해 구조(WBS)를 사용하여 작업을 캡처하고 일정을 잡는다. WBS와 모든 프로그램 자료는 프로젝트 노트북에 보관해야 한다. 프로젝트 관리자는 프로젝트를 가장 잘 설명하는 WBS 형식을 선택한다.



WBS의 상단 부분은 프로젝트 범위와 타임라인에 대한 개요를 제공하며, 주요 단계와 이정표도 요약해야 한다. 중간 부분은 SDLC 단계를 기반으로 한다. WBS 요소는 수행해야 할 활동이 아닌 완료해야 할 이정표와 작업으로 구성되며 마감 기한이 있다. 각 작업에는 측정 가능한 출력물이 있어야 한다. 계약업체의 지원이 필요한 프로젝트 부분에는 작업 범위 명세서(SOW)가 있어야 한다. SOW 개발은 SDLC의 특정 단계에서 발생하는 것이 아니라 계약업체가 수행할 수 있는 SDLC 프로세스의 작업을 포함하도록 개발된다.[22]

4. 1. 베이스라인

베이스라인은 소프트웨어 개발 수명 주기(SDLC)의 5단계 중 4단계 이후에 설정되며, 모델의 반복적 특성에 매우 중요하다.[23] 베이스라인은 이정표가 된다.

  • 기능 베이스라인: 개념 설계 단계 이후에 설정된다.
  • 할당 베이스라인: 예비 설계 단계 이후에 설정된다.
  • 제품 베이스라인: 상세 설계 및 개발 단계 이후에 설정된다.
  • 업데이트된 제품 베이스라인: 생산 구축 단계 이후에 설정된다.

5. 다른 방법론

SDLC는 애자일의 반복성과 순차성 사이의 줄다리기라고 할 수 있다. 익스트림 프로그래밍이나 스크럼 등의 애자일 소프트웨어 개발은 개발 중 빠르게 변화할 수 있는 가벼움을 유지하는 것에 집중한다.[26] 래셔널 통합 프로세스나 동적 소프트웨어 개발 방법 등의 반복적인 방법론은 프로젝트의 작은 부분을 빠르게 개발한 뒤에 반복해서 계속 확장하거나 향상시키는 것에 초점을 맞추고 있다. 워터풀과 같은 순차적(big-design-up-front, BDUF) 모델은 큰 프로젝트를 세세한 곳까지 계획하고 리스크를 줄이면서 결과를 예측가능하도록 관리하는 것에 초점을 맞춘다. 점진적 개발 등과 같은 다른 모델들은 프로젝트의 크기나 기능 개발에 따른 개발의 형태에 초점을 맞추는 경향이 있다.[6]

프로젝트 관리에서 프로젝트는 프로젝트 수명주기(PLC)와 SDLC로 정의되는데, 둘은 약간 다르다. 테일러(Taylor, 2004)는 "프로젝트 수명 주기는 프로젝트의 모든 활동을 다루지만 소프트웨어 수명 주기는 상품의 요구 사항이 가장 중요하다"라고 하였다.[7]

SDLC는 그 자체로 방법론이 아니라, 방법론이 다루어야 하는 단계에 대한 설명이다.

소프트웨어 개발 수명 주기(SDLC)에 대한 대안적인 소프트웨어 개발 방법론은 다음과 같다.



방법론 접근 방식 비교 (Post, & Anderson 2006)[24]
SDLCRAD오픈 소스객체JAD프로토타입최종 사용자
통제공식적MIS취약표준공동사용자사용자
기간장기단기중기아무 때나중기단기단기
사용자다수소수소수다양함소수한두 명한 명
MIS 직원다수소수수백 명분산소수한두 명없음
트랜잭션/의사 결정 지원 시스템트랜잭션양쪽 모두양쪽 모두양쪽 모두DSSDSSDSS
인터페이스최소한최소한취약윈도우중요중요중요
문서화 및 교육필수적제한적내부적객체 지향제한적취약없음
무결성 및 보안필수적필수적미확인객체 지향제한적취약취약
재사용성제한적일부가능필수적제한적취약없음


6. SDLC의 강점과 약점

소프트웨어 개발 수명 주기(SDLC)는 여러 단계로 나뉘어 있으며, 고객의 요구를 만족시키는 고품질 시스템을 만드는 것을 목표로 한다.[25] 컴퓨터 시스템은 복잡하고, 여러 소프트웨어 회사들의 시스템을 연결해야 하는 경우가 많기 때문에, 이러한 복잡성을 관리하기 위해 다양한 SDLC 모델과 방법론이 개발되었다. 대표적인 예로는 폭포수, 스파이럴, 애자일 소프트웨어 개발, 빠른 프로토타입, 반복 및 확장, 동기화와 안정화 등이 있다.[26]

SDLC 방법론은 애자일 방식과 반복적 방식, 순차적 방식 사이에서 균형을 이룬다. 익스트림 프로그래밍이나 스크럼과 같은 애자일 소프트웨어 개발 방법론은 개발 중 빠르게 변화에 대응할 수 있도록 가벼운 프로세스를 유지하는 데 중점을 둔다.[5] 래셔널 통합 프로세스동적 시스템 개발 방법과 같은 반복적인 방법론은 프로젝트의 작은 부분을 빠르게 개발하고, 반복적으로 기능을 확장하거나 개선하는 데 초점을 맞춘다. 반면, 폭포수와 같은 순차적 모델은 대규모 프로젝트를 세밀하게 계획하고, 위험을 줄이며, 예측 가능한 결과를 얻는 데 집중한다.[6] 변형 개발은 프로젝트의 범위와 적응적 반복을 따른다.

프로젝트 관리에서 프로젝트는 프로젝트 수명 주기 (PLC)와 SDLC를 모두 포함한다. 테일러(Taylor)에 따르면 "프로젝트 수명 주기는 프로젝트의 모든 활동을 포함하는 반면, 시스템 개발 수명 주기는 제품 요구 사항을 실현하는 데 중점을 둔다".[7]

SDLC는 방법론 자체가 아니라, 방법론이 다루어야 하는 단계에 대한 설명이다. 일반적으로 계획, 분석, 설계, 구축, 테스트, 구현, 유지 관리/지원의 단계를 포함한다. 예를 들어, 스크럼 프레임워크에서는[8] 단일 사용자 스토리가 2주 스프린트 내에서 SDLC의 모든 단계를 거칠 수 있다. 반면, 폭포수 방법론에서는 모든 비즈니스 요구 사항이 기능/기능 설명으로 변환된 다음, 일반적으로 몇 달 또는 그 이상 동안 모두 구현된다.

SDLC는 구조를 통해 유연성과 제어 사이의 균형을 맞추며, 대규모 프로젝트에 유용하게 사용된다.

소프트웨어 개발 수명 주기의 강점과 약점[24]
강점약점
제어개발 시간 증가
대규모 프로젝트 모니터링개발 비용 증가
상세한 단계시스템을 사전에 정의해야 함
비용 및 완료 목표 평가경직성
문서화비용 추정의 어려움, 프로젝트 초과
잘 정의된 사용자 입력사용자 입력이 때때로 제한적임
유지 보수의 용이성병렬 처리 부족
개발 및 설계 표준문서화 및 표준 자동화 제한적
MIS 또는 인력의 변화에 대한 내성요구 사항의 변화에 대한 비내성
프로젝트가 조기에 중단되면 가치가 거의 또는 전혀 없음


참조

[1] 웹사이트 SELECTING A DEVELOPMENT APPROACH https://web.archive.[...] 2014-07-17
[2] 논문 An empirical study of the Cobb–Douglas production function properties of software development effort 2008-11
[3] 웹사이트 Systems Development Life Cycle from http://foldoc.org/Sy[...] FOLDOC 2013-06-14
[4] 웹사이트 Software Development Life Cycle (SDLC) http://condor.depaul[...]
[5] 웹사이트 SDLC Overview: Models & Methodologies https://aristeksyste[...] 2021-12-12
[6] 서적 Information technology applications Pitman 1991
[7] 서적 Managing Information Technology Projects
[8] 웹사이트 What is Scrum? https://www.scrum.or[...] 2019-12-24
[9] 문서 Global Business Information Technology
[10] 웹사이트 INFORMATION RESOURCES MANAGEMENT https://www.justice.[...] US Department of Justice 2003
[11] 서적 Software Testing: Testing Across the Entire Software Development Life Cycle John Wiley & Sons
[12] 서적 The Art of Agile Practice: A Composite Approach for Projects and Organizations https://books.google[...] CRC Press
[13] 서적 Practical Support for Lean Six Sigma Software Process Definition: Using IEEE Software Engineering Standards https://books.google[...] John Wiley & Sons
[14] 웹사이트 QuickStudy: System Development Life Cycle http://www.computerw[...] 2002-05-14
[15] 서적 Introduction to Logistics Engineering https://books.google[...] CRC Press
[16] 서적 Information Systems Control and Audit https://resource.cdn[...] Institute of Chartered Accountants of India 2013-08
[17] 웹사이트 The Maintenance Phase Of Software Development Life Cycle https://www.primetec[...] kazim shah 2024-05-12
[18] 웹사이트 The system development life cycle (SDLC) https://csrc.nist.ri[...] National Institute of Standards and Technology n.d.
[19] 서적 Systems Engineering and Analysis, Fourth Edition Prentice Hall
[20] 서적 Introduction to Engineering, System Engineering Melikon Pty Ltd
[21] 논문 HERC Maintenance https://www.hercbpm.[...] 2009-05-13
[22] 간행물 Systems Development Life-Cycle Policy http://www.house.gov[...]
[23] 서적 Systems engineering and analysis Prentice Hall
[24] 서적 Management information systems: Solving business problems with information technology McGraw-Hill Irwin
[25] 웹인용 Systems Development Life Cycle from http://foldoc.org/Sy[...] FOLDOC 2013-06-14
[26] 문서 Software Development Life Cycle (SDLC) https://docs.google.[...]
[27] 웹사이트 INFORMATION RESOURCES MANAGEMENT http://www.justice.g[...] US Department of Justice 2003



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com