프로그래밍[Univ]/소프트웨어 공학론

[소프트웨어공학론] Software process models Part 1

Cloud Travel 2012. 3. 15. 20:44
1. The water fall model(Software life cycle model)

 
  ※ Integration : Systems가 A System(하나의 시스템)이 될때까지 반복 하는 과
 - 위에서 아래로 한단계 단계가 폭포수가 떨어 지듯이 진행 되는 모델
 - 하나의 과정이 끝난후 다음 단계로 넘어 가면 이전 단계로 돌아 갈 수 없다.(단반향) 
 - 만약, 어떠한 단계에서 문제가 발생하더라도, 이전 단계로 돌아 갈 수 없기 때문에
   우회적인 방법으로 문제를 해결한다. 
 - 관리자 입장에서 계획을 관리하기가 쉽다.
 - 일을 협동해서 하기가 쉽다. (큰 틀이 주어지기 때문에 각자가 그 틀에 맞춰서 일을 하면 된다.)
 - 완벽한 설계와 구현이 있기 때문에 현재까지도 많이 사용 되고 있다.
 - 구현이 끝나고 관리 유지 보수 단계에서는 그때의 상황에 따라서 원하는 위치(단계)로 이동하여
   그 곳 부터 실행을 한다.
 - 변화하면 안되는 System, 대규모 S/W 개발에 적용되는 모델이다. ex) 통신망

2. Incremental development (점진적 개발법)

 
 - 장점
  > 요구사항 변화 및 개발자의 상황을 반영하는 비용이 감소한다.
  > 고객의 feed back받는 것에 용의하다.
    (waterfall 경우에는 a System이 나왔을 경우에만 feed back이 가능하다.)
  > 빠른 전송 및 배포가 가능하다.
 - 단점
  > 프로세스가 눈에 보이지 않는다.
    위 그림에 나온 설명처럼 누군가는 명세과정을 하는데 누군가는 검증을 하고 있을 수 있다.
 >  눈에 명확한 진행 정도가 구상화 되지 않아서 관리하기가 힘들어 진다. 
 > version이 새로 갱신할때마다 version backup작업을 하는데, 이때마다 backup관련 파일을 만들어 줘야한다.
   (back up관련 파일 : code / configure 문서)를 계속해야 한다. 
   (Feedback후엥 계속 backup자료를 만들어야 한다. 비용효과가 낮다.) 
 > Feedback또는 변경사항이 추가됨에 따라 시스템의 구조가 망가지는 경향이 있다.(유지보수가 힘들어진다.)
 - 경험이 없고, 중소프로젝트 등 실험적 성향이 많으면 사용한다.


3. Reuse-oriented software engineering

  



 - 소프트웨어의 컴포넌트를 나눠서 재사용할 부분은 재사용을 하고, 그외 부분은 개발을 한후 합친다.
  ※ 컴포넌트 : 독립적으로 돌아가는 software
 - Reuse에서 만 생기는 과정이 발생한다.
  > Component Analysis(컴포넌트 분석)
  > Requirements modification(요구사항 수정)
  > System design with reuse(재사용을 통한 시스템 설계)
  > Development and integration.
 - 장점
  > 빠른 개발, 기능의 완벽성이 높아진다.
  > 시스템 신뢰도가 높아진다.
 - 단점
  > 자신의 목적에 맞는 컴포넌트를 찾기 힘들다.
  > 자신이 개발 한 것이 아니기 때문에 유지 보수시 오류를 고치기 힘들다. 
     ( 유지보수가 자신이 아닌 제 3자(컴포넌트 개발자)에게 돌아가서 관리 하기가 힘들어진다. ) 
 -  웹서비스, 독립적 프로그램 등의 개발에 접목식키면 편리하다.