2011.04.21 15:42
폭포수 모델(Waterfall Model)

File:Waterfall model.svg

특징 : 단계별 작업이 분리되어 각 단계가 다름 시작 전에 끝나야 하며, 각 단계 사이에 중복이나 상호작용이 없음
         기본 적으로 각 단계는 병행 수행되지 않고 거슬러 반복되지 않으며 한 방향으로 진행됨.
         폭포수의 흐름 처럼 전 단계로 돌아가는 경우가 없다.(피드백 힘듬)

장점 : 선형 모델로 프로세스가 단순하고 이해가 쉬워 초보자도 쉽게 적용가능
         단계별로 정형화된 접근 방법과 체계적 문서화가 가능
         중간 산출물이 명확, 관리하기 좋음
         프로젝트 진행 상황을 명확히 알 수 있음
         코드 생성 전 충분한 연구와 분석 단계를 가질 수 있음

단점 : 요구사항을 완벽하게 작성해야 함(처음 단계를 지나치게 강조하면 코딩, 테스트가 지연)
         각 단계의 전환에 많은 노력
         최종단계가 되어야 결과가 나온다.
         프로토타입과 재사용의 기회가 줄어듦
         변경을 수용하기 어려움
         대형 프로젝트에 적용하기 어려움
         문서화를 위한 노력이 지나침

적합한 경우 : 단순하거나 응용 분야를 잘 알고 있는 경우
                   한 번의 과정, 비전문가가 사용할 시스템 개발에 적합

소결 : 현재는 잘 쓰이지 않는 구시대의 산물.


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

특징 : 개발 시작단계에서 Visible한 Protype를 만든다.

종류 : evolutionary prototyping : 잘 알고 있는 부분 부터 시작하여 계속적으로 발전시켜 완제품을 만드는 방법
        Throw-away prototyping : 고객과의 의사소통 수단으로만 프로토타입을 사용

장점 : 프로젝트의 실현 가능성, 소프트웨어의 개발 가능성을 판단 할 수 있음
         개발자와 사용자 간의 의사소통이 명확해 짐
         기능적 요구사항 외에도 성능이나 유용성 등의 품질 요구를 할 수 있음.
         시스템을 미리 사용함으로써 사용자 교육효과가 있다.
         개발 단계에서 유지보수가 일어나는 효과가 있다.

단점 :  오해, 기대심리 유발
          중간 산출물 정의가 난해하여 문서화가 힘들며 관리자는 진척 사항을 제어하기 힘들어 짐.

적합한 경우 : 개발 착수 시점에 요구가 불투명할 때
                   실험적으로 실현 가능성을 타진해 보고 싶을 때
                   혁신적인 기술을 사용해 보고 싶을 때

소결 :  일반적으로 사용자는 소프트웨어의 입출력과 처리 기능을 자세히 요구하지 못하고, 개발자도 알고리즘의 효율성이나 운영체제 호환성 및 상호 작용 형태를 정확히 파악하기 힘드므로 이럴 경우 소프트웨어 요구사항을 파악하기 위한 좋은 방법이다.



점증적 모델
 




특징 : 여러개의 모듈로 분해하고 각각을 개발하여 인도하는 방식
         각 모듈을 점증이라고 한다.

릴리스 구성 방법 :
         점증적 개발 방법 : 시스템을 기능별로 여러 서브 시스템으로 나누고 하나씩 개발(릴리스 A, B, C)한다.
         반복적 개발 방법 : 릴리스 할 떄 마다 기능의 완성도를 높임. (릴리스 1.0, 1.1, 1.2)
단계적 개발 : 
        기능이 부족하더라도 초기에 사용 교육 가능
        처음 시장에 내놓는 SW는 시장을 빨리 형성 할 수 있음
        자주 릴리스하면 가동 중인 시스템에서 일어나는 예상하지 못했던 문제를 신속 꾸준히 고쳐나갈 수 있음.

장점 : 
       중요한 점증이 먼저 개발되므로 사용자는 시스템을 이른 시기에 사용할 수 있다.
       릴리스 방식이 요구사항 변화에 대응하기 용이하다.
       점증들은 점차 규모와 기능이 축소되어 관리가 어렵지 않음
       먼저 개발되는 중요 부분이 반복적으로 테스트된다.

단점 : 
       기능적으로 분해하기 어려울 수 있다.
       적당한 크기의 점증들로 나누기 어렵다
       점증을 개발하기 전에 명확한 요구사항을 정의해야 한다.

진화형 모델과 다른 점 : 여러 점증을 동시에 개발 할 수 있음. 시스템 릴리스가 시간차를 두고 계속됨





나선형 모델(Spiral Model)




특징 : 

  전체 생명주기에 프로토타이핑과 위험 분석을 계획적으로 사용하여 위험을 최소화 하려는 목적을 가짐.
  반복 진화형 모델의 확장 형태로 주기적으로 순환되는 구조이다.  
  소프트웨어의 기능을 나누어 점증적으로 개발

장점 :
 
 대형 프로젝트에서 위험 관리를 통해 성공 가능성을 높일 수 있다.
 대규모 시스템 개발에 적합
 위험을 관리하고 최소화 함
 반복적인 개발 및 테스트를 통한 강인성 향상

V 모형 :


특징 :

 폭포수 모델에 시스템 검증과 테스트 작업을 강조한 것
 구현을 중심으로 각 단계로 V자 모양의 대칭

장점 :

 오류를 줄일 수 있음
 모든 단계에 검증과 확인 과정이 존재

단점 :

 생명주기의 반복이 없어 변경을 다루기가 쉽지 않음
 작업이 종료되고 리뷰 후에는 관련된 결과물이 동결된다.
 요구명세가 확실하여 개발하는 동안 변경이 없는 경우에만 적합

적용 :

  신뢰성이 높이 요구되는 분야

 



일정 중심 설계 모델

특징 : 

  사용자의 요구에 대하여 우선순위를 정하고 이를 기초로 각 사이클을 계획
  초기 단계에 중요한 기능을 설계, 구현하여 시스템의 골격을 만듦
  상대적으로 덜 중요한 기능을 나중에 함으로 일정 조정 가능

단점 :
 
  우선순위가 낮아 출시에 포함되지 않을 기능을 분석하고 설계하는데 시간을 낭비

적용 :
 
 소프트웨어 제품의 출시 날짜가 매우 중요한 경우
  목표 일정을 달성할 수 있을지 불확실할 떄

 사용자의 요구에 대하여 우선순위를 정하고 이를 기초로 각 사이클을 계획
 


시험 공부하다가 그냥..
신고

'프로그래밍 일반' 카테고리의 다른 글

Git 후기  (0) 2011.05.09
Git 구축 완료  (1) 2011.05.09
소프트웨어 개발 프로세스 모델  (2) 2011.04.21
Idiom 이란?  (0) 2011.04.07
Simple MATLAB  (0) 2011.04.04
기본 Design Pattern  (7) 2011.03.30
Posted by JAVA_HOME

댓글을 달아 주세요

  1. ddd 2011.10.06 22:44 신고  댓글주소  수정/삭제  댓글쓰기

    좋은정보 감사합니다^^

  2. ddd 2011.10.06 22:44 신고  댓글주소  수정/삭제  댓글쓰기

    좋은정보 감사합니다^^


티스토리 툴바