软件过程
第二章第二章 软件过程软件过程 一、软件生命周期一、软件生命周期 软件生命周期(Life Cycle),也称生存周期,指软件产品从提出、产生、发展到成熟,直至 衰亡的整个时间段。 软件生命周期的组成阶段: (1) 软件定义阶段软件定义阶段:做什么?问题定义→可行性研究→需求分析 (2) 软件开发阶段软件开发阶段:如何做?总体设计→详细设计→编码和单元测试→综合测试 (3) 运行维护阶段运行维护阶段:纠错、适应性修改、增强性修改、预防性修改 二、软件过程的定义二、软件过程的定义 当开发产品或构建系统时,遵循一系列可预测的步骤(路线图)是非常重要的,它有助于及 时交付高质量的产品。 (1)所遵循的路线图就称为“软件过程” 。 (2)软件过程贯穿软件开发的各阶段,并建立阶段里程碑(Milestones) ; (3)管理者在软件工程过程中需要对软件开发的质量、进度、成本进行评估、管理和控制; (4)技术人员在软件过程中需采用相应的方法和工具生成软件工程产品,如模型、文档、数 据、报告、表格等。 三、软件过程的作用三、软件过程的作用 软件开发过程的作用是: (1)成为开发组活动顺序的向导。 (2)详细说明需要开发哪些制品,何时开发。 (3)指导每一个成员及整个开发组的工作。 (4)提供监控、度量产品和活动所依据的准则。 — 软件过程是软件项目管理控制的基础,它为项目提供稳定性、可控性和有组织性,能有 效避免混乱。 — 若没有一个良好定义的过程,开发组将各行其是,成功与否完全依赖个别优秀的人才, 这不是能够长久的。 四、软件过程的组成要素四、软件过程的组成要素 (活动、动作、任务)(活动、动作、任务) 软件过程是工作产品构建时所执行的一系列活动、动作和任务的集合。 (1)活动(activity):实现宽泛的大目标。 (2)动作(action):阶段目标。 (3)任务(task):关注小而明确的目标,产生实际产品。 — 软件过程由活动组成,活动由动作组成,动作由任务组成。软件过程由活动组成,活动由动作组成,动作由任务组成。 五、基本框架活动和典型的普适性活动五、基本框架活动和典型的普适性活动 软件过程框架(process framework)定义了若干个框架活动框架活动, 及一些适用于整个软件过程 的普适性活动普适性活动 1.1.基本框架活动基本框架活动 一个通用的软件工程过程框架通常会包含以下5 个基本的框架活动: (1) 沟通:在技术工作开始前,先和利益相关者进行沟通与协作,以理解项目目标,并收 集需求。 (2) 策划:制定项目计划, 包括需要执行的技术任务、 可能的风险、资源需求、工作产品、 工作进度计划等。 (3)建模:构思软件的体系结构、构件如何结合等。 (4)构建:包括编码和测试。 (5)部署:交付全部软件或部分增量,由用户使用并反馈意见。 2.2.典型的普适性活动典型的普适性活动 在软件过程中, 还需要补充一些贯穿始终的普适性活动, 可帮助团队管理和控制进度、 质量、 变更和风险。 (1)软件项目跟踪与控制:根据计划评估当前进度,并采取必要的措施保证项目按进度计 划进行。 (2)风险管理:对可能影响项目成果或质量的风险进行评估。 (3)软件质量保证 (4)技术评审:评估软件工程的产品, 尽量在错误传播到下一个活动之前发现并清除错误。 (5) 测量:定义和收集过程、项目和产品的度量。 (6) 软件配置管理:管理变更所带来的影响。 (7)可复用管理:定义产品复用标准,建立构件复用机制。 (8)工作产品的准备和生产 六、过程流六、过程流 过程流(process flow):描述了在执行顺序和执行时间上,如何组织框架中的活动、动作和 任务。有以下 4 类: 七、通用过程模型七、通用过程模型 — 软件过程常使用“过程模型”来表述。 一个通用的软件过程模型,包括以下工作: (1)选择一种过程流。 (2)定义框架活动:针对给定的问题、开发人员和利益相关者,制定每个框架活动中需要 完成哪些动作。 ( 例如在沟通活动中,可能包括启动、需求获取、需求系统、谈判、规格说 明、确认等动作。 ) (3) 明确任务集:为每个动作制定所需要的任务集。 — 任务集由工作任务、相关工作产品、质量保证点和项目里程碑等部分组成。 — 对于不同的软件项目,即便是相同的动作,确定的任务集也可能不一样。 (4)编写或查找过程模式。 八、过程模式八、过程模式 1. 1.过程模式的定义过程模式的定义 — 开发团队在软件过程里会遇到很多问题,如果团队能得到已有的经过验证的解决方案, 将有助于快速地分析和解决问题。因此在软件过程中,最好能将遇到的过程问题、问题 环境、解决方案等记录下来,形成过程模式过程模式(process pattern)(process pattern)。 — 过程模式提供了一个模板,一种在软件过程的背景下,统一描述问题解决方案的方法。 — 可以在不同抽象层次上定义模式, 比如针对整个过程的、 针对框架活动的、 针对动作的、 针对任务的等。 例子: — 模式名称:模式名称:需求不清 — 目的:目的:该模式描述了一种构建模型(或原型系统)的方法可以反复评估,以便识别和确 定软件需求。 — 类型类型: :阶段模式。 — 启动条件:启动条件:①确定利益相关者;②已经建立起利益相关者和间的沟通方式;③利益相关 者确定了需要解决的主要问题基本业务需求和项目约束条件有了初步了解。 — 问题:问题:需求模糊或者不存在,但都清楚地认识到项目存在要通过软件解决。利益相关者 不确认他们想要什么;即他件需求。 — 解决办法:解决办法:描述了原型开发过程。 — 结束条件:结束条件:开发了软件原型,识别了基本的需求(例如,征、处理功能等),并获得了利 益相关者的认可。随后, ①原型系统可以通过一系列的增量开发, 演化成为软件产统被抛弃, 采用其他过程模式建立 产品软件。 — 相关的模式:相关的模式:客户沟通、迭代设计、迭代开发、客户评价 九、过程模型九、过程模型 1. 1.通用过程模型通用过程模型 软件过程常使用“过程模型”来表述。 — 一个通用的软件过程模型,包括以下工作: (1)选择一种过程流。 (2) 定义框架活动:针对给定的问题、 开发人员和利益相关者,制定每个框架活动中需要 完成哪些动作。 (例如在沟通活动中,可能包括启动、需求获取、需求系统、 谈判、规格说明、确认等动作。 ) (3)明确任务集:为每个动作制定所需要的任务集。 — 任务集由工作任务、相关工作产品、质量保证点和项目里程碑等部分组成。 — 对于不同的软件项目,即便是相同的动作,确定的任务集也可能不一样。 (4)编写或查找过程模式。 2. 2. 过程模型的选择要点过程模型的选择要点 (1)无论要开发软件的大小,都应选择一个合适的软件过程模型。 (2)选择何种软件过程模型,依赖于项目的性质、所构造软件的特点、采用的方法、需要 的控制,以及项目团队,不同类型的软件或系统可能需要采用完全不同的软件过程。 (3) 软件过程不是教条,它不是对如何构建软件的严格规定, 而应是一种可适应性调整的 方法,要让软件过程适合于项目团队和要开发的产品。 十、惯用过程模型(传统过程模型)十、惯用过