[소프트웨어 공학] 폭포수 모델이란?

한결·2023년 6월 19일
0

CS

목록 보기
16/34

폭포수 모델이란?

폭포수 모델(Waterfall Model)

소프트웨어 개발 프로세스 모델중 하나

  • 선형 순차 모델(linear(sequential) model)
    • 각 단계는 병행수행되지 않고 순차적으로 진행됨
  • 확장 형태로 V모델이 있음

장단점

장점

  • 단순한 선형 모델
    • 이해가 쉬움
  • 단계별로 정형화된 접근 방법
    • 체계적 문서화 가능
    • 단계별 관리가 용이함
  • 프로젝트 진행 상황 명확히 파악 가능
  • 유사한 분야의 SW 개발 경험이 많으면 좋은 결과 유도 가능

단점

  • 각 단계는 앞단계가 완료되어야 가능
    • 시스템 동작을 후반에서 비로소 알 수 있음
  • 이전 단계 수정이 어려움
    • 각 단계별로 결과가 완벽해야만 오류를 넘겨주지 않음
  • 지나친 문서화
  • 위험분석 결여
  • 일정 지연의 가능성이 큼

각 단계 설명

1. 타당성 조사

문제점을 파악하고 해결 방안을 제시하여 투입 대비 이익을 평가하는 단계

  • 짧은 기간 내에 분석과 미래 예측을 해야함
    -> 시간적 제약, 정신적 압박감 존재

  • 타당성 4가지

    • 조직 측면의 타당성 : 조직의 전략적 목표를 충족하는가
    • 경제적 타당성 : 비용 대비 수익 효과가 큰가
    • 기술적 타당성 : 정해진 시간 안에 현재의 기술 수준으로 개발할 수 있는가
    • 운영의 타당성 : 운영 및 사용 능력, 다른 시스템과의 연동 가능성 판단
  • 타당성 조사 보고서 : 문제 정의, 해결 방안, 기대 효과, 타당성, 비용, 인도 날짜 등

2. 요구 분석과 명세

무엇을 개발할 것인지 결정하는 단계

  • 프로젝트의 성패를 가르는 중요한 단계

  • 요구사항

    • 문제의 해결을 위해 시스템이 갖추어야 하는 조건과 능력
    • 요구사항 명세서, 계약서에 명시
  • 요구사항 명세서(SRS)

    • 발주자-개발자 간의 의사소통 수단
    • 정확성, 일관성, 완전성 필요
  • 요구사항 명세서의 구성

    • 시스템의 목적과 범위
    • 기능적, 비기능적 요구사항, 기타 제약 조건 등

3. 설계와 명세

요구사항을 기반으로 명확하고 조직화된 구조로 설계하는 단계

  • 설계 단계
    1. 아키텍쳐 설계
    2. 인터페이스 설계
    3. 프로그램 설계
  • 설계 방법
    • 전통적(구조적) 설계 방법
    • 객체지향 설계 방법

4. 코딩과 단위 테스트

설계 결과를 프로그램으로 작성하는 단계

  • 구현된 모듈이 명세서를 만족하는지 테스트하여 확인함
  • 고려 사항
    • 코딩 표준 준수(코딩 컨벤션)
    • 테스트 절차 준수
    • 코드 인스펙션(코드의 정적 분석)

5. 통합과 시스템 테스트

  • 모듈 ➡️ 서브 시스템 ➡️ 전체 시스템으로 통합
  • 통합 테스트: 모듈들을 통합하여 점증적으로 시스템 구축
  • 시스템 테스트: 최종적으로 통합된 전체 시스템이 요구사항을 만족하는지 확인
  • 알파 테스트
    • 소프트웨어 개발 현장에서 수행
    • 일반 소프트웨어: 테스트 팀이 알파 테스트 수행(내부적 인수 테스트) ➡️ 베타 버전 릴리즈
    • 주문형 소프트웨어: 제품 인수 동의가 이루어질때까지 수행(인수 테스트)
  • 베타 테스트
    • 고객의 실제 사용 환경에서 수행
    • 제품 출시 전 릴리즈된 베타 버전으로 가망 사용자로부터 미리 제품 평가

6. 인도와 유지보수

  • 인도: 실제 사용을 위해 고객에게 소프트웨어 배포
  • 유지보수: 소프트웨어 수정 및 보완 활동
  • 유지보수의 종류
    • 수정 유지보수(corrective maintenance): 오류 수정
    • 적응 유지보수(adaptive maintenance): 환경 변화(하드웨어, OS 등) 대응
    • 완전 유지보수(perfective maintenance): 기능 개선, 성능 향상
    • 예방 유지보수(preventive maintenance): 미래 유지보수성을 향상시키기 위한 활동

0개의 댓글