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