소프트웨어 개발 생명 주기
소프트웨어 개발 생명 주기 (Software Development Life Cycle, SDLC)
소프트웨어 생성에서 소멸까지의 과정을 단계별로 나눈 것
각 단계별 주요 활동과 산출물을 통해 프로젝트의 진행 방향을 명확하게 파악하고, 관리를 용이하게 함
요구분석 -> 설계 -> 구현 -> 테스팅 -> 유지보수
폭포수 모델(Waterfall Model)
가장 오래되고 널리 사용된 프로세스 모델
계획 단계에서 유지보수까지 각 프로세스를 위에서부터 순서대로 수행
각 프로세스 사이에 결과물이 있어 명확히 구분되며 이전 작업으로 돌아가는 재작업 X
단계(결과물)
계획(계획서) -> 요구분석(요구분석서) -> 설계(설계서) -> 구현(원시코드) -> 테스트(실행파일, 테스트 보고서) -> 운영, 유지보수
장점
단순하여 이해하기 쉬움
각 단계가 명확하여 프로세스의 진행 상황 관리 쉬움
명확하고 일반적이기 때문에 오랫동안 소프트웨어 개발에 적용
개발자가 비슷한 소프트웨어를 설계하고 개발하여 응용 문제를 이미 알고 있거나 요구 사항이 명확한 대규모 시스템을 장기간 개발할 때 적합
단점
이전 단계의 문제가 발견되지 않고 넘어가는 경우
전체 요구 사항이 확정되지 않고 문서화되지 않는다면 설계 작업 진행 불가
테스트는 프로젝트 후반에 진행되기 때문에 요구 분석이나 설계의 결함을 발견하지 못하고 지나친 경우 프로젝트 끝날 무렵 발견되어 재작업에 큰 비용 소요
프로토타이핑 모델(Prototyping Model)
요구 사항에 대한 피드백을 받기 위해 시스템을 실험적으로 만들어 사용자에게 평가받는 방법
장점
폭포수 모델의 요구 분석 과정에 프로토타입을 만들고 이를 테스팅하여 기능과 성능 확인
문제점을 빨리 파악하여 요구 사항에 반영 가능
요구 사항을 더 정확히 반영 가능
단점
프로토타입 개발에 많은 비용 소요
고객이 프로토타입을 완성에 가까운 제품으로 오인하여 불필요하고 과도한 요구를 할 수 도 있음
나선형 모델
다음 네 가지 단계를 반복 순환하며 시스템을 확대시켜 나가는 방법
목표, 방법, 제약 조건 결정
위험 요소 분석 및 해결
개발과 평가
다음 단계의 기획
장점
위험 분석 가능
소프트웨어 품질 향상
단점
각 싸이클을 잘 관리하는 것이 중요
초기에 위험 분석을 잘못하여 위험 요소가 발견되지 못하고 계속 진행된다면 많은 비용을 투입하고 실패로 끝날 수도 있음