《软件过程管理和质量》由会员分享,可在线阅读,更多相关《软件过程管理和质量(186页珍藏版)》请在金锄头文库上搜索。
1、软件过程、管理和质量李 宣 东南京大学计算机科学与技术系概 要n软件过程n软件质量保证n软件配置管理n软件项目管理概念软件过程 软件过程是近十年来人们关注的焦点 。软件过程是为开发高质量软件所需要完 成的任务的框架。软件工程是有创造力、 有知识的人在定义好的、成熟的软件过程 框架中进行的。软件过程软件工程层次图质量焦点过程方法工具软件过程n软件工程是一种层次化的技术任何工程方法(包括软件工程)必须以有组 织的质量保证为基础。全面的质量管理和类似的 理念刺激了不断的过程改进,正是这种改进导致 了更加成熟的软件工程方法的不断出现。支持软 件工程的根基就在于对质量的关注。软件过程n软件工程的基层是过
2、程层软件工程过程是将技术层结合在一起的凝聚 力,使得软件能够被合理地和及时地开发出来。 过程定义了一组关键过程区域的框架,这对于软 件工程技术的有效应用是必须的。关键过程区域 构成了软件项目管理控制的基础,并且确定了上 下各区域之间的关系,规定了技术方法的采用、 工程产品(模型、文档、数据、报告、表格等) 的产生、里程碑的建立、质量的保证及变化的适 当管理。软件过程n软件工程的方法层提供了为开发软件在技术上需要“如何做”。 方法涵盖了一系列的任务:需求分析、设计、编 程、测试和维护。软件工程方法依赖于一组原则 ,这些原则控制了每一个技术区域,且包含建模 活动和其他描述技术。软件过程n软件工程的
3、工具层对过程和方法提供了自动的或半自动的支 持。当这些工具被集成起来使得一个工具产生的 信息可以被另外一个工具使用时,一个支持软件 开发的系统就建立了,称为计算机辅助软件工程 (CASE)。CASE集成了软件、硬件和一个软件工 程数据库(包含了关于分析、设计、编程和测试 的重要信息),从而形成了一个软件工程环境。软件过程n过程:为实现一个给定目标而进行的一系 列运作步骤。n过程具有一系列的性质:时间性、并发性 、嵌套性和度量性等。n软件过程:开发和维护软件及其相关产品 所设及的一系列活动。过程是活动的集合 ;活动是任务的集合;任务是把输入转换 为输出的操作。软件过程软件过程提供了一个框架,在该
4、框架下可以建 立一个软件开发的综合计划:n若干框架活动适用于所有软件项目,而不在乎其规模和复 杂性。n若干不同任务的集合-每一个集合都由任务、里程碑、 交付物以及质量保证点组成-使得框架活动适应于不同 软件项目的特征和项目组的需求。n若干保护性活动-如软件质量保证、软件配置管理、测 试与度量-它们贯穿于整个过程模型之中。保护性活动 独立于任何一个框架活动,且贯穿于整个过程之中。软件过程里程碑、交付物SQA点公共过程框架框架活动保护性活动任务集合 工作任务软件过程软件过程可分为三大类:n基本过程类:是构成软件生存周期主要部分的那些过程, 包括获取、供应、开发、操作、维护等过程。n支持过程类:可穿
5、插到基本过程中提供支持的一系列过程 ,包括文档开发、配置管理、质量保证、验证、确认、联 合评审、审计、问题解决等过程。n组织过程类:一个组织用来建立、实施一种基础结构、并 不断改进该基础结构的过程,包括管理、基础、改进、培 训等过程。软件过程模型软件过程模型是软件开发的指导思想 和全局性框架,软件过程模型的提出和发 展反映了人们对软件过程的某种认识观, 体现了人们对软件过程认识的提高和飞跃 。软件过程模型瀑布模型强调阶段的划分 及其顺序性、各阶段工作 及其文档的完备性,是一种严格线性的、 按阶段顺序的、逐步细化的开发模式。定义 分析 设计 编码 测试 维护软件过程模型瀑布模型的特点:n结构简单
6、明了;历史较长、应用面广泛、 为广大软件工作者所熟悉;已有与之配套 的一组十分成熟的开发方法和丰富的支撑 工具。n确定了需求分析的绝对重要性,但是在实 践中要想获得完善的需求说明是非常困难 的;反馈信息慢。软件过程模型原型模型听取用户意见建造/修改 原型用户测试 运行原型软件过程模型原型模型的特点:n原型作为标识软件需求的一种机制,原型 被建造仅是为了定义需求,之后就该被抛 弃(或至少部分抛弃);n实际的软件在充分考虑了质量和可维护性 之后才被开发。软件过程模型演化软件过程模型人们已经越来越认识到软件就象所有 复杂系统一样要经过一段时间的演化。业 务和产品需求随着开发的发展常常发生改 变,想找
7、到最终产品的一条直线路径是不 可能的。软件过程模型演化软件过程模型紧迫的市场期限使得难以完成一个完 善的软件产品,但可以先提交一个有限的 版本以对付竞争或商业的压力;只要核心 产品或系统需求能够很好地理解,而产品 或系统的细节部分可以进一步定义。软件过程模型演化软件过程模型演化模型是利用一种迭代的思想方法 ,它的特征是使软件工程师渐进地开发逐 步完善的软件版本。n增量模型n螺旋模型软件过程模型增量模型分析设计编码测试分析设计编码测试分析设计编码测试增量1增量2增量3软件过程模型增量模型的特点:n以功能递增的方式进行软件开发n能较快地产生可操作的系统;n在每一步递增中,都可以把用户/开发者的 经
8、验结合到不断求精的产品中;n可改善测试效果和降低软件开发总成本。软件过程模型螺旋模型需求定义评审风险分析工程实现软件过程模型螺旋模型的特点:n把软件开过程组成为一个逐步细化的定义 周期(螺旋周期)序列,每经历一个周期 ,系统就得到进一步的细化和完善;n本质上,具有上述特征的螺旋是一直运转 的直到软件退役。有时这个过程处于睡眠 状态,但任何时候出现了改变,过程都会 从合适的入口点开始;软件过程模型螺旋模型的特点:n紧密围绕开发中的风险问题,用风险分析 推动软件设计向深一层扩展、求精;n强调持续地判断、确定和修改用户任务目 标,并按成本、效益来分析候选的软件产 品性质对任务目标的贡献;n可结合采用
9、多种软件开发方法,但究竟结 合哪一种方法仍由风险分析来决定。软件过程模型形式化方法模型形式化方法的主要目的是要把软件开发 过程建立在严密可行的数学基础之上,从 而提高软件质量和软件生产率。n事后的或并行的一种辅助手段,用以对系 统的性质进行严格的验证;n集成到软件开发过程中,希望在严格的形 式系统的基础上,实现从需求规约到程序 代码的转换和过渡。软件过程管理改进软件过程n研究软件过程本质上是为了突出关键过程 以改善软件的质量。人们已经得到共识, 要提高软件质量必须改进软件过程。软件过程管理改进软件过程n软件机构形成一套完整而成熟的软件过程 不是一蹴而就的,它需要一个从无序到有 序,从特殊到一般
10、,从定性到定量,最后 再从静态到动态的历程,或者说软件机构 在形成成熟的软件过程之前必须经历一系 列的成熟阶段。软件过程管理改进软件过程n因此有必要建立一个软件过程成熟度模型 来对过程作出一个客观、公正的评价,以 促进软件开发组织改进软件过程。软件过程管理软件过程成熟度 指一个特定的软件过程被显式定义、管理 、度量、控制和能行的程度。成熟度可以用于指 示企业加强其软件过程能力的潜力。 当一个企业 达到了一定的软件过程成熟级别后,它将通过制 定策略、建立标准和确立机构结构使它的软件过 程制度化。而制度化又促使企业通过建立基础设 施和公司文化来支持相关的方法、实践和过程。 从而使之可以持续并维持一
11、个良性循环。软件过程管理不成熟企业的标志:n缺乏确定的软件过程和相应的管理和控制 ; n即使给出了软件过程,也不严格的遵循和 强制执行; n管理是完全被动的,管理者采用的策略是 救火式的,即出了事才去解决,解决的时 候也难以纵观全局,往往只顾眼前; 软件过程管理不成熟企业的标志:n由于缺乏有依据的估算,制订软件预算和 生产计划时往往跟着感觉走,实际生产时 则常常超标; n如果强制在预定期限内完成,那么软件的 功能和质量肯定是得不到保证; n缺乏评价软件产品质量和解决产品缺陷和 过程问题的客观基础。 软件过程管理成熟企业的标志:n具有在企业范围内管理、控制软件开发和 维护过程的能力; n现有人员
12、和新进人员均了解所遵循的软件 过程,且工作活动均按照事先的计划完成 ; n在定义好的软件过程中,所有项目和机构 中的角色和责任分明; 软件过程管理成熟企业的标志:n制定的计划是有效的且与实际的工作进展 一致; n软件过程在必要时可按照一定规则和程序 加以修改; 软件过程管理成熟企业的标志:n软件产品和过程具有一定的可控性:1. 管理者能够监督软件产品的质量和生产过程; 2. 具有客观的和定量化的措施来判断产品质量并分析产品与生产过程中的问题; 3. 计划和预算有章可循,它是基于历史数据的,从而是实际可行的; 4. 预算的结果,包括成本、时间表、产品功能和质量等,通常能够达到; 5. 有关的参与
13、者完全理解遵循软件过程的价值并认真地遵循之; 6. 具有支撑软件过程的基础设施,如标准过程库、历史数据库等。 软件过程管理软件能力成熟度模型 ( Capability Maturity Model,CMM)n软件能力成熟度模型提美国大学Carnegie Mellon University软件工程研究所出的一套系统、规范的 对软件生产过程进行管理的模型,其有效性已为 大量实践所证实,并已成为对一个软件企业的生 产能力和产品质量进行衡量的事实标准。软件过程管理软件能力成熟度模型(CMM)nCMM被用来确定一个机构的软件过程的成熟程度 以及指明如何提高该成熟度的参考模型。nCMM描述了软件过程从无序
14、到有序、从特殊到一 般、从定性管理到定量管理、最终到达可动态优 化的成熟过程,给出了该过程中五个成熟阶段的 基本特征和应遵循的原则、 采取的行动,以帮助 软件机构改进其软件过程。 软件过程管理CMM的主要作用CMM可以指导软件机构如何控制软件产品的开发和 维护过程,以及如何向成熟的软件工程体系演化,并形成 一套良性循环的管理文化。具体说来,一个企业要想改进 其生产过程,应该采取如下策略和步骤:n确定软件企业当前所处的过程成熟级别; n了解对改进软件生产质量和加强生产过程控制起关键作用 的因素; n将工作重点集中在有限几个关键目标上,有效达到改进机 构软件生产过程的效果,进而可持续地改进其软件生
15、产能 力。 软件过程管理CMM的基本前提n软件质量在很大程度上取决于产生软件的 软件过程的质量和能力; n软件过程是一个可管理、可度量并不断改 进的过程; n软件过程的质量受到用以支撑它的技术和 设施的影响; n企业在软件过程中所采用的技术层次应适 应于软件过程的成熟度。 软件过程管理CMM的基本原理nCMM强调连续的软件过程改进。该连续的改进基 于多个演化步骤。CMM将这些演化步骤划分成五 个级别。这种分级结构的理论依据是软件质量原 理。 n每一级别都包括若干目标。当满足某一目标后, 软件过程的相应部分便确定下来。 n五级成熟度定义了一个标准,用以度量机构的软 件过程成熟度和评价其软件过程能
16、力。 软件过程管理CMM的基本内容n机构和资源的管理:涉及机构本身的责任 ,人员和其它资源设施。 n软件工程过程及其管理:涉及软件工程过 程,即软件过程的深度、范围和完整性以 及如何度量、管理和改进这样的过程。 n工具和技术:软件工程过程中使用的开发 工具和技术。 软件过程管理CMM的五个成熟度级别n初始级 n可重复级:有规章的过程 n定义级:标准化、一致的过程 n管理级:可预测过程 n优化级:可持续改进的过程 软件过程管理CMM的初始级(第一级)n成功来源于个人英雄主义而非机构行为, 因此它不可重复,更换人员后成功便难以 维持。 软件过程管理CMM的可重复级(第二级)n针对特定软件项目建立管理该项目的策略和实现 这些策略的过程。 n新项目的计划和管理基于类似项目的经验。 n软件过程能力主要通过管理单个项目的软件生产 过程来得到提高和增强。 n不同的项目可有不同的软件过程,机构应当建立 一定的方针和策略以针对具体的项目选择合适的 软件生产过程并进行管理。 软件过程管理CMM的可重复级(第二级)可重复级的主要特点在于确定了基本的软件生产管 理和