본문 바로가기

STUDY/CS

기록 - 소프트웨어 생명 주기

728x90

[소프트웨어 생명 주기 Software Life Cycle = 소프트웨어 수명 주기]

  • 소프트웨어 개발 단계와 각 단계별 주요 활동, 활동의 결과에 대한 산출물로 표현
  • 이를 표현 하는 형태 : 소프트웨어 생명 주기 모형 = 소프트웨어 프로세스 모형 = 소프트웨어 공학 패러다임
  • 소프트웨어 생명 주기 모형 예시 : 폭포수 모형, 프로토타입 모형, 나선형 모형, 애자일 모형

 

[폭포수 모형 Waterfall Model = 선형 순차적 모형]

  • 폭포에서 한번 떨어진 물은 거슬러 올라갈 수 없듯 소프트웨어개발도 이전 단계로 돌아갈 수 없다는 개념을 반영하여 각 단계를 확실이 마무리 짓고 결과를 검토한 후 다음 단계를 진행하는 개발 방법론
  • 가장 오래된 방법으로 고전적 생명 주기 모형
  • 제품의 일부가 될 매뉴얼 작성 필요
  • 다음 단계 수행을 위해 단계별 결과물이 명확하게 산출되어야 함
  • 두 개 이상 과정이 병행되지 않음

타당성 검토 > 계획 > 요구 분석 > 설계 > 구현(코딩) > 시험(검사) > 유지보수

 

 

[프로토타입 모형 Prototype Model = 원형 모형 ]

  • 사용자의 요구사항을 정확히 파악하기 위해 실제 개발될 SW의 견본을 만들어 결과물을 예측하는 방법론
  • 견본(시제품)은 사용자와 시스템 사이의 인터페이스에 중점을 두어 개발
  • 시스템의 일부 혹은 시스템의 모형을 만드는 과정으로서 요구된 소프트웨어를 구현
  • 이는 추후 구현 단계의 골격 코드가 됨
  • SW 개발 완료 시점 오류가 발견되는 폭포수 모형의 단점 보완을 위함

요구수집 > 빠른 설계 > 프로토타입 구축 > 고객 평가 > 프로토타입 조정 > 구현 > 요구수집 > ...

 

 

[나선형 모형 Spaoral Model = 점진적 모형]

  • Boehm이 제안한 것
  • 폭포수와 프로토타입 모형의 장점에 위험 분석 기능을 추가한 방법
  • 나선을 따라 돌듯이 소프트웨어 개발 과정을 여러번 반복하면서 진행하는 개발 방법
  • 여러번 소프트웨어 개발 과정을 거쳐 점진적으로 완전한 SW를 개발하는 것
  • SW를 개발하면서 발생 가능한 위험을 관리 , 최소화하는 것을 목적으로 함
  • 점진적으로 개발 과정이 반복되므로, 정밀하며 유지보수 과정이 필요 없음

 

[애자일 모형 Agile Model]

  • 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발과정을 진행
  • 빠르고 낭비 없게 만들기 위해 고객과의 소통에 초점을 맞춘 방법론
  • 스프린트 Sprint, 이터레이션 Iteration 등 짧은 개발 주기를 반복하며, 반복 주기마다 만든 결과물에 대한 고객의 평가와 요구를 적극 수용
  • 각 개발 주기에서 고객이 요구사항에 우선순위를 부여하여 개발 작업을 진행
  • 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합
  • 이를 기반으로 하는 소프트웨어 개발 모형 예시 : Scrum, XP, Kanban, Lean, Crystal, ASD, FDD, DSDM, DAD
*애자일 개발 4가지 핵심 가치*
1. 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.
2. 방대한 문서보다는 실행되는 SW에 더 가치를 둔다.
3. 계약 협상보다는 고객과 협업에 더 가치를 둔다.
4. 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.

 


* 요약

  1. 소프트웨어 생명 주기 = 수명 주기 : SW의 요구사항을 분석해서 설계하고 개발한 후 품질 향상을 위한 유지보수를 하는 과정을 단계로 나눈 것을 말함
  2. 폭포수 모형 : 계획, 문서가 개발의 중심이며 개발이 끝난 후 테스트, 새로운 요구사항 반영이 어려우며 고객과의 의사소통이 적음
  3. 애자일 모형 : 고객이 개발의 중심이며 지속적으로 새로운 요구사항을 반영하고 고객과 의사소통을 진행함. 반복되는 일정 주기가 끝날 때마다 테스트를 진행
728x90