소프트웨어 생명주기란 소프트웨어 개발하기 위한 단계인 설계와 운용, 유지보수 등의 과정을 단계별로 나눈 것으로 각 단계와 단계별로 이루어지는 주요 활동들 및 활동의 결과에 대한 결과물로 표현한다. 대표적인 생명 주기 모형에는 폭포수 모형, 프로토타입 모형, 나선형 모형, 애자일 모형의 4가지가 있다.
1. 폭포수 모형과 프로토타입 모형
첫 번째로 살펴볼 폭포수 모형이란 폭포가 한 번 쏟아지고 나면 다시 되돌아갈 수 없다는 데서 이름 붙여졌다. 한 번 개발이 진행되고 나면 이전 단계로 돌아갈 수 없다는 전제를 가지고 있어 각 단계를 완벽하게 마무리한 후에 그 결과를 확실히 검토하여 승인이 완료되는 과정을 거치고 나서야 다음 단계로 진행할 수 있는 개발 방법론이다. 여러 모형 중 가장 오래되었으며 그 역사만큼 여러 분야에서 폭넓게 사용되고 있는 전통적인 방식이며 때문에 이를 적용한 많은 경험 및 성공 사례가 존재한다. 각 단계가 끝나고 나면 다음 단계를 수행하기 위해 필요한 결과물이 명확하게 산출되어야 다음 단계로 진행할 수 있다. 두 번째로 프로토타입 모형은 원형 모형이라고도 표현하며, 모든 개발이 끝나기 전에 최종 결과물을 미리 예측해 볼 수 있는 방법이다. 사용자의 요구사항은 직접 만들어지기 전까지 무수한 수정을 거칠 수밖에 없다. 때문에 개발 단계에서 많은 시행착오가 일어나게 되는데 이를 방지하기 위해 실제 개발될 예정인 소프트웨어의 견본품을 미리 만들어 최종 결과물이 어떤 모습일지 예측할 수 있도록 해주는 방법이 바로 이 모형이며 견본품은 모든 개발이 이루어진 상태가 아니라 우선적으로 사용자와 시스템 사이에서 먼저 확인해 볼 수 있는 인터페이스를 중점으로 두고 개발한다.
2. 나선형 모형과 애자일 모형
나선형 모형은 점진적 모형이라고도 표현한다. 나선을 따라 도는 방식으로 한 번이 아닌 여러 번의 소프트웨어 개발 과정을 거쳐가며 점진적으로 좀 더 완벽한 소프트웨어를 개발해 나가는 모형이다. 이는 보헴이 제안한 방식으로 폭포수 모형의 장점과 프로토타입이 가지고 있는 장점에 위험을 분석할 수 있는 기능을 추가한 방식이다. 중간에 누락이 되었거나 추가된 요구사항을 첨가하여 개발할 수 있으며 따로 유지보수 과정이 필요 없다는 특징이 있다. 우선 계획을 수립하고 위험 분석을 진행하여 개발 및 검증하고 고객의 평가를 받는 4단계를 반복적으로 진행한다. 애자일 모형에서 애자일이란 민첩한, 기민한이라는 뜻을 가지고 있다. 이전 단계로 돌아갈 수 없는 폭포수 모델과 달리 주기마다 생성되는 결과물에 대한 고객의 평가 및 새로운 요구사항을 적극적으로 수용한다. 때문에 고객이 요구하는 사항에 변화가 있거나 새로운 요구사항이 생길 때 유연하게 대처할 수 있다. 애자일 모형의 경우 특정한 개발 방법론이 아니라 고객과의 소통에 초점을 맞춰 빠르면서도 낭비 없이 좋은 결과물을 만드는 모든 방식을 통칭한다. 따라서 기업 활동 전반에서 사용할 수 있다. 대표적인 방식에는 스크럼, XP, 칸반, Lean, 기능 중심 개발이 있다.
3. 애자일의 핵심 가치 및 소프트웨어 공학
애자일은 개인과의 상호작용을 프로세스와 도구보다 더 중요하게 생각하는 방식이다. 따라서 많은 양의 문서를 만들어내는 것보다 실행할 수 있는 소프트웨어에 더 가치를 둔다. 또한 계약의 협상이 이루어지는 것보다는 고객과 어떤 협업을 하느냐에 더 치중한다. 또한 유연한 대처가 장점인 것처럼 계획을 따르는 것보다 변화에 반응하는 것이 더 중요하다. 더 나아가서 소프트웨어 공학은 소프트웨어가 가지고 있는 위기를 극복하기 위한 대처 방안을 연구하는 학문이다. 위와 같은 방법론들과 도구들과 관리 기법들을 통해 어떻게 하면 소프트웨어의 품질을 높일 수 있을지와 생산성을 향상시킬 수 있을지를 연구한다. 때문에 기본적으로 이전의 기술에 도태되어 있지 않고 현대적이고 새로운 프로그래밍 기술을 계속적으로 적용해나가야 한다. 또한 개발하고 나면 끝이 아니라 완성된 소프트웨어의 품질을 유지할 수 있도록 지속적인 검증 과정을 필요로 한다. 한 번 개발을 진행하게 되면 그와 관련된 세부적인 가항들과 결과에 대한 기록을 명확하게 유지하는 것도 매우 중요하다.
댓글