소프트웨어 개발 생명 주기


소프트웨어 개발 생명 주기 (Software Development Life Cycle, SDLC)

  • 소프트웨어 생성에서 소멸까지의 과정을 단계별로 나눈 것

  • 각 단계별 주요 활동과 산출물을 통해 프로젝트의 진행 방향을 명확하게 파악하고, 관리를 용이하게 함

  • 요구분석 -> 설계 -> 구현 -> 테스팅 -> 유지보수


폭포수 모델(Waterfall Model)

  • 가장 오래되고 널리 사용된 프로세스 모델

  • 계획 단계에서 유지보수까지 각 프로세스를 위에서부터 순서대로 수행

  • 각 프로세스 사이에 결과물이 있어 명확히 구분되며 이전 작업으로 돌아가는 재작업 X

  • 단계(결과물)

    계획(계획서) -> 요구분석(요구분석서) -> 설계(설계서) -> 구현(원시코드) -> 테스트(실행파일, 테스트 보고서) -> 운영, 유지보수

  • 장점

    • 단순하여 이해하기 쉬움

    • 각 단계가 명확하여 프로세스의 진행 상황 관리 쉬움

    • 명확하고 일반적이기 때문에 오랫동안 소프트웨어 개발에 적용

    • 개발자가 비슷한 소프트웨어를 설계하고 개발하여 응용 문제를 이미 알고 있거나 요구 사항이 명확한 대규모 시스템을 장기간 개발할 때 적합

  • 단점

    • 이전 단계의 문제가 발견되지 않고 넘어가는 경우

    • 전체 요구 사항이 확정되지 않고 문서화되지 않는다면 설계 작업 진행 불가

    • 테스트는 프로젝트 후반에 진행되기 때문에 요구 분석이나 설계의 결함을 발견하지 못하고 지나친 경우 프로젝트 끝날 무렵 발견되어 재작업에 큰 비용 소요

프로토타이핑 모델(Prototyping Model)

  • 요구 사항에 대한 피드백을 받기 위해 시스템을 실험적으로 만들어 사용자에게 평가받는 방법

  • 장점

    • 폭포수 모델의 요구 분석 과정에 프로토타입을 만들고 이를 테스팅하여 기능과 성능 확인

    • 문제점을 빨리 파악하여 요구 사항에 반영 가능

    • 요구 사항을 더 정확히 반영 가능

  • 단점

    • 프로토타입 개발에 많은 비용 소요

    • 고객이 프로토타입을 완성에 가까운 제품으로 오인하여 불필요하고 과도한 요구를 할 수 도 있음

나선형 모델

  • 다음 네 가지 단계를 반복 순환하며 시스템을 확대시켜 나가는 방법

    1. 목표, 방법, 제약 조건 결정

    2. 위험 요소 분석 및 해결

    3. 개발과 평가

    4. 다음 단계의 기획

  • 장점

    • 위험 분석 가능

    • 소프트웨어 품질 향상

  • 단점

    • 각 싸이클을 잘 관리하는 것이 중요

    • 초기에 위험 분석을 잘못하여 위험 요소가 발견되지 못하고 계속 진행된다면 많은 비용을 투입하고 실패로 끝날 수도 있음