1、1 软件过程模型 Process Models in Software Engineering 作者 : Stephen H. Kan 起止页码 : 第 8 页第 17 页 出版日期(期刊号): 2002 年 9 月 (卷 1) 出版单位: Addison-Wesley Professional 外文翻译译文: 摘要 软件系统从起初 的开发,维护,再到一个版本升级到 另一个版本,经历了一系列阶段 .这篇文章归纳和整理了一些描述如何开发软件系统的方法 .从传统的 软件生命周期的 背景和定义出发 ,即大多数教科书所讨论的,并且目前的软件 开发实践所遵循的软 件生命周期 , 接着讨论作为目前软件 工
2、程技术基石 的更全面的软件开发模型 . 1 前言 软件业的发展最早可追溯到开发大型软件项目的显式模型,那是在 二十世纪五十年代和六十年代间 .总体而言, 这些早期的软件生命周期模型 的唯一目的就 是提供一个合理的概念计划来管理软件系统的开发 .因此,这种计划可以作为一个基础规划,组织,人员配备,协调,预算编制,并指导软件开发 活动 . 自 20 世纪 60 年代,出现了许多经典的软件生命周期的描述(例如,霍西尔 1961年,劳斯莱斯 1970 年, 1976 年博伊姆,迪斯塔索 1980 年, 1984 年斯卡 基,萨默维尔 1999 年) .罗伊斯( 1970) 使用现在生活中熟悉的 “瀑布
3、 ”图表,提出了周期的概念,这个图表概括了开发大型软件系统是多么的困难,因为它涉及复杂的工程任务,而这些任务在 完成之前 可能需要不断地 返工 .这些图表也通常在介绍性发言中被采用,主要针对开发大型软件 系统的 人们(例如,定制软件的客户) ,他们 可能不熟悉各种各样的技术问题但还是要必须解决这些问题 . 这些经典的软件生命周期模型通常包括以下活动一些内容: 系统启动 /规划:系统从何而来?在大多数情况下,不论是现有的信息处理机制以前是自动的,手工的,还是非 正式的,新系统都会取代或补充它们 . 需求分析和说明书:阐述一个新的软件系统将要开发的问题:其业务能力,其所达到的性能特点,支持系统运行
4、和维护所需的条件 . 功能或原型说明:潜在确定 计算的 对象, 它们的属性和关系,改变这些对象的操作,约束系统行为的限制等 . 划分与选择:给出需求和功能 说明书,将系统分为可管理的模块,它们是逻辑子系统的标志,然后确定是否有对应于这些模块的新的,现有的,或可重复使用的2 软件系统可以 复用 . 设计及配置说明书:以适合模块的详细设计和整体配置管理的方式定义各子系统之间的内部关系和接口 . 模块设计的详细规格说明:定义数据流在各组件之间传递的算法 . 模块实现和调试:将前面的规格说明的内容通过代码实现并验证他们的基本操作是否正确 . 软件集成与测试:确认并维持软件系统结构配置的整体完整性 .通
5、过配置软件系统架构的一致性和验证 完整的实施模块,核实规格说明书中模块的接口和内部关系,并验证系统及其子系统的性能是否他们的要求匹配 . 文档修订和配送系统:将已经写好的系统 开发说明书进行包装并合理的转化为系统文档和用户指南,所有的文档都是以一种适于普及和系统支持的格式 . 部署和安装:提供安装已发布软件到本地计算机环境的指南,配置操作系统的参数和用户的 访问权限,并运行诊断测试,以保证系统的基本操作的正常运作 . 培训和使用:提供教学器材及系统用户指南,方便用户了解系统的性能和限定,以便有效地使用该系统 . 软件维护:通过提供功能改进,维修,性能提高及更新使得在其主机系统环境下维持有用的操
6、作 . 1.1 什么是软件生命周期模型 ? 软件生命周期模型是关于软件 是如何或应该是怎样开发的描述性或说明性的描述 .描述性模型阐述了一个特定的软件系统开发的过程 .描述性模型可作为理解和改进软件开发过程的基础,或者作为开发系统的经典规范模型(柯蒂斯,杰瑞, Iscoe, 1988年) .这个模型描述了软件应该如何开发 .它 作为准则或框架来 组织和策划软件开发应如何执行,以及以什么顺 序 .通常情况下,阐述 软件系统应该如何开发 的规范性的生命周期模型,是比较容易和明确的 .这是因为这种模式是直观的并能够很好的 推导出来 .这意味着,在实践中,许多描述中提到的软件开发的细节是可以忽略不计的
7、,或可以拖延的 .当然,在不同的开发环境, 使用不同的编程语言, 由不同水平的开发人员,开发不同 类型 的应用系统时,应该相对的提高开发的有效性和健壮性 .当然,在软件开发的过程中 , 规范 性的模型 运用一些给定的 软件工程工具或环境后,也被用来包装发任务和技术 . 另一方面,描述性的生命周期模型描述了在特定的环境下,软件系统实际中是如何开发的 .因此,它们不太常见,更难以阐明,一个明显的原因:一个人必须观察并收集整个软件系统生命周期的数据,而这往往以年来衡量 .此外,描述性模型针对具体观察的系统,在进行系统的比较分析后得出来的 .因此,这意味着规 范的软件生命周期模型占据着主导地位,直到大
8、量的观测数据提供足够的资料,并阐明更好的生命3 周期模型 . 这两种描述表明,阐述软件生命周期模型有一系列的目的 .这些描述可以作为: 在安排时间,空间和计算环境上指引协调,计划,配备人员,安排并管理软件项目工作 . 规范指出产生什么样的文件交付给客户 . 确定哪些软件工程工具和方法将是最适合支持不同的生命周期活动的 . 分析并估计在软件生命周期中的资源分配和开支的框架(博伊姆 1981) 进行实证研究的基础,用以确定影响软件生产率、成本以及整体质量的因素 . 1.2 什么是软件过程模型 ? 相对于软件生命周期模型,软件过程模型往往代表一个网络化的序列活动、对象、转换和事件,体现能够实现软件发
9、展的策略的事件 .这种模型可以用来制定更精确、更规范化的关于 软件生命周期活动的描述 .它们的强大源于充分利用了丰富的符号,语法和语义,而这些往往是适合于计算 处理的 . 软件过程网络可以被看作是代表多个相互关联的任务链( 克林 1982 年,加尔格1989 年) .任务链代表了非线性序列的活动,这些活动能够建造并改造现有的计算对象(资源),将其转化成为中间或最终产品 .非线性意味着活动的顺序是 不确定的,反复的,可以 容纳多个 /平行的替代品,以及部分被用来循序渐进地推进 .反过来,任务活动可以被视为非线性的简单活动序列,这些简单活动是计算处理的最小单元,比 如用户使用鼠标或键盘进行命令或者
10、菜单的一次选择 . 维诺格拉特和其他人将人与计算机之间的这种协同工作的单位,称作是 “结构化论述的工作 ”(维诺格拉特电脑 1986 年),而任务链,以 “工作流程 ”( Bolcer 1998 年)的名称变得大众化 . 任务链可以用来描述任何规范或描述动作序列 .指令性任务链是理想的计划,计划应该完成什么样的活动,以及以什么顺序 .例如 ,对于面向对象的软件设计任务链活动可能包括下面的任务行动: 开发系统的一个非正式的规范 . 确定对象和它们的属性 . 确定行动的对象 . 确定对象之间,属性或操作的接口 . 实施行动 . 显然,在增量模型逐步走向面向对象软件设计的过程中,这种行动可能带来多次迭代序列和非序列化的简单活动 . 任务链的结合或分割成其他任务链导致整体的生产网络或网络的产生 (克林1982 年) .这种 生产网络代表 “组织生产系统 ”,它能将原始的计算,认知,和其他组