전공공부/소프트웨어 설계 (Software Design)

[소프트웨어 설계] 소프트웨어 생명 주기 모형

jooona 2021. 2. 15. 19:15
반응형

소프트웨어 생명 주기(Software Life Cycle)는 소프트웨어를 개발하기 위한 정의, 운용, 유지 보수 등의 과정들을 단계별로 나눈 것입니다. 그리고 그 방식에 따라 여러 가지 모형(model)들이 존재합니다. 개발을 시작할 때 그 특성에 따라 생명 주기의 모형을 선택할 수 있습니다. 이번 글에서는 어떤 모형들이 있는지를 알아보도록 하겠습니다.

 

1. 폭포수 모형 (Waterfall Model)

가장 많이 사용되는 모형인 폭포수 모형부터 알아보겠습니다. 폭포수 모형은 폭포에서 물이 한번 떨어지면 다시 올라갈 수 없듯이, 한번 지나간 단계는 다시 살피지 않는다는 뜻을 지닌 모형입니다. 즉, 한 단계를 완벽하게 완성하고 마무리 한 뒤에 다음 단계로 넘어가며, 넘어간 뒤에는 다시 돌아오지 않습니다. 그렇기 때문에 단계별로 굉장히 뚜렷하게 목적과 정의가 존재하며, 지나간 단계로 다시 돌아오지 않기 때문에 프로젝트 중간에 요구사항을 변경하는 것은 어렵습니다.

 

폭포수 모형은 가장 오래된 생명 주기 모형이자, 가장 보편적으로 사용되는 모형입니다. 폭포수 모형에서는 각각의 단계가 끝날 때마다 다음 단계를 위한 결과물이 명확히 산출되어야 하며, 두 개 이상의 단계가 함께 실행되는 일도 없습니다.

 

2. 프로토타입 모형 (Prototype Model)

두 번째로 원형 모형이라고도 불리는 프로토타입 모형은 사용자의 요구사항을 명확히 파악하기 위해 실제 개발될 소프트웨어의 프로토타입(견본)을 먼저 만들어 최종 결과물을 예측하는 모형입니다. 프로토타입이란 실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형으로, 이 제작된 프로토타입을 골격으로 하여 본격적인 개발을 진행합니다.

 

프로토타입 모형은 마지막에 모는 기능을 테스트하는 폭포수 모형이 개발이 완료된 시점에 오류가 발견되는 일들이 종종 있는 것을 보완하기 위한 모형입니다. 또한 프로젝트 중간에 요구사항이 변경되더라도 유연하게 대처할 수 있으며, 요구사항들을 미리 프로토타입으로 만든 뒤에 이를 바탕으로 개발을 진행하기 때문에, 요구사항이 빈약할 때 사용할 수 있습니다.

 

3. 나선형 모형 (Spiral Model)

나선형 모형은 폭포수 모형과 프로토타입 모형을 결합한 형태이며, 점진적 모형이라고도 불립니다. 나선을 따라 돌듯이 여러 번의 개발 과정을 거쳐 점진적으로 완벽한 소프트웨어를 만들어나가는 모형으로, 소프트웨어 개발 시에 발생하는 위험을 관리하고 최소화하는 것을 목적으로 합니다. 점진적으로 개발과정이 반복되기 때문에 요구사항의 추가나 보완이 쉽고, 유지보수 과정이 필요 없습니다.

 

 

4. 애자일 모형 (Agile Model)

애자일 모형은 고객과의 소통에 초점을 맞춘 방법론입니다. 고객의 요구사항 변화에 유연하게 대처하고 반영할 수 있도록 일정한 주기를 반복하며 개발을 진행합니다. 이 일정한 주기를 스프린트(Sprint) 또는 이터레이션(Iteration)이라고 하며, 주기별로 만들어지는 결과물에 고객의 요구와 평가를 적극적으로 반영합니다. 그렇기 때문에 다른 방법들에 비해 변화에 대응하기도 쉽습니다.

 

애자일 모형은 특히 폭포수 모형과 많이 비교되곤 하는데, 폭포수 모형에 비해 애자일 모형은 새로운 요구사항의 반영이 쉽고, 고객과의 의사소통도 지속적으로 필요하며, 스프린트가 끝날 때마다 테스트를 거치기 때문에 마지막에 문제점을 찾아낼 확률은 훨씬 낮습니다. 또한 계획과 문서를 중심으로 개발을 진행하는 폭포수 모형과는 달리 고객과의 소통을 중심에 두고 개발을 한다는 점도 차이점입니다. 

 

애자일 모형의 기법들인 스크럼(scrum) 기법과 XP 기법은 다음 글에서 다루도록 하겠습니다.

반응형