소프트웨어 개발의 생명주기 모형

안희수·2021년 3월 9일
0

서두

※ 해당 게시글은 2021년 3월 9일 1 차 작성 되었고
2021년 3월 17일 추가적으로 개정되었음


소프트웨어 개발을 할때 요즘에는 애자일 방법론이 대세라고 하지만
애자일 방법론이 나오기 이전 구조적 개발 방법론에서 통상적으로
폭포수 모형, 프로토타입 모형, 나선형 모형이 사용되었다

이를 소프트웨어 생명 주기 모형이라고 하는데
크게 다음과 같은 특징을 가지고 있다

  • 폭포수 모형

    • 선형 순차적 모형
    • 가장 오래되고 폭넓게 사용된 고전적 생명 주기 모형
  • 프로토타입 모형

    • 실제 개발될 소프트웨어에 대한 견본을 만들어
      최종 결과물을 예측하는 모형
  • 나선형 모형

    • 폭포수 모형과 프로토타입 모형에 장점에
      위험 분석 기능을 추가한 모형

이 글에서는 기존의 소프트웨어 생명주기 모형을 통해 소프트웨어 개발을 할 때 어떤 상황에서 어떠한 모형을 적용해야 하는지 알기위해 내용을 정리한다.


특허청 표준 개발 순서

  • 일반적으로 프로젝트를 진행할 때 해당 절차로 개발 되어진다
    • 1. 준비 단계
    • 2. 분석 단계
    • 3. 설계 단계
    • 4. 구현 단계
    • 5. 시험 단계
    • 6. 전개 단계
    • 7. 인도 단계

1) 폭포수 모형
(Waterfall Model)

선형 순차적 모형으로 고전적 생명주기 모형이라고 한다

  • 폭포수 모형은 항공 방위 소프트웨어 시스템 개발 경험을 토대로
    처음 개발되어 1970년대 부터 널리 알려졌다

  • 유사한 개발 경험이 있는 경우
    효율적이고 품질면에서 우수하다

  • 명확성이나 정밀성을 강조하는 경우
    코딩이나 테스트 작업이 지연될 수 있다


폭포수 모형의 특징

  • 각 단계가 명확하다

    • 각 단계를 확실히 매듭짓고 결과를 철저히 검토한다
    • 승인 과정을 거친후에 다음 단계를 진행한다
    • 도중에 문제가 생겨도 이전 단계로 되돌아갈 수 없다
  • 요구사항의 변경이 어렵다

    • 개발 및 구현이 진행 되고 있는 시점에서 요구 수정을 할 수 없다
    • 구현이 완료된 시점 이후 다음과 같은 문제가 발생한다
      ① 요구사항이 제대로 반영되지 않거나 차이가 있음
      ② 요구사항 분석 단계에서 발견되지 않았거나 추가됨
  • 2가지 과정이 병행 되거나 이전단계로 넘어갈 수 없다


이전에 개발 프로젝트를 진행하게 되면 주로 이 방식으로
개발을 진행했고 신규 개발이 아니라 솔루션 구축에 사용되던 방법이다


폭포수 모형의 개발 순서

1. 타당성 검토
2. 계획단계
3. 요구 분석 단계
4. 설계 단계
5. 구현단계
6. 시험(검사)단계
7. 유지보수 단계


폭포수 모형의 장점과 단점

장점

  • 모형의 적용 경험과 성공사례가 많다
  • 단계별 정의가 분명하고, 전체 공조의 이해가 용이하다
  • 단계별 산출물이 정확하여 개발 공정의 기준점을 잘 제시한다

단점

  • 개발 과정중에 발생하는 새로운 요구나 경험을 반영하기 어렵다
    때문에 사용자에게 요구사항을 명확하게 제시 받아야 한다

  • 오류 없이 다음 단계로 진행하기 어렵다
    단계별로 오류없이 진행해야 하는데 현실적으로는 어렵다

  • 업무에 운용할 때 검출 되지 않은 오류가 발견될 수 있다
    개발 단계에서는 발견되지 않았던 오류가 운용하면서 발견되므로
    사용자의 인내심이 요구된다


2) 프로토타입 모형
(Prototype Model)

시스템 개발 초기에 사용자(고객)의 요구 기능을 시제품으로 만들어 사용자로 하여금 기능과 사용성 등에 대해 검증시켜 가면서 시스템을 개발하는 기법이다

  • 시제품을 만들어 사용자의 피드백을 신속하게 제공 받을 수 있다
  • 시제품은 사용자의 시스템 사이의 인터페이스에 중점을 두어 개발한다
  • 시스템의 구현 단계에서 사용할 골격 코드가 된다
  • 공동의 참조모델을 제공한다
  • 시뮬레이션을 통해 최종 결과물 예측이 가능한 모형이다

프로토타입 모형의 특징

  • 요구사항의 변경이 용이하다

    • 요구사항이 불명확한 경우 적용하기 좋다
    • 개발 중 발생한 요구사항을 쉽게 반영할 수 있다
    • 도중에 문제가 생겨도 이전 단계로 되돌아갈 수 없다
  • 최종 결과물의 일부 또는 전체 모형을 볼 수 있다

    • 구현 단계에서 구현 골격이 된다
    • 실제 소프트웨어와의 차이가 발생할 수 있다
  • 고객이 만족할 때까지 해당 과정을 반복한다
    ① 고객이 만족하지 않으면 프로토타입을 다시 만든다
    ② 고객이 만족하면 이를 토대로 구현 단계에 들어간다

  • 단기간에 개발하기 때문에 비효율적인 코딩을 할 수 있다


정규 개발 프로젝트가 아닌 추가 비용을 받고 진행하는
개발 범위 외 프로젝트를 진행할 때 주로 사용되었다


프로토타입 모형의 개발 순서

1. 요구 수집
2. 빠른 설계
3. 프로토타입 구축
4. 고객 평가
5. 프로토타입 조정

※ 프로토타입은 개발과 구현 테스트 단계로 넘어가지 않는다

요구 분석 단계에서 사용되며 프로토타입의 평가가 끝나고 개발이 승인되면 다른 모형을 이용하여 본격적인 개발이 이루어진다


프로토타입 모형의 장점과 단점

장점

  • 요구사항을 충실히 반영하며, 요구사항 변경에 용이하다

  • 최종 결과물이 만들어지기 전에 의뢰자가 최종결과물 일부를 볼 수 있다

  • 의뢰자나 개발자 모두에게 공동의 참조모델을 제공한다

단점

  • 실제 소프트웨어와에 차이가 발생할 수 있다
    프로토타입과 실제품과의 괴리감으로 사용자가 혼란에 빠질 수 있다

  • 단기간에 제작하므로 비효율적 코딩이 사용된다
    비효울적인 언어나 알고리즘을 사용할 수 있다



프로토타입의 종류

Working Prototype
프로토타입형 프로그램을 이용해서 사용자의 요구를 반아들이면서 개발하는 방식이다
Program Prototype
이미 개발된 프로그램을 사용자에게 설명하면서 사용자의 요구를 받아들이는 방식이다
Paper Prototype
프로그램은 없고 문서만으로 사용자에게 설명하면서 사용자의 요구를 받아 들이는 방식이다


프로토타입의 원칙

  • 프로토타입 소프트웨어는 사용자의 요구를 받아들이는 것이 목적인 소프트웨어이다
    • 사용자의 요구가 모두 수렴되면 새로운 소프트웨어가 만들어져야 한다
    • 전체적인 구조나 세부적인 기능의 연결을 잃어버릴 수 있으므로
      구현 단계에서는 폐기처분 해야 한다

브룩스 이론
프로토타입에 대한 프로그램 관리에 대한 이론

  • 프로토타입 소프트웨어는 폐기처분하는 첫번째 시스템이다
  • 일정이 지연된다고 해서 새로운 인원을 투입하면 일정이 더욱 지연된다


3) 나선형 모형
(Spiral Model)

보헴 (Boehem)이 제안한 것으로 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형이다

  • 모든 단계를 반복하며 점진적으로 발전시켜 완벽한 최종 소프트웨어를 개발하는 방법이다

  • 대규모 시스템 소프트웨어 개발에 적합하다


나선형 모형의 특징

  • 위험 관리가 중심인 소프트웨어 생명주기 모형

  • 폭포수 모형과 프로토타입 모형의 장점을 살린 모형

  • 위험 요소 및 타당성을 분석하여 프로젝트의 추진 여부를 결정한다


나선형 모형의 개발 순서

1. 계획 및 정의 (Planning)
2. 위험 분석 (Risk Analysis)
3. 공학적 개발 (Engineering)
4. 고객 평가 (Customer Evaluation)


나선형 모형의 장점과 단점

장점

  • 가장 현실적인 모형으로 대규모 시스템에 적합하다

  • 누락되거나 추가된 요구사항 대응이 가능하다

  • 정밀하여 유지보수 과정이 필요 없다

단점

  • 위험성 평가에 크게 의존한다
    위험성을 사전에 발견하지 못할 경우 문제가 발생한다

  • 최신 기법이라 아직 널리 사용되지 않는다

profile
9년차 소프트웨어 개발자 (2024년 재 개편 예정입니다)

0개의 댓글