'Waterfall Model'에 해당되는 글 1건

  1. 2010.04.05 소프트웨어 공학과 필요성 그리고 개발 프로세스 모델 1
2010. 4. 5. 23:47

소프트웨어 공학과 필요성 그리고 개발 프로세스 모델

오늘은 소프트웨어 개발의 프로세스 모델에 대하여 알아 봅시다.

이미 대학교에서 소프트웨어 공학을 전공하신 많은 독자들은 프로세스 개발 모델에 대해 잘 이해하고

계실 겁니다. 저도 오랜만에 다시 한번 관련 자료를 찾아 보면서 나름대로 학습하고 정리를 해 보았습니다.

간단하게 소프트웨어 공학의 개념과 필요성 그리고 개발 프로세스 모델, 이 두가지 이슈에 대하여 알아

보겠습니다.


I. 소프트웨어 공학(Software Engineering)이란 무엇이고 왜 필요한가?

  소프트웨어 공학소프트웨어를 설계, 개발 그리고 유지보수하기 위한 체계적인 이론과 기술을 다루는

학문
입니다. 소프트웨어를 개발하고 유지하는 전체적인 라이프 사이클을 관리하기 위한 이론의 집합체라고

볼 수 있습니다. 소프트웨어 공학이 정립되지 않았던 과거에는 하드웨어가 단순하고 저사양이었기 때문에

탐재된 소프트웨어의 크기 역시 작았고 설사 하드웨어의 수정이 있다고 하더라도 소프트웨어는 큰 수정없이

작성이 가능하였습니다. 하지만 어느 순간부터 하드웨어의 성능이 급격하게 성장함으로써 이에 따라 소프트

웨어 역시 복잡해지고 규모가 커졌으며, 단가는 올라가기 시작하였습니다. 개발된 소프트웨어를 유지보수

하는 과정중에 많은 문제가 발생하는 즉, 재사용이 어려워지고 개발이 힘들어지는 문제점을 야기하였습니다.

이때, 소프트웨어 위기론(Software Crisis)이 대두되기 시작하였지요(1968 NATO SE Conference).

이러한 위기를 벗어나고자 소프트웨어 개발 프로세스에 대한 연구가 지속되었고 오늘날의 소프트웨어 공학

이 집대성되었습니다.


II. 개발 프로세스 모델

  프로세스 모델은 하나의 소프트웨어 개발 프로세스를 정립하기 위한 일련 과정의 방법론입니다. 개발 프로

세스는 일반적으로 요구 사항의 분석, 설계, 구현, 테스트, 유지보수의 단계를 포함하고 있습니다.


1) 폭포수 모델(Waterfall Model)

wikipedia(http://en.wikipedia.org/wiki/Waterfall_model)에서 다음과 같이 정의되어 있습니다.
------------------------------------------------------------------------------------------
"The waterfall model is a sequential software development process, in which progress is seen

as flowing steadily downwards (like a waterfall) through the phases of Conception, Initiation,

Analysis, Design (validation), Construction, Testing and Maintenance."
------------------------------------------------------------------------------------------

위의 정의와 같이, 폭포수 모델은 순차적인 소프트웨어 개발 프로세스를 의미합니다. 이 모델의 진행 흐름이

폭포수와 같이 아래로 내려가는 형상과 비슷하여 명명된 모델입니다. 요구사항 분석, 설계, 구현, 테스트, 유

지보수의 단계를 순차적으로 하나씩 진행(완료될 때까지)합니다. 현재까지도 가장 널리 애용되고 있는 방법

론입니다.

이 모델의 장점은 단계별로 체계적인 정리와 문서화가 용이하다는 것이고 단점은 하나의 단계가 완전히 끝날
 
때까지 대기해야하고 요구 사항 재수정이 발생하면, 프로세스는 다시 이전까지 무효화되는 문제점을 가지고

있습니다.


2) 원형 모델(Prototyping Model)

폭포수 모델에서 고객의 잦은 요구 사항에 대한 유연성이 떨어지는 단점을 보완하기 위해 고안된 모델입니

다. 각각의 단계에서 고객의 요구 사항을 고려하여 신속한 설계/구현을 하고 고객에게 피드백에 따라 반영

하고 처리하도록 합니다. 이 과정을 각각의 단계 모두 동일하게 반복하여 수행하는 것입니다. 장점이라면

예상치 못했던 기능과 불완전한 요구 사항을 발견할 수 있으며, 완성될 제품의 질과 형태를 미리 가늠할 수

있습니다. 단점은 고객의 평가로 기존 요구사항에 비해 크게 변질될 우려가 있고 규모가 비대해 지거나 개발

비용이 초기보다 증가할 수가 있다는 점입니다.


3) 나선형 모델(Spiral Model)

폭포수 모델과 원형 모델의 장점을 기반으로 하고 위험 분석을 포함하는 모델이라고 할 수 있습니다. 고객과

발생할 수 있는 오해를 규명하고 프로젝트에서 발생할 수 있는 위험을 관리 및 최소화하는 것이 목적이고

일반적으로 대규모 시스템에 적합한 개발 방법론이 되겠습니다. 장점은 고객 역시 각 단계의 위험을 파악하

기 쉽고 이에 따른 피드백을 줄 수가 있으며, 개발에 발생할 수 있는 문제점을 사전에 캐치할 수 있습니다.

단점은 폭포수 모델과 원형 모델에 비해 복잡하고 단계의 진행 절차가 까다로워지며, 보다 많은 개발 비용을

요구합니다.


Written by Simhyeon, Choe