안녕하세요!
문모닝입니다!
변화하는 과학기술과
끊임없이 변화하는 시장 상황에 부합하는
IT의 트랜드를 하나하나 살펴보는
문모닝의 IT!
오늘의 문모닝과 함께 할
IT의 콘텐츠는
제가 정보처리기사를 공부하면서
애먹기도 했지만 재밌게 공부했던 내용인
소프트웨어 공학 중
'소프트웨어 개발 프로세스 모델'입니다
‘소프트웨어 개발 프로세스 모델’이라,,
제목만 들어도 지루하고 복잡할 것 같지 않나요?
하지만, 막상 이해해보면 쉬운 구조로 되어있습니다!
구조는 쉬우나, 여기서 적용되는 코딩이 어렵기에 다루기 힘든 것이죠!!
간단하게 코딩 전에 여기 있는 프로세스 모델에 대하여 한 번 알아보도록 하죠!
1. 주먹구구식 모델
(출처:http://terms.naver.com/entry.nhndocId=3532869&cid=58528&categoryId=58528)
주먹구구식 모델은 정말 말그대로 단순합니다.
가장 먼저 코딩작업을 통해 제품을 만듭니다.
만든 제품을 사용해 보았을 때,
문제가 발생하면 코딩작업을 통해 수정하고,
문제가 없을 시에는 그냥 사용하는 매우 단순한 구조입니다.
이 구조는 순차적으로 꼼꼼히 작업한 것이 아니기 때문에,
상황에 따른 문제점이 발생 시 대처하기 어려워
지속적인 관리가 힘들다는단점이 있습니다.
2. 선형순차적모델(Waterfall Model; 폭포수 모델)
(출처:http://terms.naver.com/entry.nhn?docId=3532870&cid=58528&categoryId=58528&expCategoryId=58528)
선형 순차적 모델의 대표로 폭포수 모델이 있습니다.
위의 그림처럼 이 방식은 한 단계, 한 단계를 순차적으로 마무리하며
최종적으로 한 제품을 완성시키는 모델입니다.
한 번 내려온 계단을 다시 올라가는 일이 없도록
한 과정을 완벽하게 마무리 한 후에
다음 작업을 진행합니다.
각 과정을 마무리 지을 때마다 사용자에게 검증을 받음으로써
추후에 문제 발생 시,
책임소재를 쉽게 나눌 수 있다는 장점이 있습니다.
3. V모델
(출처:http://terms.naver.com/entry.nhn?docId=3532873&cid=58528&categoryId=58528&expCategoryId=58528)
이 모델은 폭포수모델의 변형된 버전입니다.
폭포수 모델은 각 단계가 마무리 된 후,
사용자에게 확인을 받고 매듭을 짓는다면,
V모델은 각 단계마다 테스트를 추가하여
추후 프로그램 사용시에 발생할 수 있는 오류를
제작과정에서 찾아내어 없애자는 목표를 가지고 이루어지는 모델입니다.
4. 진화적 프로세스 모델
위에서 보았던 선형 순차적 모델의 대표적인 모델이
'폭포수 모델'이었다면,
진화적 프로세스 모델의 대표적인 모델은 '프로토 타입'입니다.
(출처:http://terms.naver.com/entry.nhn?docId=3532876&cid=58528&categoryId=58528&expCategoryId=58528)
단순한 프로그래밍 작업이라면 상관 없지만,
몇 년을 내다보거나,
아주 큰 투자비용을 발생시키는 대규모 프로그래밍의 경우에는
프로토타입 모델이 필요합니다.
개발자와 사용자 간에 아무리 많은 의사전달이 있다 하더라도
각자의 머리속에서 그려낸 예상 모델은 다를 수 있습니다.
드라마 제작이 들어가기 전에 사전 시나리오를 보는 것과 마찬가지로,
프로그램도 개발 전에 예상 모델을 만든 후에 사용자에게 제시하여
사용자의 요구사항에 따라 프로토타입 모델을 조정한 후에,
본 모델의 프로그래밍이 설계되고 제작되기 시작하는 방식입니다.
5. 나선형 모델(Spiral Model)
(출처:http://terms.naver.com/entry.nhn?docId=3532879&cid=58528&categoryId=58528&expCategoryId=58528)
나선형 모델은 폭포수 모델과 진화적 프로세스 모델의 장점이
합쳐진 것이라 볼 수 있습니다.
진화적 프로세스에서는 소비자의 요구에 따른 프로토타입 모델을 바로 만들었다면,
나선형 모델에서는 위험요소를 분석한 후에 제작에 들어갑니다.
이 과정을 통해 제작된 1차 프로토타입 모델은 사용자에게 검증을 받은 후,
추가 요구사항 및 수정 내용을 참고하여 2차 프로토타입 모델로 완성됩니다.
만들어진 프로토타입 모델은
다시 사용자에게 검증을 받고 수정하는 과정이
수차례 반복되면서 최종적으로 프로토타입 모델을 벗어나 제품으로 완성됩니다.
6. 단계적 개발 모델
(출처 : http://terms.naver.com/entry.nhn?docId=3532882&cid=58528&categoryId=58528&expCategoryId=58528)
단계적 개발 모델은 갤럭시 휴대폰에 비교할 수 있습니다.
갤럭시S를 개발하여 소비자가 사용하는 동안에
개발자는 갤럭시S2를 만들고,
갤럭시 S2를 소비자가 사용하는 동안에
개발자는 갤럭시 S3를 만드는 것처럼
점차적으로 사용자는 모델을 사용하면서,
동시에 개발자의 모델의 신버전을 개발해나가는 방식입니다.
7. 통합프로세스 모델
(출처:http://terms.naver.com/entry.nhn?docId=3532885&cid=58528&categoryId=58528)
통합 프로세스 모델의 개발 과정은
도입, 구체화, 구축, 전이로
크게 4단계로 나눌 수 있습니다다.
크게 나뉜 단계들은 다시 수차례 반복 실행을 하는 작은 단위로 나누어집니다.
도입단계에서는
비즈니스 모델링 및 요구사항 정의가 많이 이루어집니다.
아이디어, 프로젝트 실험 가능성, 프로젝트 계획 및 전망, 위험요소 등
직접 소프트웨어 개발을 실행 하기 전
준비단계라고 볼 수 있습니다.
구체화 단계는 제작 준비를 줄이고,
어떻게 제작할 것인지 직접 분석, 설계하는 작업을 주로 실행합니다.
구축 단계에서는 실제 만들어진 프로토타입을 기반으로 구현 작업을 실행합니다.
또한 테스트 작업도 점차 늘려가는 단계입니다.
전이 단계에서는 마무리 작업 등을 시행한다고 볼 수 있습니다.
개발된 모듈에 대해 테스트를 주로 실행하고,
배포 가능한 단위로 묶어서
사용자에게 인수해주는 과정 등을 시행합니다.
지금까지 위에서 설명했던 것들은 각 단계에서 가장 많이 시행되는 것들입니다.
모든 단계에서 대부분의 모든 작업이
그 양을 달리하며 계속 시행되고 있다는 것이
통합 프로세스 모델의 특징입니다.
8. 애자일 프로세스
가장 간단하고 꼭 필수적인 것들만을 집어 넣어
신속하게 1차적으로 소프트웨어를 만듭니다.
이렇게 만들어진 소프트웨어를 사용자가 사용하고 있는 동안에,
추가적인 사용자의 요구사항과 따로 채워져야 할 부분을 빠르게 만들어
2차적으로 제공합니다.
이렇게 계속 사용자는 사용하면서 추가적으로 요구사항을 내놓고,
개발자는 신속하게 소프트웨어를 계속 업그레이드 시킵니다.
이 과정은 짧으면 짧을수록 사용자에게 편리합니다.
이러한 소프트웨어의 개발과정은 사용자와 개발자가
지속적으로 자주 연락하고,
실제 사용하면서 가장 필요한 부분들을 위주로 개발시켜 나가기에
효율성도 높은 개발 방법입니다.
오늘은 여러가지 소프트웨어 개발 프로세스 모델에 대하여 알아보았습니다!
비슷한 듯 하지만,
다양한 모델들이 상황에 따라 다르게 사용되어
참 다양한 소프트웨어들이 안정적으로 구축되는 것 같은데요!!
과연 다음엔 어떤 모델이 등장할지 너무 기대됩니다!