CS

소프트웨어 생명 주기

OlttaeMelona 2023. 2. 12. 03:31

🌈소프트웨어 생명주기란?

SDLC, Software Development Life Cycle

💡 소프트웨어를 개발하기 위한 과정을 각 단계 별로 나눈 것
💡 소프트웨어 개발 방법론의 바탕이 되는 것

소프트웨어 생명주기를 소프트웨어 수명 주기라 부르기도 한다.
시스템이 개발될 때부터 운용과 유지 보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는 지에 대한 작업 프로세스를 모델화한 것이다.
소프트웨어 생명 주기는 소프트웨어 개발 단계 와 각 단계별 주요 활동, 활동 결과 에 대한 산출물 로 표현한다.



✨소프트웨어 생명주기 모델 프로세스

💡 요구사항 분석 → 설계 → 구현 → 테스트 → 유지 보수
  1. 요구사항 분석
    • 다양한 이해 관계자의 상출 될 수 있는 요구 사항을 고려하여 새로운 제품이나 변경된 제품에 부합하는 요구와 조건을 결정 하는 단계
    • 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 소프트웨어 사용자와 함께 명확하게 정의하는 단계
    • ex) 기능 요구사항, 비기능 요구사항
  2. 설계
    • 시스템 명세 단계에서 정의한 기능을 실제로 수행할 수 있도록 수행 방법을 논리적으로 결정 하는 단계
    • ex) 시스템 구조 설계 , 프로그램 설계, 사용자 인터페이스 설계
  3. 구현
    • 설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용 하여 실제 프로그램을 작성 하는 단계
    • 프로그래밍 언어 선택, 기법, 스타일, 순서 등을 결정하는 단계
    • ex)인터페이스 개발, 자료 구조 개발, 오류 처리
  4. 테스트
    • 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 검사 하고 평가 하는 단계
    • ex) 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트
  5. 유지 보수
    • 시스템이 인수되고 설치된 후 일어나는 모든 활동
    • ex) 예방, 완전, 교정, 적응, 유지보수

✨소프트웨어 생명주기 모델 종류

  • 폭포수 모델
  • 프로토타입 모델
  • 나선형 모델
  • 반복적 모델
  • 애자일 모델

1. 폭포수 모델(Waterfall Model)

💡 이전 단계로 되돌아 갈 수 없음
💡 각 단계를 확실하게 매듭짓고 철저하게 검토하여 승인 과정을 거친 후에 다음 단계를 진행하는 개발 방법론
💡 타당성 검토 → 계획 → 요구사항 분석 → 설계→ 구현 → 테스트 → 유지보수

폭포수가 위에서 아래에 떨어지면 다시 거꾸로 올라갈 수 없듯이 폭포수 모형에서도 다음 단계로 넘어가면 이전 단계로 되돌아 갈 수 없다.

가장 폭넓게 사용되고 가장 오래전 부터 존재해온 전통적인 소프트웨어 생명 주기 모형으로 고전적 생명 주기 모형 으로 부르기도 한다.

그래서 이 모형을 적용한 경험과 성공 사례가 많다.

각 단계가 끝난 후에 다음 단계를 수행하기 위한 결과물이 명확하게 산출 되어야 한다.

폭포수 모형을 다른 말로 선형 이다, 순차적 이다 라고도 한다.

초기에 프로젝트를 하기 앞서 계획을 세우는데 초기에 세운 계획 대로만 순차적으로 개발하며 중간에 개발 방향을 변경할 수 없다.

만약 개발 방향을 변경하고 싶다면 완전 처음부터 다시 계획부터 세워야 한다.

폭포수 모형을 적용하여 개발을 하게 된다면 반드시 사용자의 요구를 정확하게 파악해서 계획 을 잘 세워야 한다.



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

💡 실제 개발될 소프트웨어 견본품(Prototype)을 만들어 최종 결과물을 예측하는 모형

프로토타입 모델은 사용자의 요구사항을 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품을 만들어서 최종 결과물을 예측하는 모형이다.

견본품(Prototype) 은 사용자와 시스템 사이의 인터페이스(핵심기능만 구현 )에 중점을 두어 개발한다.

견본품에 사용자가 요구하는 기능을 전부 반영하여 소프트웨어를 완성하는 방식이다.



3. 나선형 모델(Spiral Model, 점진적 모형)

💡 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템을 개발해 나가는 모델
💡 계획 수립 및 정의 → 위험 분석 → 개발 및 검증 → 고객 평가
💡 나선형 모형 = 폭포수 모델 장점 + 프로토타입 모델 장점 + 위험분석 기능 추가

아주 기능이 많은 대규모 소프트웨어 는 한번의 프로토타입만으론 개발이 어려운 문제가 발생한다.

계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가의 순서를 끊임 없이 반복하며 유지 보수가 필요 없을만큼 소프트웨어의 완성도를 높히는 것이 최종 목표이다.

보헴(Boehm)이 제안했다고 한다.

누락되거나 추가된 요구사항을 첨가가 가능 하다.

별도의 유지 보수의 과정이 필요 없다.



4. 반복적 모델(Iteration Model)

💡 구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는  SDLC 모델
💡 사용자의 요구사항 일부분 혹은 제품의 일부분을 반복적으로 개발하여 고품질의 최종 시스템으로 완성해가는 모델