软件工程过程模型
第2章 软件工程过程模型
2.2 软件工程过程
如前所述,软件工程过程是开发或维护软件及其相关产品 的一系列活动。
软件工程过程是过去十年中人们关注的焦点。软件工程和 软件工程过程之间是强相关的。软件工程过程通常包括四种基 本的过程活动:
(1) 软件规格说明:规定软件的功能、性能及其运行限制。
(2) 软件开发:产生满足规格说明的软件,包括设计与编码 等工作。
工具层 方法层 过程层 质量焦点
图2.1 软件工程过程层次图
第2章 软件工程过程模型 正如其他工程方法一样,软件工程必须以有组织的软件质 量保证为基础。因此说,对质量的关注构成了软件工程的根基。
软件工程过程是将技术层(包括工程技术与管理技术)结合 在一起的凝聚力。 过程层是软件工程的基层。软件工程过程定 义了一组关键过程域(KPAs),这对于软件工程技术的有效应用 是必需的。这些关键过程区域是对软件工程项目进行管理与控 制的基础,并且确定了上、下各区域之间的关系。其中,对于 技术方法的采用、阶段产品的产生、工程里程碑的建立、质量 监控与保证、变更控制等方面都进行了规定。
公共过程框架 框架活动 任务集合 工作任务 里程碑、交付物 SQA(软 件 质 量 保 证 )点
保护性辅助活动
图2.2 软件工程过程
第2章 软件工程过程模型
2.3 软件过程模型
在一个具体的实际工程活动中,软件工程师必须设计、提 炼出一个工程开发策略,用以覆盖软件过程中的基本阶段,确 定所涉及的过程、方法、工具。这种策略常被称为“软件工程 过程模型”。这一模型的选择应当是根据组织定义的标准软件 过程,参考具体工程项目的特点和资源状况进行裁剪来进行的。
除各个开发组织可以定义自己的软件工程过程之外,目前 流行比较广泛的软件工程过程包括有RUP过程、极限(XP)过程、 敏捷软件过程(Agile S.P)等等。
第2章 软件工程过程模型
软件工程方法涵盖了需求分析、设计、编程、测试、维护 等各个环节,它给出了完成这些任务在技术上应当“如何做” 的方法。它依赖于一组基本原则,这些原则控制了每一个技术 区域,涉及到建模活动和其他描述技术。
(3) 软件确认:确认软件能够满足客户提出的要求,对应于 软件测试。
(4) 软件演进:为满足客户的变更要求,软件必须在使用的 过程中演进,以求尽量延长软件的生命周期。
第2章 软件工程过程模型
在一个良好的软件过程中,还应当包括一些“保护性”的 活动,包括软件项目的跟踪监控、正式的技术审核、软件配置 管理活动、软件质量保证活动、文档的准备和产生、软件测试、 风险管理等等。这些保护性活动贯穿于整个工程过程之中。
在具体的工程过程中,可以根据实际需要,采用不同的过 程模型来实现上述的基本活动和保护活动。事实上,软件工程 过程是一个软件开发组织针对某一类软件产品为自己规定的工 作步骤,它应当是科学的、合理的,否则必将影响到软件产品 的质量。一个良好的软件工程过程应当具备如下特点:
第2章 软件工程过程模型 (1) 易理解性。 (2) 可见性:每个过程活动都以得到明确的结果而告终,保 证过程的进展对外可见。
工具层对过程和方法提供支持,使得工程活动、管理活动 得以自动、半自动的进行。例如,目前广为使用的数据库建模 工具Erwin、面向对象的建模工具Rationnal Rose、配置管理工 具等等。如果把一系列的工具集成起来使用,使得一个工具产 生的信息可以被另一个工具使用时,就形成了一个支持软件开 发的系统。这种集成了软件、硬件和一个软件工程数据库的软 件工程环境,称为计算机辅助软件工程(CASE)。
第2章 软件工程过程模型
从宏观上来看,所有的软件开发过程都可以看成是一个循 环解决问题的过程。其中包括四个截然不同的阶段:状态描述、 问题定义、技术开发和方案综述,如图2.3所示。状态描述表 示了事物的当前状态;问题定义标识了要解决的特定问题;技 术开发通过应用某些技术来解决问题;方案综述提交解决结果 (如文档、程序、数据、新的商业功能、新产品)给那些从一开 始就需要方案的人。前面定义的软件工程的一般阶段和步骤很 容易映射到这些阶段上。
第2章 软件工程过程模型
一个软件过程可以表示成如图2.2所示的形式。其中,公共 过程框架是通过定义若干适合于所有软件项目的框架活动而建 立的;若干任务集合中,每一个集合都由软件工程工作任务、 软件项目里程碑、软件工作产品和交付物以及质量保证点组成; 保护性活动独立于任何一个框架,贯穿于整个过程。
第2章 软件工程过软件工程过程模型
2.1 软件工程的技术基础 2.2 软件工程过程 2.3 软件过程模型 2.4 线性顺序模型 2.5 原型模型 2.6 快速应用开发模型 2.7 演化软件过程模型 2.8 软件过程技术 2.9 软件重用技术 2.10 小结
第2章 软件工程过程模型
2.1 软件工程的技术基础
(3) 可支持性 :容易得到CASE工具的支持。 (4) 可接受性:比较容易被软件工程师接受和使用。
(5) 可靠性:不会出现过程错误,或者出现的过程错误能够 在产品出错之前被发现。
(6) 健壮性:不受意外发生问题的干扰。 (7) 可维护性:过程可以根据开发组织的需求的改变而改进。
(8) 高效率:从给出软件规格说明起,就能够较快地完成开 发而交付使用。
第2章 软件工程过程模型
问题定义
状态描述
技术开发
方案综述
图2.3 问题循环解决的各个阶段
第2章 软件工程过程模型
上述的问题循环解决过程可以应用于软件工程的多个不同 开发级别(阶段)上,包括考虑整个系统开发的宏观阶段,开发 程序构件的中间阶段,甚至是代码编制阶段,因此可以采用分 级集合表示。可以定义一个模式,然后在连续的、更小的规模 上递归地应用它,这样来提供一个关于过程的理想化的视图。 问题循环解决过程的每一个阶段又包含一个相同的问题循环解 决过程,如图2.4所示。可以认为,软件开发是从用户到开发者 再到技术的一个连续的过程。随着向一个完整系统的逐步进展, 上述的阶段递归地应用于用户的需求和开发者的软件技术说明 中。