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

[소프트웨어공학론] Software Processes

Cloud Travel 2012. 3. 13. 20:18
* Software Process
 - 소프트웨어 개발을 위해 필요한 활동들의 집합
 - 목적 소프트웨어에 따라서 필요한 활동들은 모두 다르지만 공통적인 활동이 몇개 존재한다.
  > Specification : 명세화, 시스템이 무엇을 해야하는지 기능을 정의하는 단계
  > Design and implementation : 시스템 구조를 정의(Architecture Design)하고, 구현하는 단계  
  > Validation : 검토, 테스트 단계
  > Evolution : 유지 보수 및 진화단계 

* Software process descriptions(소프트웨어 개발 활동 계획서)
 - 각 소프트웨어의 개발(Activity) 순서에 따라서 개발 계획서를 작성한다.
 - 각 단계가 단계별로 꼭 표현이 되어야한다.
 - 각 단계별로 다음과 같은 추가 정보를 넣을 수 있다.
  > Products : 산출물
  > Roles : 규칙
  > Pre-and post-conditions : 구현전 또는 구현후 만족해야할 조건
  ※ 사실 완벽한 소프트웨어 개발 계획서는 모든 과정에 추가정보를 모두 포함해야한다.
      시간의 한계와 계획서의 복잡도 증가 등에 의해서 모든 것을 표현하지는 않는다.
      이러한이유로 Software process model은 추상화된 표현법(Abstract representation)을 취한다고 할 수 있다. 

* Software process 분류
 ⓐ Plan-driven processes(계획에 의거한 프로세스) 
  - 프로세스에 필요한 모든 활동을 미리 계획한다.
  - 진행 정도는 현재 진행 정도와 계획을 대비하여 쉽게 측정할 수 있다.
  - 프로그래머의 단일 문제로 인한 프로세스 변경이 불가능하다.
  - 관리자 입장에서 관리 하기가 쉽다. 
 ⓑ Agile processes(빠른 프로세스, 일단 진행)
  - 점진적으로 계획을 추가해 나간다.
  - 프로세스 변경을 하기가 쉽다.
  - 프로그래머의 문제, 고객의 입장을 프로세스에 반영하기 쉽다.
  - 관리자 입장에서 진행정도 측정이 어렵다.
 ⓒ 실무
  - 두 개의 요소가 혼재된 프로세스를 구성하여 실행한다.

*  Software process models (예전부터 사용되는 모델들)
 ⓐ The waterfall model(폭포수형 모델)
  - Plan-driven model.
  - 명세와 개발이 명확히 분리 되있다.
  - 개발 중에 명세 수정이 안되며, 개발을 한다는 것은 명세가 확정된 것을 의미한다.
 ⓑ Incremental development(점진적 모형) 
  - 명세, 개발 및 검증이 모두 함께 반복되어 일어난다.
  - Plan-driven과 Agile방법 모두 사용 가능한 모형
 ⓒ Reuse-oriented software engineering(재사용 기반 모형)
  - 소프트웨어의 명세를 나눈후, 재사용가능한 기존 컴포넌트의 기능을 반영후 개발.
  - Plan-driven과 Agile방법 모두 사용 가능한 모형 
 ⓓ 실무
  - 실무에서는 모든 것이 합쳐저서 소프트웨어 개발 모델이 나온다.