소프트웨어 개발 방법론
소프트웨어의 개발 과정을 정의한것
- 프로그래머들이 협업을 하고 프로그래밍을 만듦에 있어 일관성을 유지하고 효과적으로 개발하기 위한 방법론
- 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법이다.
- 소프트웨어를 하나의 생명체로 간주하고 소프트웨어 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론이다
폭포수 방법론
Waterfall Model로 모든 과정을 순차적으로 하나씩 진행하는 방법론

- 소프트웨어의 개발 과정을 요구분석 > 설계 > 구현 > 시험 > 통합 > 운영 및 유지보수의 단계로 구분하여 순차적으로 진행하는 프로세스 모델
특징
- 통상적으로 크고 복잡하며 장기간 지속되는 프로젝트에 사용하는 것이 적합함
- 미리 정의된 요구사항을 수집하고 전체적으로 분석 및 디자인을 한 뒤 한번에 완성
- 일에 필요한 모든 사항들을 완벽하게 측정 및 계획 수립 후,각 단계를 순차적으로 진행
-> 단, 한 단계가 완전히 끝나지 않으면 다음단계로 넘어가지 않는다
장점
- 명확한 문서화로 인해 전체 과정을 이해하기 쉽다
- 구조화된 방식
- 오래된 방식이라 벤치마킹이 쉬움
단점
- 개발 중간 요구사항 및 수정 변경이 어려움
- 즉각적인 유저 피드백이 어려움
- 전 단계가 종료되어야 다음단계수행가능
애자일 방법론
짧은 단위의 소프트웨어 개발 사이클을 반복하면서 고객의 요구 변화에 유연하고 신속하게 대응하는 방법론

특징
- 프로세스를 간소화함으로써 변화에 신속대응 할 수 있다.
- 결과물에 대해 빠른 피드백이 필요한 팀에게 용이하다.
장점
- 개발과정이 빠르고 유연하다
- 짧고 반복적인 스프린트로 구성
- 소규모 팀들이 여러과제를 각각 할당받아 처리 가능하다
- 개발과정중에 신속하게 제품 변경이 가능하다
단점
- 서비스 수정에 빠른 이해도와 빠른 작업력이 필요하다
- 빈번한 수정사항으로 번거로움이 발생할 수 있다.