简介
本章主要目标是介绍软件过程(软件生产的一组相互连贯的活动)的思想。读完本章将会:
- 理解软件过程和软件过程模型概念
- 了解 3 个通用的软件过程模型以及他们的适用情形
- 了解需求工程、开发、测试和演化这几个基本的软件过程活动
- 理解为什么软件过程要有效地组织以应对软件需求和设计上的变化
- 理解软件过程改进的思想以及影响软件过程质量的因素
虽然有许多不同的软件过程,但都必须包含在第 1 章所介绍的 4 个最基本的软件工程活动中:
- 软件规格说明
- 软件开发
- 软件确认
- 软件演化
2.1 软件过程模型
软件过程模型是软件过程的简化表示。本节介绍几个非常通用的过程模型(也叫过程范型)
2.1.1 瀑布模型
该模型包含了基本的过程活动并将它们表示为独立的过程阶段,如图,各阶段之间顺序流动,原则上,后续阶段不得在前一阶段结束前开始。属于计划式驱动。
瀑布模型
有严格的安全性和可靠性,但是不够灵活。适用于嵌入式系统,关键性系统或者大型软件系统。
2.1.2 增量式开发
该方法是的规格说明,开发和确认活动交替进行。系统开发体现为一系列的版本(增量)迭代。该方法可以是计划的,也可以是敏捷的,取决于增量是提前决定还是动态变化。
增量式开发
大部分业务系统和软件产品都是采用的该模型。增量式开发更加敏捷灵活,但是随着需求增加,代码结构退化,需要定期重构。
2.1.3 集成与配置
面向复用的方法依赖于一个可复用的软件构件库以及一个用于构建组装的集成框架。
集成与配置
该方法能有效降低成本和风险,但也有可能不完全满足需求,并且有些演化迭代不受控制。
2.2 过程活动
真实的软件过程中,技术活动、协作活动以及管理活动交织在一起,其总体目标是完成一个软件系统的规格说明、涉及、实现和测试。
2.2.1 软件规格说明
软件规格说明或需求工程过程的目的是理解和定义系统需要提供哪些服务,以及识别对于系统开发和运行的约束。
需求工程过程
2.1.2 软件设计和实现
软件设计是对将要实现的软件的结构、系统所使用的数据模型和结构、系统构建间的接口描述,有时候还会包括所用的算法。设计不是一蹴而就,而是阶段性的添加细节,设计的修改不可避免。
设计过程的通用模型
image.png
2.2.3 软件确认
测试应该是分阶段的。
测试阶段
image.png
image.png
image.png
2.2.4 软件演化
软件工程是一个持续演化的过程。
软件系统演化
2.3 应对变化
变化是无可避免的。
image.png
image.png
2.3.1 原型
原型是软件系统早期版本,用来演示概念、尝试候选方案、更好地理解问题以及可能的解决方案。
原型开发
2.3.2 增量式交付
增量式交付2.4 过程改进
过程改进意味着理解当前的过程,并对其进行改变以提高产品质量,并且/或者降低成本和开发时间。有如下两种很不一样的方法:
- 过程成熟度方法
- 敏捷方法
网友评论