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

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

Cloud Travel 2012. 3. 21. 20:40
* Boehm's spiral model(보험의 나선형 모델)

  

  - "어떻게 개발해야 하는 가"의 과정이 나선형으로 나온다.
  - Process나 Activity라고 하지 않고 하나의 주기를 Phase라고한다.
  - 명세, 설계 ... 등 단계가 불분명하다.
  - 위험 요소를 줄이는 활동을 심하게 한다.
  - 1~4분위 면은 각각 분위마다 Phase에 관계없이 하는일은 비슷하다.
  ⓐ Objective setting ( 목적 수립 단계 )
   > 2사 분면에 해당하는 것으로, ⓓ에서 설립한 계획의 Phase 목적을 수립하고 검토한다.
  ⓑ Risk Assessment and reduction
   > 1사 분면에 해당하는 것으로, ⓐ단계의 문서를 보고 위험요소를 파악하고,
      때에 따라 프로토 타입을 만들어서 실험을 해본다.
  ⓒ Development and validation
   > 4사 분면에 해당하는 것으로 개발 및 검증 단계로 현재 Phase의 개발 및 검증을 한다.
  ⓓ Planning
   > 1Phase일 경우 시작하는 부분이며, 다음 단계의 계획을 수립한다. 

 - Spiral model을 사용하는 곳 : Risk 확률이 높은 S/W개발
 - 활동이 너무 많아서 실제로 잘 사용하지 않는다.

-------------------------------Part 1 ~ 현재까지는 90년대 이전 이다.--------
-------------------------------이후에는 90년대 이후로 객체 지향이상의 개념이 사용되는 가정이 존재한다.

* The Rational Unified Process
 - 객체 지향 개념으로 개발한다는 가정하에 생긴 프로세스 모델.
 - 객체 지향의 프로그램의 순서는 이전과 다르다.
 - 언어에 종속되지 않기 위해서 UML을 이용한다.
 - 3개의 프로세스 모델이 혼합되어 있다.
 - RUP는 3개의 시각에서 이해 할 수 있다.
 - RUP의 과정
   

  ⓐ Inception : 해당 시스템의 목적을 정의, 사업 목표를 저으이하는 부분
  ⓑ Elaboration : 구체적 기능을 명세, 요구사항을 추출하는 부분
  ⓒ Construction : 설계구현 부분
  ⓓ Transition : 제작한 System을 실행하고 고객에게 전달
  ⓔ RUP iteration 
   > 각각의 단계는 단계에서 지속적 순환이 일어난다.
   > 4개의 단계또한 하나로 크게 순환을 한다.
 - RUP의 3개의 시각
  ⓐ Dynamic perspective : 시간의 흐름에 따라서 변화하는 활동
  ⓑ Static perspective : 시간에 관계없이 공통적으로 하는 활동
  ⓒ Practice perspective : 활동에 대해 충고해주는 활동
   

   ※ 그림에 굴곡이 있는 이유는 각각의 Phase내에서도 반복적인 작업이 일어나기 때문에.
   ※ Test에서는 시스템이 점점 통합되며 커지기 때문에 굴곡의 봉오리도 커진다.
   > Static workflow
    Do workflow
    - Business modelling : Use-case찾기, 사용 사례찾기 
    - Requirements : 관련된 Actor를 찾고, 그 Actor가 하는 일을 연결
    - Analysis and design : 아키텍쳐, 컴포넌트, 객체, ... 등의 모델을 정의(UML사용)
    - Implementation : UML그림을 이용하여 정의 된 것을 구현
    - Testing
    - Deployment : 사용가능하게 설치
    Supporting workflow
    - Configuration and change management : 형상 및 변화 관리
    - Project management : 진도체크 및 리스크 체크
    - Environment : 작업환경 구조화
   > RUP good practice
    - 반복적으로 소프트웨어를 개발하라.
    - 요구사항을 관리하라.
    - 컴퍼넌트 기반의 재사용을 해라.
    - 과정 및 설계를 그림으로 보여라.
    - 소프트웨어 품질관리를 해라.
    - 변화에 대해 조종을 해라.