软件开发模型给出了软件开发活动个阶段之间的关系,他是软件开发过程的概括,是软件工程的重要内容。软件开发模型为软件工程管理提供了里程碑和进度表。
8.3.1 软件开发模型概述
软件开发模型大体上分为三种类型。第一种是以软件需求完全确定为前提的瀑布模型;第二种是爱软件开发初始阶段只能提供基本需求时采用的迭代或渐进式开发模型 (喷泉模型,螺旋模型,统一开发过程和敏捷方法)第三种是以形式化开发方法为基础的变换模型。
- 瀑布模型
瀑布模型时一种严格定义方法,它将软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段。 - 演化模型
演化模型主要针对事先不能完整定义需求的软件开发,是在快读开发一个原型的基础上,根据用户在调用原型的过程中提出的反馈意见和建议,对原型进行改进,获得原型的新版本,重复,直到演化成最终的软件产品。 - 螺旋模型
螺旋模型时瀑布模型和演化模型相结合,并加入两者所忽略的风险分析所建立的一种软件开发模型。 - 喷泉模型
喷泉模型时一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。在喷泉模型中,个活动之间无明显界限,称为无间隙性。由于对象概念的引入,只用类和关系来表达分析、设计和实现等活动。 - 变化模型
变化模型是基础形式化规格说明语言和程序变换的软件开发模型,他对形式化的软件规格说明进行一系列自动或半自动的程序变换,最后映射为计算机能够接受的软件系统。 - 智能模型
智能模型也称为基于知识的软件开发模型,他综合了上述若干模型,并把专家系统结合在一起。该模型应用基于规则的系统,采用规约和推理机制,帮助开发人员完成开发工作,并使维护在系统规格说明一级进行。 - V模型
V模型是在快速应用开发模型基础上演变而来,由于将整个开发过程构造成一个V字而得名。V模型强调软件开发的协作和速度,将软件实现和验证有机地结合起来,在保证较高的软件质量情况下缩短开发周期。
8.3.2 快速应用开发
快速应用开发(rapid application development ,RAD)是这一种比传统生命周期法更快得多的开发方法,他强调极短的开发周期。RAD模型时瀑布模型的一个高速变种,通过使用基于构件的开发方法快速开发。
1.RAD的基本思想
(1)让用户主动地参与到系统分析、设计和构造中来
(2)将项目开发组织成一系列重大突出的研讨会,研讨会要让投资方,用户、系统分析师、设计人员和开发人员一起参与。
(3)通过迭代的构造方法,加速需求分析和设计阶段。
(4)让用户提前看到一个可工作的系统。
- RAD的开发阶段
RAD的流程从业务建模开始,随后是数据建模、过程建模、应用生成、测试与交付。
(1)业务建模 确定驱动业务过程运作的信息,可以使用数据流图来帮助建立业务模型。
(2)数据建模 为支持业务过程的数据流查找数据对象集合、定义数据对象属性,并与其他数据对象的关系构成数据模型,可以使用E-R图来帮助建立数据模型。
(3)处理建模 将数据对象转变为要完成一个业务功能所需要的信息流,创建处理以描述增加,修改、删除或获取某个数据对象,即细化数据流图加工。
(4)应用生成 利用环境提供的工具自动生成并构建整个应用系统。
(5)测试与交付 因为RAD强调复用,许多构件已经是测试过的,这就减少了测试的时间。 - RAD的特点
RAD采用基于构件的开发方法,复用已有的程序结构或者构件,或者创建可复用的,在所有情况下,均可以使用CASE工具辅助进行软件构件。
(1)RAD对模块化要求比较高,如果有一项不能模块化,那么RAD所需的构建就会有问题。
(2)开发者和客户必须在很短的时间能完成一系列的需求分析
(3)RAD只能用于管理系统开发,不适合技术风险很高的情况。
8.3.3 统一过程
(unified process,UP)统一过程是一个通用过程框架,可以用与种类广泛的软件系统,不同的应用领域。不同的组织类型,不同的性能水平和不同的项目规模。UP具有三个显著特点,即用例驱动、以架构为中心、迭代和增量。
- RUP概述
(rational unified process)是rational 公司开发维护的过程产品。RUP将项目管理、业务建模、分析与设计等统一起来,贯穿整个开发过程。
RUP使用Internet 技术,增强团队的开发效率,并为所有成员提供最佳的软件实现方案,他使团队中每个开发人员的见解和思想得到统一,使开发小组成员的沟通更为容易,而这正是任何项目要取得成功的关键因素。
RUP在软件过程在时间上分解为4个顺序的阶段,分别是初始阶段、细化阶段、构建阶段和移交阶段。每个阶段结束都要安排一次技术评审。 - 初始阶段
初始阶段为了系统建立业务模型并确定项目边界。
(1)明确项目规模
(2)评估项目风险
(3)制订项目计划
(4)阶段技术评审 - 细化阶段
细化阶段的任务是分析问题领域,建立完善的结构,淘汰项目中最高风险因素。
(1)确定架构
(2)制订构建阶段计划
(3)建立支持环境
(4)选择构件
(5)阶段技术评审 - 构建阶段
在构建阶段,要开发所有剩余的构建和应用功能,吧这些构建集成为产品,并进行详细测试。 - 移交阶段
当极短已经足够完善,可以安装到最终用户实际环境中,则进入交付阶段。交付阶段的重点是确保软件对最终用户是可用的。
8.3.4 敏捷方法
敏捷方法以应对快速变化的需求,虽然他们的具体名称、理念、过程、术语都不尽相同,但相对于“非敏捷”而言,他们更强调开发团队与用户之间的紧密协作、面对面的沟通、批犯的交付新的软件版、紧凑而自我组织型的团队,更注重人的作用。
- 敏捷宣言
敏捷方法强调:
- 让客户满意和软件尽早增量发布
- 小而高度自主的项目团队
- 非正式的方法
- 最小化软件工程总做产品以及整体精简开发
主要的敏捷方法有:
- 极限编程
- 自适应软件开发
- 水晶方法
- 特性驱动开发
- 动态驱动开发
- 敏捷数据库技术
- 精益软件开发
敏捷开发的原则包括用户参与、增量式提交、简单性、接收变更、强调开发人员的作用和及时反馈。
- 敏捷开发的特点
(1)客户参与往往依赖于客户参与的意愿和客户自身的代表性
(2)团队成员的性格可能不适合激烈的投入,可能无法做到与其他成员之间的良好沟通
(3)对系统的变更做出优先级排序可能是极短困难的
(4)维护系统的间接性往往需要额外的工作,迫于时间表的压力,可能没有时间执行系统简化过程。 - XP方法
(eXtreme programming,XP)敏捷方法最著名的就是XP,XP是一种轻量、高效、低风险、柔性、可预测、科学且充满乐趣的软件开发方式,适用于小型或者中型软件开发团队,并且客户的需求模糊或需求多变。
(1)在更短的周期能,更早的提供具体。持续的反馈信息。
(2)迭代地进行假话编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断地发展它。
(3)依赖于自动测试程序开监控开发进度
(4)依赖于口头交流,测试和源程序进行沟通
(5)倡导持续的演化式的设计
(6)依赖于开发团队内部的紧密协作
(7)尽可能达到程序员短期利益和项目长期利益的平衡。
XP由价值观、原则、实践和行为4个部分组成,他们彼此相互依赖、关联,并通过行为贯穿于整个生命周期。XP的核心是其总结的四大价值观,即沟通、简单、反馈和勇气。XP的的5个原则是快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
贯彻“小步快跑”的开发原则,因此工作量绝不可打折扣,通常采用测试先行的编码方式来提供支持。