본문 바로가기

Software Engineering

[소프트웨어 공학] 소프트웨어 개발 수명 주기

소프트웨어 개발 수명주기(SDLC)는 품질, 비용, 일정 관리의 균형을 체계적으로 잡아준다는 점에 있어서 중요한 요소입니다. 단계별 검증과 피드백으로 오류를 빠르게 발견해 품질을 확보하고, 계획-설계-구현-테스트의 흐름을 명확히 해 재작업과 일정 지연을 줄여 비용과 시간을 절감할 수 있죠. 요구사항 변경, 기술적 위험을 단계적으로 통제해 리스크를 관리 할 수 있습니다.

 

SDLC는 소프트웨어 개발 방법론의 바탕이 되며 각 단계별 산출물이 존재합니다.

 

1. 폭포수 모델

폭포수 모델은 과거에 폭넓게 사용되던 방식으로 정해진 단계를 한번씩만 진행하며 이전 단계로 돌아갈 수 없습니다. 다음 단계로 넘어가기 위해선 단계별로 결과물이 명확히 도출되어야 합니다. 이러한 특성들 때문에 메뉴얼 작성은 필수죠.

 

폭포수 모델은

 

계획 - 요구분석 - 설계 - 구현 - 테스트 - 유지보수

 

의 단계로 이루어집니다.

 

2. 프로토타입 모델

이전 단계로 돌아갈 수 없는 폭포수 모델의 단점을 보완한 것으로, 시제품(Prototype)을 통해 최종 결과물을 예측할 수 있는 모델입니다. 프로토타입은 유저와 시스템 사이의 인터페이스에 중점을 두며 개발을 진행합니다. 이러한 프로토타입은 추후 최종 구현 단계에서 뼈대로 사용될 수 있습니다.

 

요구사항 수집 - 빠른 설계 - 프로토타입 구현 - 유저 평가 - 시제품 조정

 

의 과정을 반복적으로 수행해 제품을 구현하는 방식입니다.

 

3. 나선형 모델

나선형 모델은 폭포수 모델과 프로토타입 모델의 장점위험 분석 기능을 더해 여러번의 지속적인 개발을 통해 점진적으로 개발하는 모델입니다. 개발 중 발생가능한 위험을 최소화 하는 것이 목적으로, 개발과 테스트, 피드백이 반복적으로 이루어지기 때문에 누락되거나 추가된 요구사항을 빠르게 반영할 수 있습니다. 이 덕분에 유지보수 부담이 상대적으로 적습니다.

 

계획 및 목표설정 - 위험 분석 - 공학적 개발 및 검증 - 고객 평가

 

가 기본 사이클이며, 이를 반복적으로 수행해 제품을 완성합니다.

 

4. 애자일

고객과의 소통을 가장 중점적으로 생각하는 여러 방법론이 공유하는 개발 철학을 애자일 모델이라고 부릅니다. 짧은 개발 주기를 통해 고객 피드백을 적극적으로 수용합니다. 소통을 통해 우선적으로 처리해야하는 작업의 순위를 지정하고 개발을 진행하게 됩니다. Scrum, Xp, Kanban, crystal, FDD, ASD, DSDM 등이 이에 해당하죠. 애자일 모델은 소통과 협업, 변화 대응에 가치를 두고 있는 방식이라고 볼 수 있습니다.

 

4.1 스크럼 모델

이 중 스크럼은 애자일 철학을 실제로 실행하기 위한 구체적인 프레임워크로, 스크럼 팀을 구성해 개발 효율을 높이는 개발 모델입니다. 제품 책임자, 스크럼 마스터, 개발팀으로 구성된 스크럼 팀은 반복적 스프린트를 통해 짧은 기간 동안 하나의 task를 개발합니다.

 

제품 책임자는 말 그대로 목표 제품에 대한 책임을 지고 의사결정을 담당하는 사람입니다. 이해관계자들의 의견을 종합하여 요구사항을 백로그에 작성하고 우선순위를 조정하는 등의 업무를 합니다. 이때 백로그는 개발이 필요한 부분에 대한 리스트로 제품 백로그, 스프린트 백로그가 있습니다. 

제품 백로그는 개발에 필요한 시나리오를 나열한 목록을 이야기 하며, 스프린트 백로그는 해당 스프린트에서 개발해야할 태스크를 나열한 목록을 이야기 합니다.

우선순위에 따라 개발 방향이 완전히 바뀌므로 제품 책임자가 아닌 팀원들은 백로그에 유저 시나리오 추가만 가능하고 우선순위 조정은 불가능합니다.

 

스크럼 마스터는 페이스 메이커와 같은 사람으로, 개발 팀원의 원활한 업무를 위한 가이드 역할을 수행합니다. 일일 스크럼 회의를 주관하여 파악된 장애 요소에 대해 해결 하도록 처리할 수 있습니다. 통제의 권한은 없으며, 팀원이 상황에 유연하게 대응 할 수 있도록 조력하는 조력자 역할을 담당합니다.

 

제품 책임자, 스크럼 마스터를 제외한 모든 개발인력을 개발팀이라고 부르고, 개발자뿐 아니라 디자이너와 테스터 등도 포함됩니다.

 

스크럼은 

  • 스프린트 계획 회의 - 백로그 작성, 일정 수립
  • 스프린트 진행 - 태스크를 담당할 개발자 할당
  • 일일 스크럼 회의 - 진행상황 점검
  • 스프린트 검토 회의 - 개발 완료된 부분/전체 제품 테스트, 피드백은 제품 백로그에 반영
  • 스프린트 회고 - 진행자체의 문제점, 개선점 도출

의 순서로 진행됩니다.

 

4.2 XP(eXtreme Programming) 모델

XP모델은 고객의 참여와 짧은 개발의 과정 반복을 극대화 하여 개발 생산성을 높이는 모델입니다. 소규모 인원으로 진행되는 프로젝트에 적합하며, 단계별 단순한 설계를 통해 개발 속도를 극대화 하는 방식이죠. 릴리즈 계획을 수립하고 이에 따라 스파이크 또는 이터레이션을 진행합니다. 

  • 스파이크 : 특정 기능 또는 기술을 확인하기 위한 목적으로 다른 요소는 전부 무시하고 기능하는지만을 확인하는 프로그램
  • 이터레이션 : 하나의 릴리즈를 짧은 단위의 개발 기간으로 세분화한 단위

스파이크를 통해 기술이 검증되면 해당 부분을 이터레이션으로 전달합니다. 이터레이션으로 부분 완성된 제품을 고객이 사용자 스토리 내 테스트 사항에 따라 승인 검사를 수행하게 됩니다. 이터레이션 과정 중에도 새로운 스토리가 작성되거나, 새로운 요구사항, 오류가 발견되면 다음 이터레이션에 반영해 적용할 수 있도록 합니다.