본문 바로가기

더 괜찮은 개발자가 되기위한/프로젝트 관리하기

소프트웨어 생명주기 모델

□ 소프트웨어 생명주기 모델


○ 소프트웨어 생명주기 모델이란?


SDLC의 구성


소프트웨어 생명주기 모델(SDLC: Software Development Life Cycle)은 소프트웨어를 기획부터 개발, 폐기까지를 하나의 주기로 보고 이를 효과적을 관리하기 위한 절차를 정의한 것이다. 소프트웨어 개발방법론과 겹치는 부분이 많지만 생명주기 모델은 좀 더 프로세스 관리에 초점을 맞추고 있다고 생각하면 된다


SDLC의 대표 유형


SDLC는 대표적으로 폭포수 모델, 프로토타이핑 모델, 나선형 모델, 반복적 모델 이렇게 4가지가 있다. 폭포수 모델은 분석, 설계, 개발, 테스트의 전 과정을 순차적으로 접근하는 방식이다. 분석 단계를 마무리하고 설계 단계로 들어가고 설계 단계를 마무리하고 개발 단계로 들어가게 된다. 프로젝트에서 많이 진행하는 착수 보고회, 설계 보고회 같은 경우가 각 단계를 마무리하고 고객에게 설명하는 자리이다. 폭포수 모델은 전체 과정이 이해가 쉽고 관리가 편리하다는 장점이 있지만, 초기에 완벽한 요구사항 정의가 어렵기 때문에 프로젝트 후반부로 갈수록 문제가 많아지는 단점이 있다.


프로토타이핑 모델은 초기에 고객의 요구사항을 확정하기 어려운 상황에서 많이 사용된다. 동작하는 테스트 프로그램(프로토타입)을 먼저 개발해 고객 요구사항을 구체적으로 도출하거나 프로젝트 타당성을 평가하는 개발 방식이다. 고객 요구사항을 정확하게 분석할 수 있는 장점이 있지만, 프로토타입 폐기에 따른 비용문제가 발생할 수 있다.


SDLC 유형별 비교 

나선형 모델은 핵심 요구사항을 먼저 도출한 다음 위험분석을 수행 후 프로그램을 개발하고 고객 평가를 반영해 프로그램을 개선하는 방식으로 진행하는 점진적, 반복적 모델이다. 주기적으로 위험분석을 수행하고 분석, 설계, 개발의 모든 과정을 반복적으로 수행하기 때문에 위험 부담이 적은 장점이 있지만, 같은 단계를 반복하기 때문에 공정관리에 어려움이 있다는 단점이 있다.


반복적 모델은 개발해야 할 소프트웨어를 여러 개(증분: Incremental) 로 나누고 증분을 반복적으로 개발해 나가면서 완성한다. 나중에 증분 전체를 하나로 통합해 소프트웨어를 완성하는 방식이다. 폭포수 모델의 변형적인 방법으로 전체를 증가분으로 나누어 병행 개발이 가능하다는 장점이 있지만, 병행 개발에 따른 프로젝트 관리가 어렵다는 단점이 있다.

 

○ 실무적인 폭포수 모델

폭포수 모델 개념도


앞에서 간단하게 설명했듯이 폭포수 모델은 개발 전 과정을 순차적으로 접근하는 방식이다. 다시 말하면 요구 분석 단계로 넘어가기 위해서는 프로젝트 계획 단계가 반드시 끝나야 하고 계획 단계 산출물인 계획서를 검증해 완료 여부를 확인하게 된다. 이렇게 모든 단계가 하나씩 마무리 되면서 시스템 개발이 완료되면 운영 단계로 넘어가게 된다.


각 단계별로 검증해야 하는 정해진 산출물이 있는데 이는 SDLC와 프로젝트 개발방법론을 함께 고려해 무엇을 만들어야 할지 정하게 된다. 이전 단계에서 나온 산출물은 다음 단계에서 기초자료로 활용된다. 예를 들어 설계단계에서는 요구사항 명세서를 기초로 무엇을 만들어야 하는지 정하게 되고, 개발 단계에서는 설계서를 기초로 프로그램 개발을 하게 된다. 이론적으로는 완벽한 요구사항 명세서를 기초로 설계서를 개발해야 하지만 실무적으로는 설계서 개발 과정에서 요구사항에 누락된 부분이 빈번하게 발견되며 이에 대한 수정이 이루어지게 된다. 꼭 전 단계 산출물만 수정되는 것이 아니라 개발 과정에서도 누락된 요구사항이 발견되는 경우가 많다. 이는 요구사항 명세서와 설계서를 동시에 수정해야 되는 일로 이어진다.


기업에서 프로젝트를 관리하기 위해 기본적으로 폭포수 모델을 사용하지만, 순수하게 폭포수 모데 만을 사용하지는 않는다. 앞서 얘기했듯이 전 단계 산출물이 반복적으로 수정되기 때문에 이는 나선형 모델의 개념과 비슷한 부분이 많다. 또한 요구사항을 분석하기 위해 프로토타입을 만드는 경우도 있으므로 현실적으로는 폭포수 모델을 기초로 한 하이브리드 관리 모델을 사용한다고 보는 것이 정확하다.

많은 기업에서 프로젝트를 관리할 때 폭포수 모델을 사용하는 이유는 관리가 편하다는 장점도 있지만, 비용정산에 유용하기 때문이기도 하다. 폭포수 모델에서는 단계별로 산출물을 완료해야 하므로 전체 프로세스 중에 몇 퍼센트가 완료됐는지 중간에 점검할 수 있다. 수주사에서는 프로젝트를 진행할 때 계속 비용이 들어가기 때문에 프로젝트 시작할 때 선금을 받고 프로젝트 중간에 중도금을 받아간다. 중도금은 전체 개발 업무 중 완료된 부분에 해당하는 금액을 받아가는 개념이라 단계별 검증을 통해 발주사와 수주사가 완성된 부분을 합의하고 그에 따른 비용을 정산하게 된다.