소프트웨어 개발 생명 주기
- 기획부터 유지보수까지의 전 과정
- 체계적인 개발을 위한 표준적인 절차
- 즉, 소프트웨어를 어떻게 만들고, 어떻게 관리할 것인가를 정리한 틀
진행 과정
장점과 한계
장점
- 유지보수나 인수인계 관점에서 특히 강점을 가지는 방식
- 일정과 예산 관리가 중요한 프로젝트에 적합함
- 요구사항이 명확한 프로젝트에 적합하여 공공기관 시스템이나 규격이 정해진 프로그램 개발에 잘 어울림
계획과 문서 중심의 안정적인 개발 방식이며, 구조화된 환경에서는 여전히 의미 있는 모델
한계
- 개발 초기에 모든 요구사항을 정의하고 그 내용을 기준으로 전체 개발을 진행하는 구조이기 때문에 요구사항 변경에 매우 취약함
- 전 단계에서 잘못 설계한 경우 구현이 끝날 경우에 코드 뿐만 아니라 설계 문서까지도 모두 수정해야 함
하나의 실수가 전체의 공정을 다시 하게 만듦- 테스트가 후반에 집중되어 오류 발견이 늦음
요구사항이 자주 바뀌며, 빠른 출시가 중요하고, 사용자 반응을 보고 개선하는 방식의 현대 개발과 잘 맞지 않는다
실패를 막기 위해 프로세스를 더 많이 추가할수록, 오히려 프로젝트가 실패할 가능성이 커짐
이 현상을 시작으로 여러 가지 문제가 연쇄적으로 발생하게 됨
Illusion of Predictability
복잡한 소프트웨어 개발을
문서와 계획만으로 정확히 예측할 수 있다고 믿는 착각Weight of Documentation
소프트웨어 개발에서 문서가 점점 많아지고 무거워지면서 개발 자체보다 문서 관리가 더 큰 부담이 되는 현상Bureaucracy Trap
조직이 프로젝트의 성공보다 절차를 지키는 것 자체에 목적화하게 되는 현상Innovation Paradox
존 비즈니스 모델을 위협할 수 있는 완전히 새로운 아이디어나 혁신적인 시도는 오히려 무시당하거나 제거되기 쉬운 현상
프로세스보다 사람이 더 중요하다