정보처리기사/소프트웨어 설계

소프트웨어 개발 생명주기

joungdev 2025. 1. 21. 10:20

 우리는 어떤 일을 실천하기 전에 항상 계획이란 걸 세운다. 공부를 할 때도, 여행을 갈 때도 마찬가지이다. 소프트웨어 개발도 마찬가지로 계획을 세우고 계획된 프로세스를 통해 개발을 진행한다. 소프트웨어 개발 생명주기는 이러한 프로세스를 체계화시킨 것이라고 생각하면 된다.


소프트웨어 개발 생명주기란

소프트웨어 개발 생명주기 (SDLC, Software Develpment Life Cycle)은 소프트웨어가 기획 단계에서부터 시작하여 설계, 구현, 테스트, 배포, 그리고 유지보수에 이르기까지의 전체 과정을 체계적이고 구조적으로 정의한 모델이다.

 

계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 배포 -> 유지보수

 

 

 이 주기는 소프트웨어 개발 과정에서 발생할 수 있는 다양한 문제를 최소화하고, 효율적이며 높은 품질의 소프트웨어를 안정적으로 개발하는 데 목적을 두고 있다. 이를 통해 개발팀은 체계적인 접근 방식을 활용하여 소프트웨어 개발 프로젝트의 모든 단계를 관리하고 통제할 수 있다.

 

 SDLC는 소프트웨어가 사용자 요구 사항을 충족하면서 동시에 기술적, 경제적, 그리고 운영적으로 실행 가능한 상태로 완성되도록 하는데 중점을 둔다. 이를 위해 각 단계에서 수행해야 할 작업과 산출물을 명확히 정의하며, 개발 팀이 효율적으로 협업할 수 있는 환경을 제공한다. 

 

 SDLC의 핵심은 단계별 접근 방식에 있다. 각 단계는 독립적이면서도 밀접하게 연계되어 있으며, 특정 단계에서 생성된 결과물이 다음 단계의 입력 데이터로 사용된다. 이렇게 함으로써 전체 개발 과정에서 명확성과 일관성을 유지할 수 있다. 또한, 각 단계에서 지속적으로 피드백을 수집하여 계획과 실행을 조정함으로써 최적의 결과를 도출할 수 있도록 한다.

 

 SDLC 모형는 여러 다양한 종류가 있는데 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 배포 -> 유지보수라는 프로세스는 유지되고 이 플로우를 크게 벗어나지 않는 다는 것도 기억하면 좋다.


SDLC 모형의 종류 - 폭포수 모델

폭포수 모델

 

 폭포수 모델은 소프트웨어 개발 생명주기의 초기 모델 중 하나로, 개발 과정을 여러 단계로 나누고 각 단계를 순차적으로 수행하는 방식이다. 위 모델은 위에서 아래로 물이 떨어지는 폭포처럼, 한 단계가 완료되어야만 다음 단계로 진행한다는 특징이 있다.

 

 각 단계는 독립적이며, 이전 단계가 완료되고 검토된 후에야 다음 단계로 넘아갈 수 있다. 따라서, 단계를 명확하게 구분하고, 이전 단계로 되돌아갈 수 없는 흐름을 가진다. 각 단계에서는 산출된 문서화된 결과물이 다음 단계의 입력 데이터로 사용이 된다. 

 

 하지만, 이러한 특징으로 인해 한 번 완료된 단계를 되돌아가 수정이 어렵다. 때문에, 단계를 매우 명확하게 마무리를 짓고 넘어가야 한다. 각 단계에서의 시간과 비용은 많이 들어가게 되고 각 단계를 오랜 시간 수행할 수 밖에 없는 단점을 지닌다. 또한, 오류가 초기에 발겨되지 않으면 이후 단계에서 수정 비용이 크게 증가한다는 단점이 있다.

 

 결론적으로, 폭포수 모델은 유연성이 매우 부족하기 때문에 초기 모델로만 사용을 하고 현재는 복잡하지 않은 소규모 프로젝트에서만 사용하는 모델로 굳혀졌다.


SDLC 모형의 종류 - 프로토타입 모델

프로토타입 모델

 

 프로토타입 모델은 소프트웨어 개발 초기 단계에서 사용자 요구 사항을 명확히 정의하기 위해 소프트웨어의 시제품(프로토타입)을 빠르게 개발하는 방식이다. 사용자와 개발자 간의 의사소통을 강화하고, 최종 제품의 완성도를 높이기 위해 설계된 반복적이고 실험적인 개발 모델이다.

 

 프로토타입 모델은 시제품을 제작하여 즉각적으로 사용자의 피드백을 받을 수 있으므로, 사용자의 요구가 불확실하거나, 명확하지 않을 때 유용하다. 빠르게 프로토타입을 제작한 후, 지속적으로 개선할 수 있다는 장점이 있다. 피드백에 기반을 하여 개발을 하므로 사용자의 만족도를 높이는데에도 좋은 모델 중 하나이다. 

 

 하지만, 반복적인 프로토타입 제작과 개선 과정으로 인해 시간과 비용이 추가로 발생할 수 있다. 또한, 프로토타입을 만들 때마다 요구 사항은 계속 변경이 되면서 프로타입을 마구잡이로 만들어야 할 수도 있고 이로 인해 최종 제품 개발이 지연될 수 있다는 단점이 있다.


SDLC 모형의 종류 - 나선형 모델

나선형 모델

 

 나선형 모델은 반복적이고 위험 관리 중심의 접근 방식을 채택한 개발 모델이다. Boehm이 제안한 이 모델은 폭포수 모델과 프로토타이핑 모델의 자점을 결합하여, 대규모 프로젝트나 복잡한 시스템 개발에서 발생하는 위험을 줄이는 데 초점을 맞춘다.

 

단계

  1. 목표설정 및 계획 : 각 반복 주기의 목표를 정의한다.
  2. 위험분석 : 프로젝트의 주요 위험 요소를 식별하고 분석한다. 프로토타입을 제작하여 기술적 실현 가능성을 검증한다.
  3. 개발 및 테스트 : 위험 분석 결과를 바탕으로 소프트웨어를 설계하고 개발한다.
  4. 고객 평가 : 고객이나 이해관계자로부터 피드백을 수집한다. 다음 반복 주기의 목표와 계획을 수립한다.

 

 나선형 모델은 해당 단계를 바탕으로 프로토타입을 제작하여 위험을 분석하고 위 단계를 반복 수행하여 매번 발생할 수 있는 위험을 줄이고, 얻은 경험을 바탕으로 다음 단계를 계획한다. 이렇게 반복하며 소프트웨어를 점진적으로 완성해 나가는 방식이 나선형 모델이다.

 

 반복 주기마다 위험을 분석하고 해결하므로 프로젝트를 안정적으로 진행할 수 있다는 장점이 있고 각 주기 마다 고객의 피드백을 반영할 수 있어, 요구사항 변경에 유연하게 대처할 수 있다. 하지만 각 주기에서 위험 분석과 계획 수립이 필요하기 때문에 관리가 복잡하고 시간과 비용이 증가할 수 있다는 단점이 존재한다. 또한, 위험을 효과적으로 분석하고 해결할 수 있는 높은 수준의 기술적 전문성과 경험이 필요하다는 제한도 있다.


 지금까지 SDLC의 주요 모델에 대해 알아보았다. 이 외에도 V-모델과 애자일 모델이 있다. V-모델은 테스트 기법과 밀접하게 관련된 내용이 포함되어 있으며, 애자일 모델은 다양한 방식과 철학을 내포하고 있어 이에 대한 내용은 다음 포스팅에서 다루도록 하겠다.

반응형