[Software Engineering]-개발자라면 알아야 할 소프트웨어 개발 방법론 (1) - 폭포수 방법론

이솔·2021년 10월 10일
0

SoftwareEngineering

목록 보기
1/1
post-thumbnail

1. 소프트웨어 개발 방법론

소프트웨어 개발 방법론 이란, 소프트웨어를 생산하는 데에 필요한 프로그래밍 개발 과정들을 정리하고 표준화하여 프로그래머들이 프로그래밍 개발과정에서 각개인이 개발과정에서의 일관성을 유지하고 프로그래머들간의 효과적인 협업이 이루어질수 있도록 돕기 위한 방법론을 일컫는다.
간략하게 말하자면, 협업을 할 때의 개발 과정을 정의한 것이라고 보면된다.

2. waterfall & agile

: 소프트웨어 개발 방법론은 여러가지가 있지만, 그 중에서 대표적인 구조적 방법론인 폭포수 방법론과 대표적인 컴포넌트기반 방법론인 애자일 방법론에 대해 알아보자.

1) 폭포수 방법론(waterfall)


: 폭포수 방법론은 말 그대로 폭포가 위에서 밑으로 내려오는 것 처럼 단계별 순차를 따른다.

소프트웨어 요구사항 기술 -> 소프트웨어 설계 -> 소프트웨어 구현 -> 시험 및 디버깅 -> 설치 -> 소프트웨어유지보수

특징

  • 미리 정의된 요구사항
    : 미리 정의된 요구사항을 수집하고 전체적으로 분석 및 디자인을 한 뒤 한번에 완성

  • 계획 중심
    : 일에 필요한 모든 사항들을 완벽하게 측정 및 계획 수립 후, 각 단계를 단순히 수립
    -> 여기서 특징은 한 단계가 완전히 끝나지 않으면 다음 단계로 넘어가지 않는다는 것이다.
    (이는 순수한 폭포수 방법론의 특징이지만, 실제 기업에서는 변형된 모델들을 사용한다고 한다.)

  • 수평적인 단계별로 개발
    : 소프트웨어 개발을 고층 빌딩에 짓는 방식과 같이 생각하여 기초에서 시작하여 단계를 거쳐 튼튼한 기반의 애플리케이션을 만듦

  • 마지막에 통합
    : 최종 결과물이 나오기 전에 통합을 하면 시간 낭비라고 여겨 계획대로 모든 것이 완벽하다고 가정하고 프로젝트 수행

  • 마지막 단계 테스트
    : 마지막 전까지 통합을 하지 않기때문에 이전까지 테스트를 할 수 없음

장점 :

  • 명확한 문서화로 인한 전체 과정의 이해가 쉬움
  • 구조화된 방식
  • 고전적인 방식인 만큼 벤치마킹이 쉬움
  • 프로젝트 관리 용이

단점 :

  • 실제 개발에서는 요구사항이 변경될 가능성이 큼
  • 작동하는 소프트웨어를 개발 후반부에 확인할 수 있어, 수정이 어려움 (후에 수정했을 시, 비용이 더 크게 나올 수 있음)
  • 고객 요구사항의 즉각적인 피드백이 어려움
  • 전 단계가 완전히 종료되어야 다음 단계 수행 가능

출처 : 애자일 방법론 vs. 폭포수(Waterfall) 방법론, 10가지 주요 차이점

3. 사용 시기

폭포수 :

구조적이고 체계적이지만 실제 프로젝트에서는 이상적이라는 비판도 있다. 계획이 잘 짜여졌다면 초기단계에 결함을 보완하여 비용을 줄일 수 있지만, 계획에 문제가 있다면 마지막 단계에 통합을 하는 만큼 비용이 많이 들 수 있다. 그만큼 계획이 중요한 방법론이다. 실제의 대기업에서는 많이 사용하고 있는 방식이다.

실제로 프로젝트를 해보다보면 요구사항을 정확히 설계했다고 하더라도 개발 과정에서 개발자의 역량과 시간 등의 여러 요소로 요구사항이 변경되는 경우가 생긴다. 이러한 과정에서 폭포수 유형은 적절하지 못할 수 있다.
이와 같은 단점 때문에, "변화에 대응하는 방식"을 중점으로 한 방법론이 등장한다... 이는 다음 시간에 알아보자.

- 추가 참고하면 좋을 링크

profile
코딩왕 지망생

0개의 댓글