Appia의 IT세상

SDLC(Software Development Life Cycle),소프트웨어공학 - 폭포수 모델(Waterfall Model)/ 개발 방법론 본문

Development/ETC

SDLC(Software Development Life Cycle),소프트웨어공학 - 폭포수 모델(Waterfall Model)/ 개발 방법론

Appia 2020. 8. 5. 07:07
반응형

SDLC(Software Development Life Cycle) -

폭포수 모델(Waterfall Model)/개발 방법론

폭포수 모델(Waterfall Model)은 소프트웨어 개발에 사용된 최초의 SDLC(Software Development Life Cycle)입니다. 즉, 소프트웨어 공학에서 최초로 도입된 프로세스 적인 방법론이라고 생각하시면 됩니다. 조금 더 이해를 쉽게 하기 위해서 , 개발 전 과정을 각 단계로 구별하고 그 단계를 순차적으로 진행하는 개발 방식의 모델이라고 생각하시면 됩니다. 이전 단계에서는 별도의 방법론등이 존재하지 않고, 그냥 코드 작성 / Fix 형태로 진행이 되었습니다. 이런 폭포수 모델(Waterfall Model)이 적용되고 나서 처음으로 개발 방법론이 적용되었습니다. 

SDLC - 폭포수 모델(Waterfall Model)

위의 단계들은 앞서 보이는 그림과 같이 계단식으로 진행됩니다 모양이 아래로 계속 흘러가는 것으로 보인다고 해서 폭포수 모델이라고 합니다. 즉, 한 단계가 끝나고 그 다음 단계로 넘어가는 단계입니다. 만약 이전 현재 단계가 완료되지 않을 시에, 그 다음 단계가 진행되지 않습니다. 또한 각 단계를 중첩되지 않는다는 것이 특징입니다. 

 

위에서 명시된 각 단계에 대해서 간단하게 이야기를 해보도록 하겠습니다. 

 

요구사항 분석(Requirement analysis) - 시스템 개발에 모든 요구 사항을 이 단계에서 파악하고 협의 하여 요구사항 문서에 문서화합니다. 흔히 필수 요구사항과 협의과 가능할 요구사항등을 바탕으로 관련된 부분에 대해서 협의 후 문서화 작업을 진행합니다. 이 때, 하드웨어 뿐 아니라, 소프트웨어의 기능에 대해서도 명시하게 됩니다. 한번 요구사항 분석에서 설정된 요구사항들은 변경이 되지 않습니다.

(물론 CR - Chage Requirement등을 통해서 수정이 가능합니다만, 방법론상 불가능하다고들 이야기합니다.) 

 

시스템 설계(System Design) - 앞선 단계의 요구사항을 바탕으로 시스템을 설계합니다. 이 시스템 설계에서는 하드웨어 및 시스템 지원 사항등을 바탕으로 전체 시스템에 대한 아키텍처를 정의합니다. 여기에서는 흔히 이야기 하는 전체 큰 시스템에 대해서 설계를 합니다. 물론, 여기에 있는 부분들은 당연히 앞선 단계에서 명시된 요구사항을 바탕으로 진행됩니다. 

 

구현(Implementation) - 시스템 설계의 결과을 토대로, 각 부분에서 사용되는 모듈 또는 기능단위를 앞서 단계인 시스템 설계(System Design)에서 정의합니다. 이렇게 정의된 모듈 또는 기능 단위, 흔히 이야기 하는 Unit 단계로 프로그램을 개발합니다. 여기에서 개발된 모듈 또는 기능단위로 기능에 대한 테스트를 하게 되는 데, 이를 유닛 테스트(Unit Test)라고 합니다. 

 

통합 및 테스트(Integration and Testing) - 구현 단계에서 개발된 모든 모듈들에 대해서 전체 시스템에 통합합니다. 물론, 이 때, 통합하는 과정에서 상당히 많은 문제점들을 봉착할 수 있습니다. 또한, 전체 시스템을 통합하여 통합 테스트를 진행하여 문제점에 대해서 확인 및 검토할 수 있습니다. 대부분 이 단계에서 하는 테스틑 전체 통합된 환경에서의 System Test와 통합 기능테스트들로 명시할 수 있습니다. 

 

시스템 출시(Deployment of system) - 기능 및 비기능에 대한 테스트를 완료하고, 시장에 제품을 출시합니다. 

 

유지관리(Maintenance) - 출시 후, 발생하는 문제에 대해서 패치 또는 소프트웨어 업데이트를 하게 됩니다. 유지보스는 고객 환경에서 겪는 다양한 문제등을 해결하기 위해 수행됩니다. 

 

따라서 위와 같은 폭포수 모델이 적용될 있는 프로젝트는 다음과 같은 특징이 있어야 합니다.

  • 요구 사항이 명확하고, 변동이 없어야 합니다.
  • 관련 기술에 대해 이해 되어야 하고, 변동성이 없어야 합니다.
  • 제품에 대한 전문지식을 갖춘 리소스(인력)등이 구비되어야 합니다.
  • 프로젝트 기간이 짧아야 합니다.

폭포수 모델(Waterfall Model)의 장점

폭포수 모델(Waterfall Model)은 다음과 같은 장점이 있습니다. 처음 개발 방법론이 적용되었기 때문에 그 당시에는 매우 획기적인 방법이었을 것이라고 생각합니다. 

  • 단계에 대한 결과물과 검토 과정등이 명확함
  • 단계적으로 한번에 하나씩 처리됨
  • 모델에 대한 관리가 용이
  • 명확하게 정의된 개발 단계

폭포수 모델(Waterfall Model)의 단점

폭포수 모델(Waterfall Model)는 다음과 같은 단점이 있습니다. 이 단점들은 대부분 명확한 개발 단계의 구별과 수정이 어려운 요구사항 확립으로 인한 발생하는 문제들이 있습니다. 

  • 신기술 개발등에 적용의 단점
  • 장기간 진행 중인 프로젝트에 좋지 않음
  • 복잡하고 객체지향적인 프로젝트에 적용 난해
  • 단계별로 진행 상황을 측정하기 어려움
  • 변화하는 요구사항 수용에 어려움

이번 포스팅에서는 SDLC(Software Development Life Cycle) - 폭포수 모델(Waterfall Model)라는 주제로 포스팅을 진행해봤습니다. 관련해서 가장 널리 사용되었던 폭포수 모델(Waterfall Model)에 대해서 간단히 살펴봤습니다. 

반응형
Comments