* 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방법 모두 사용 가능한 모형
ⓓ 실무
- 실무에서는 모든 것이 합쳐저서 소프트웨어 개발 모델이 나온다.
- 소프트웨어 개발을 위해 필요한 활동들의 집합
- 목적 소프트웨어에 따라서 필요한 활동들은 모두 다르지만 공통적인 활동이 몇개 존재한다.
> 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방법 모두 사용 가능한 모형
ⓓ 실무
- 실무에서는 모든 것이 합쳐저서 소프트웨어 개발 모델이 나온다.