01. 소프트웨어 생명 주기 모델

유길상·2022년 3월 28일
0

소프트웨어 생명주기(SDLC; Software Development Life Cycle)

  • 소프트웨어 생명주기는 시스템의 '요구분석'부터 유지보수까지 전 공정을 체계화한 절차이다.
  • 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때 까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화 한 것이다.
  • 요구분석 -> 개발 -> 유지보수의 프로세스를 체계화하여 모델링한 것.

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

  1. 요구사항 분석(고객이 기업에게 니즈를 제시하면 기업은 니즈에 맞게 분석하여 요구를 절충한다)

    • 다양한 이해관계자의 상충할 수도 있는 요구사항을 고려하여 새로운 제품이나 변경된 제품에 부합하는 요구와 조건을 결정하는 단계

    • 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계

    • 1)기능 요구사항과 2)비기능 요구사항이 있다.

      	1.기능 요구사항 : 기능에 초점을 맞춘 요구사항
      		예) 자동차를 예로 시동이 걸리면 주행하는 기능적 요소만을 이야기한다.
      
      	2.비기능 요구사항 : 기능이 수행하는 환경, 품질, 제한사항 등에 대한 요구사
      		예) 자동차의 연비, 디자인, 제조사 등
        
        자세한 설명 : (https://terms.naver.com/entry.naver?docId=3532929&cid=58528&categoryId=58528)
  2. 설계

    • 시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계
      -> 시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계
  1. 구현
    • 설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계
    • 프로그래밍 언어 선택, 기법, 스타일, 순서 등을 결정하는 단계
      -> 인터페이스 개발, 자료 구조 개발, 오류 처리
  2. 테스트
    • 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 단계
      -> 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트
  3. 유지보수
    • 시스템이 인수되고 설치된 후 일어나는 모든 행동
      -> 예방, 완전, 교정, 적응 유지보수

프로세스 정리
요구사항 분석(기능 요구사항, 비기능 요구사항)
-> 설계(시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계)
-> 구현(인터페이스 개발, 자료 구조 개발, 오류 처리)
-> 테스트(단위테스트, 통합테스트, 시스템테스트, 인수테스트)
-> 유지보수(예방, 완전, 교정, 적응, 유지보수)


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

- 소프트웨어 생명주기 모델 종류로는 폭포수 모델, 프로토타이핑 모델, 나선형 모델, 반복정 모델이 있다.
  1. 폭포수 모델

    • 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어 가는 모델
    • 가장 오래된 모델
    • 선형 순차적 모형으로 고전적 생명주기 모형이라고도 함
    • 모형의 적용 경험과 성공 사례가 많음
    • 단게별 정의와 산출물이 명확
    • 요구사항 변경이 어려움
    절차| 타당성검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
  2. 프로토타이핑 모델

    • 고객이 요구한 주요 기능을 프로토타입으로 구현하고, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
    • 프로토타입은 발주자나 개발자 모두에게 공동의 참조 모델을 제공
    • 프토로타입은 구현 단계의 구현 골격
    • 고객의 요구가 모호하거나 변경사항이 많은 경우 적합하다.
    절차| 타당성검토 -> 계획 -> 요구사항 분석 -> 프로토타입 개발/개선 -> 프로토타입 평가 
    -> YES -> 개발구현 -> 테스트 -> 유지보수
    -> NO -> 요구사항 분석 or 프로토타입 개발/개선 -> 프로토타입 평가 -> ... -> 유지보수
  3. 나선형 모델

    • 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
    절차| 타당성검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
  1. 반복적 모델
    • 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 모델
    • 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델

<주관적인 요약 정리>
1.폭포수 모델 : 가장 오래된 모델이라 성공사례도 많고 요구사항이 많지 않으니 결과물이 명확하지만 변경된 요구사항이 반영되기 어려우며, 병행작업이 힘들고, 피드백이 느리다.
2.프로토타이핑 모델 : 고객입장에선 피드백이 빠르게 반영되어 만족도가 높으나, 반복적인 요구사항 변경이 있을 경우 구현이 느려지며 비경제적일 수 있다.
3.나선형 모델 : 위험관리를 최소화하여 점진적으로 완벽한 시스템을 개발할 수 있으나, 프로젝트 기간이 오래걸리며 '위험관리'를 위한 전문인력이 필요하다.
4.반복적 모델 : 폭포수 모델을 변형하여 병행 개발하는 형태로 개발기간을 단축 할 수 있으나, 중분이 너무 많아질 경우 프로젝트관리가 어려워 위험도가 증가하고 요구사항 증가 시 일정이 지연된다.

0개의 댓글