소프트웨어 개발 생명주기(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
: 공식적인 가이드라인이나 프로세스가 없는 개발 방식. 간단한 기능만을 정리하여 개발하는 형태.
장점 (+) | 단점 (-) |
---|---|
- 작은 프로젝트에서는 유용하다. | - 대규모 프로젝트는 불가하다. - 여러 개발자가 협업이 불가하다. - 가독성이 떨어질 수 있다. - 유지보수 어렵다. |
: 각 단계가 하향식(top-down)으로 진행되며, 병행하거나 거슬러 반복되지 않는 형태.
장점 (+) | 단점 (-) |
---|---|
- 절차가 간결하고 이해하기 쉽다. - 단계별 진척사항에 대한 관리가 용이하다. - 각 단계별 산출물을 체계적으로 문서화 할 수 있다. | - 소프트웨어 요구사항이 후반에 테스트 되기 때문에 중간에 가시적인 결과를 볼 수 없다. - 고객이 모든 요구사항을 사전에 명시하기 어렵다. - 원하는 결과가 나오지 않았을 때 보완하기 위한 시간과 비용이 많이 든다. (리스크가 크다.) |
: 사용자의 요구사항에 따른 시제품을 만들어 최종 결과물을 예측해본 후, 개발을 진행하는 형태.
장점 (+) | 단점 (-) |
---|---|
- 고객의 요구사항을 정확히 반영. - 초기 마케팅에 도움을 줄 수 있다. - 눈으로 확인함으로써 소프트웨어가 어떻게 작동할 것인지 예상할 수 있다. - 사용자와 의사소통의 도구로 사용되어 구체적이고 원활히 대화할 수 있다. | -프로토타이핑 과정을 관리, 통제하기 어렵다. - 개발범위가 명확하지 않아 언제 종료될 지 모른다. 광범위하게 고객과의 협업이 요구된다. - 투입 인력과 비용 산정이 어렵고, 프로토타입에 따른 추가비용이 들 수 있다. |
: 사용자의 요구사항 일부분 혹은 시스템의 일부분을 개발하여 단계적으로 릴리즈하고, 점진적으로 개발 범위를 늘려가 시스템을 완성하는 방식.
장점 (+) | 단점 (-) |
---|---|
- 사용자들 초기 피드백 수용이 용이하다. - 고객의 요구사항을 더 잘 충족시킨다. - 서비스를 빠르게 시작할 수 있고, 인력 분배가 유용하다. | - 배포 후에도 계속 릴리즈되기 때문에 유지보수를 관리하기 어렵다. |
: 리스크 최소화 하기 위해 여러 번의 개발 과정을 거쳐 점진적으로 완벽한 시스템을 개발해 나가는 모델. 위험관리 및 위험 최소화가 목적이다. 폭포수 모형 + 프로토타입 모형 + 위험분석 추가
장점 (+) | 단점 (-) |
---|---|
- 폭포수 모델과 프로토타입 모델의 장점을 통합했다. - 처음부터 위험에 대한 고려를 하며 개발이 진행되기 때문에 위험 요소가 줄어든다. - 반복적 개발 방식에 의해 요구사항이 충분히 반영된다. | - 위험 분석에 대한 기술 전문 지식이 필요하다. - 모델이 복잡하고 이해하기 어렵기 때문에 전문적인 관리가 필요하다. - 반복횟수가 많아질수록 프로젝트 관리가 어렵다. |
: 폭포수 모델의 문제점을 해결하기 위해 등장한 모델로, 도입, 구체화, 구축, 전이 단계의 과정 속에서 세부 개발 활동이 반복적으로 이루어지는 모델이다.
: 폭포수 모델에 테스트(검증) 단계를 추가하여 각 개발단계를 검증하는데에 초점을 둔 모델이다.
: 일정한 주기를 반복하며 진행하고, 고객과의 소통에 초점을 맞춘 방법론.