S/W 생명주기 (SDLC, Software Development Life Cycle)
in Computer Science / Software-design
교과서 기초 개념 정리
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)
- 개발자, 디자이너, 테스터 등의 구성원
- 백로그(Backlog)
- 제품 개발에 필요한 모든 요구사항을 우선순위에 따라 나열한 목록
- 백로그에 작성된 내용을 토대로 전체 일정계획을 수립
- 스프린트 계획 회의
- 백로그 중 수행할 작업을 대상으로 단기 일정 수립
- 스토리를 개발자들이 나눠서 작업할 수 있도록 태스크 작업 단위로 분할
- 개발자별로 수행할 작업 목록인 스프린트 백로그 작성
- 스프린트(Sprint)
- 스프린트 백로그를 토대로 2~4주 내에서 개발을 진행
- 일일 스크럼 회의
팀원들이 약속된 시간 동안
진행한 태스크 상황을 점검
- 스크럼 검토 회의
- 전체 완성 제품이 요구사항에 잘 부합되는지 검증
- 사용자가 포함된 인원 구성으로 테스트
- 스프린트 회고
- 스프린트 주기를 훑어보며 정해놓은 규칙 준수 여부와 개선사항을 확인하고 기록
XP(eXtream Programming) 기법
- 의사소통 / 단순 / 용기 / 존중 / 피드백
- 사용자의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발과정의 반복을 극대화
- 단순한 설계와 코딩, 짧고 반복적인 개발 주기, 고객의 참여를 통해 S/W를 신속히 개발하는 것이 목표
- 반복적으로 프로토타입을 고객에게 제공함으로써 고객 요구사항 변화에 신속하게 대응