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