[Software Engineering] 소프트웨어 개발 생명주기(Life Cycle) 모델 종류와 장단점

isitcake_yes·2023년 4월 6일
0

소프트웨어공학

목록 보기
3/4
post-thumbnail

⚙️소프트웨어 라이프 사이클 모델

소프트웨어 개발 생명주기(Software Development Life Cycle)란?

  • 소프트웨어 생명주기 모델 프로세스 : 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
  • 소프트웨어 개발에 대한 단계별 접근 방식
  • 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
  • 개발 프로세스를 단계별로 단순화•추상화한 것

    모델 종류
    • 코딩과 수정(주먹구구식) 모델 | Code-and-fix model
    • 폭포수 모델 | Waterfall model
    • 프로토타입 모델 | Prototyping model
    • 점증적 모델 | Incremental model
    • 나선형 모델 | Spiral model
    • 통합 프로세스 모델 | Unified Software Development Process
    • V모델 | V model
    • 에자일 방법론 | Agile methods


주먹구구식 모델 Code-and-Fix model

: 공식적인 가이드라인이나 프로세스가 없는 개발 방식. 간단한 기능만을 정리하여 개발하는 형태.

  • 클라이언트가 만족할 때까지 수정. No디자인 No플랜 No명세서
장점 (+)단점 (-)
- 작은 프로젝트에서는 유용하다.- 대규모 프로젝트는 불가하다.
- 여러 개발자가 협업이 불가하다.
- 가독성이 떨어질 수 있다.
- 유지보수 어렵다.

폭포수 모델 Waterfall model

: 각 단계가 하향식(top-down)으로 진행되며, 병행하거나 거슬러 반복되지 않는 형태.

  • 문서화 강조. 명세서를 기준으로 다음 단계로 넘어감. 요구 사항을 잘 정리되어 있고, 리스크가 적은 소규모 프로젝트에 적합하다.
장점 (+)단점 (-)
- 절차가 간결하고 이해하기 쉽다.
- 단계별 진척사항에 대한 관리가 용이하다.
- 각 단계별 산출물을 체계적으로 문서화 할 수 있다.
- 소프트웨어 요구사항이 후반에 테스트 되기 때문에 중간에 가시적인 결과를 볼 수 없다.
- 고객이 모든 요구사항을 사전에 명시하기 어렵다.
- 원하는 결과가 나오지 않았을 때 보완하기 위한 시간과 비용이 많이 든다. (리스크가 크다.)

프로토타입 모델 Prototyping model

: 사용자의 요구사항에 따른 시제품을 만들어 최종 결과물을 예측해본 후, 개발을 진행하는 형태.

  • Throw-away prototype : 최종 프로토타입을 통해 결정된 최종 요구사항을 가지고 본격적으로 시스템을 만든다.
  • Evolutionary prototype : 요구사항을 반영하여 구현된 프로토타입을 버리지 않고 지속적으로 개선하여 최종 시스템으로 완성. (cf. 나선형 모델..)
장점 (+)단점 (-)
- 고객의 요구사항을 정확히 반영.
- 초기 마케팅에 도움을 줄 수 있다.
- 눈으로 확인함으로써 소프트웨어가 어떻게 작동할 것인지 예상할 수 있다.
- 사용자와 의사소통의 도구로 사용되어 구체적이고 원활히 대화할 수 있다.
-프로토타이핑 과정을 관리, 통제하기 어렵다.
- 개발범위가 명확하지 않아 언제 종료될 지 모른다.
광범위하게 고객과의 협업이 요구된다.
- 투입 인력과 비용 산정이 어렵고, 프로토타입에 따른 추가비용이 들 수 있다.

점증적 모델 Incremental model

: 사용자의 요구사항 일부분 혹은 시스템의 일부분을 개발하여 단계적으로 릴리즈하고, 점진적으로 개발 범위를 늘려가 시스템을 완성하는 방식.

장점 (+)단점 (-)
- 사용자들 초기 피드백 수용이 용이하다.
- 고객의 요구사항을 더 잘 충족시킨다.
- 서비스를 빠르게 시작할 수 있고, 인력 분배가 유용하다.
- 배포 후에도 계속 릴리즈되기 때문에 유지보수를 관리하기 어렵다.

나선형 모델 Sprial model

: 리스크 최소화 하기 위해 여러 번의 개발 과정을 거쳐 점진적으로 완벽한 시스템을 개발해 나가는 모델. 위험관리 및 위험 최소화가 목적이다. 폭포수 모형 + 프로토타입 모형 + 위험분석 추가

  • 진화적 프로토타입 모델 절차를 따르고, 위험분석 단계가 추가된 모델.
장점 (+)단점 (-)
- 폭포수 모델과 프로토타입 모델의 장점을 통합했다.
- 처음부터 위험에 대한 고려를 하며 개발이 진행되기 때문에 위험 요소가 줄어든다.
- 반복적 개발 방식에 의해 요구사항이 충분히 반영된다.
- 위험 분석에 대한 기술 전문 지식이 필요하다.
- 모델이 복잡하고 이해하기 어렵기 때문에 전문적인 관리가 필요하다.
- 반복횟수가 많아질수록 프로젝트 관리가 어렵다.

통합 프로세스 모델 USDP(Unified Software Development Process)

: 폭포수 모델의 문제점을 해결하기 위해 등장한 모델로, 도입, 구체화, 구축, 전이 단계의 과정 속에서 세부 개발 활동이 반복적으로 이루어지는 모델이다.

  • 대표적인 반복적, 점증적 프로세스이다 -> 위험요소를 초기에 완화할 수 있다.
  • 한 단계에서 특정 업무만 하지 않는다.
  • 아키텍처와 객체지향이 중요해짐에 따라 활용도가 증가하고 있다.

V 모델

: 폭포수 모델에 테스트(검증) 단계를 추가하여 각 개발단계를 검증하는데에 초점을 둔 모델이다.

  • 단위테스트 / 통합테스트 / 시스템테스트 / 인수테스트를 진행한다.
  • 개발 단계를 검증하는 데 초점을 두므로 오류를 줄일 수 있다.
  • V & V (Verification and Validation) 모델
    - Verification : 개발자관점 the product right ?
    - Validation : 사용자 관점 the right product ?

애자일 방법론 Agile Methods

: 일정한 주기를 반복하며 진행하고, 고객과의 소통에 초점을 맞춘 방법론.

  • Iterative 반복적 / Incremental 점진적 / Evolutionary 진화적
  • 짧은 주기 반복, 초기에 구체적이고 지속적인 피드백
  • 점진적인 계획 접근 방식
  • 변화하는 비즈니스 요구에 대응하여 구현 일정을 유연하게 조정
  • 고객 요구사항 변화에 빠르고 유연하게 대응

애자일 방법론 (일하는 방식)

  • eXtreme Programming (XP)
  • Scrum
  • Lean Software Development
  • DevOps

더욱 자세한 애자일 방법론에 대한 내용은 다음 스터디에서 계~~속~~…🏓📚
profile
주니어 개발자 주니어발록 주니어예티 주니어레이스

0개의 댓글