S/W 생명주기 (SDLC, Software Development Life Cycle)

S/W 생명주기 (SDLC, Software Development Life Cycle)

교과서 기초 개념 정리

 

SDLC, Software Development Life Cycle

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


폭포수형 모델(Waterfall Model)

  • 소프트웨어 개발의 전 과정을 나누어 체계적이고 순차적으로 접근하는 방식
  • 각 단계의 결과가 확인되어야지만 다음 단계로 넘어간다
  • Bohea가 제시한 고전적 생명주기 모델로 선형 순차적 모델이라고도 함
  • 가장 오래된 모델로 많은 적용 사례가 있지만 요구사항의 변경이 어렵다

타당성 검토 → 계획 → 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수


프로토타입 모델(Prototyping Model)

  • 점진적으로 시스템을 개발해 나가는 접근 방식
  • 프로토타입을 만들어 고객과 사용자가 함께 평가한 후 개발될 소프트웨어의 요구사항을 정제하여 보다 완전한 요구 명세서를 완성하는 방식
  • 장점
    • 개발과정에서 사용자의 요구를 충분히 반영한다
    • 최종결과물이 만들어지기 전에 의뢰자가 최종 결과물의 일부 혹은 모형을 볼 수 있다
    • 의뢰자나 개발자 모두에게 공동의 참조 모델을 제공한다

나선형 모델(Spiral Model)

  • 폭포수 모형과 원형모형의 장점을 수용하고 위험분석을 추가한 점증적 개발모델
  • 프로젝트 수행시 발생하는 위험을 관리하고 최소화하기 위한 방식
  • 대규모 시스템 개발에 적합

반복 { 계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가 }


애자일 모델(Agile Model)

  • 고객의 요구사항 변화에 민첩하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 진행
  • 개발절차나 도구보다는 고객과의 소통에 초점을 맞춘 방법론을 의미
  • 개발 주기마다 고객의 요구사항이 가장 우선시되어 개발 작업을 진행
  • 소규모 프로젝트, 숙련된 개발자, 요구사항의 변화가 많은 프로젝트에 적합

애자일 기반 S/W 개발 모형

  • 스크럼 / 칸반 / Lean / 크리스탈
  • XP(eXtream Programming)
  • ASD(Adaptive S/W Development)
  • FDD(Feature Driven Development)
  • DSDM(Dynamic System Development Method)
  • DAD(Disciplined Agile Delivery)

애자일 모델 - 스크럼(Scrum)

  • 팀 중심으로 개발의 효율성을 높이는 형태
    • 스크럼마스터(Scrum Master) - 스크럼 회의를 주관하고 진행 사항을 점검
    • 제품책임자(Product Owner) - 요구 사항을 작성하는 주체로 백로그를 작성. 프로젝트에 대한 이해도가 높아야 하며 제품 테스트를 수행하고 요구사항의 우선순위를 갱신하는 역할을 맡음
    • 개발팀(Development Team) - 개발자, 디자이너, 테스터 등의 구성원

 

 

  1. 백로그(Backlog)
    • 제품 개발에 필요한 모든 요구사항을 우선순위에 따라 나열한 목록
    • 백로그에 작성된 내용을 토대로 전체 일정계획을 수립
  2. 스프린트 계획 회의
    • 백로그 중 수행할 작업을 대상으로 단기 일정 수립
    • 스토리를 개발자들이 나눠서 작업할 수 있도록 태스크 작업 단위로 분할
    • 개발자별로 수행할 작업 목록인 스프린트 백로그 작성
  3. 스프린트(Sprint)
    • 스프린트 백로그를 토대로 2~4주 내에서 개발을 진행
  4. 일일 스크럼 회의
    • 팀원들이 약속된 시간 동안 진행한 태스크 상황을 점검
  5. 스크럼 검토 회의
    • 전체 완성 제품이 요구사항에 잘 부합되는지 검증
    • 사용자가 포함된 인원 구성으로 테스트
  6. 스프린트 회고
    • 스프린트 주기를 훑어보며 정해놓은 규칙 준수 여부와 개선사항을 확인하고 기록

XP(eXtream Programming) 기법

  • 의사소통 / 단순 / 용기 / 존중 / 피드백
  • 사용자의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발과정의 반복을 극대화
  • 단순한 설계와 코딩, 짧고 반복적인 개발 주기, 고객의 참여를 통해 S/W를 신속히 개발하는 것이 목표
  • 반복적으로 프로토타입을 고객에게 제공함으로써 고객 요구사항 변화에 신속하게 대응

© 2022. All rights reserved.