1 / 92

Lecture 11 软件过程改进

Lecture 11 软件过程改进. 1. 软件过程概念. ISO 的定义:软件过程(也称为软件生存周期过程)是软件生存周期中的一系列相关过程( Process )。 过程就是活动的集合,活动是任务的集合,任务则起到把输入加工成输出的作用。 活动的执行可以是顺序的、迭代的(重复的)、并行的、嵌套的,或者是有条件地引发的。. 根据 IEEE 对软件过程概念的解释,软件过程分成七大类:软件采购、软件开发、软件维护、软件运作、软件获取、软件管理、软件支持 而 ISO12207 (软件生存周期过程)则分别将这七大类活动划归到三大类中:基本过程、支持过程和组织过程.

Download Presentation

Lecture 11 软件过程改进

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lecture 11 软件过程改进

  2. 1. 软件过程概念 • ISO的定义:软件过程(也称为软件生存周期过程)是软件生存周期中的一系列相关过程(Process)。 • 过程就是活动的集合,活动是任务的集合,任务则起到把输入加工成输出的作用。 • 活动的执行可以是顺序的、迭代的(重复的)、并行的、嵌套的,或者是有条件地引发的。

  3. 根据IEEE对软件过程概念的解释,软件过程分成七大类:软件采购、软件开发、软件维护、软件运作、软件获取、软件管理、软件支持根据IEEE对软件过程概念的解释,软件过程分成七大类:软件采购、软件开发、软件维护、软件运作、软件获取、软件管理、软件支持 • 而ISO12207(软件生存周期过程)则分别将这七大类活动划归到三大类中:基本过程、支持过程和组织过程

  4. 软件过程包含以下三个含义: • 个体含义,即指软件产品或系统在生存周期中的某一类活动的集合。如获取过程、供应过程、开发过程、管理过程等等。 • 整体含义,即指软件产品或系统在所有上述含义下的软件过程的总体。 • 工程含义,即指解决软件过程的工程,它应用软件工程的原则、方法来构造软件过程模型,并结合软件产品的具体要求进行例化,以及在用户环境中运作,以此进一步提高软件生产率、降低成本。

  5. 随机因素 过程的意义 输入x 输出 P 系统因素 过程原理图与过程输出的分布

  6. 2.软件过程质量 1.过程质量 质量是指“某一事物的特征和属性”,作为一个事物的属性,质量往往指的是事物的可度量的特征,且这些特征都是可以与已知标准进行比较的。 软件过程和软件产品一样,都是属于知识或信息实体,对其在质量方面的定义和描述具备一定的复杂性。尽管如此,软件过程质量(即过程质量)的表现形式不外乎体现在静态和动态这两个方面。

  7. (1)软件过程静态方面 当软件过程仅以某种特定的描述形式存在时,过程质量就表现为静态的一面。此时的过程质量实际上就是软件过程描述本身所具备的属性,它表现为: • 功能性:该过程描述满足实际需要的程度; • 易使用性:用户使用该过程描述进行过程实施和运作所需的努力程度,其中包括易理解性和易学习性等子特性; • 准确性:描述特定类型的软件过程的准确程度,可包含精确性、一致性、完整性、冗余度等子特性; • 易维护性:用户在改进基于该描述形式的软件过程时所需的努力程度,其中包括易分析性和易修改性等子特性;

  8. (2)软件过程动态方面 当软件过程在执行运作时,过程质量就表现为动态的一面。 此时的过程质量是以软件过程所表现出的过程运作能力来衡量,其中包括过程运作能否达到所预定的目标、是否保证了软件产品的质量等,可以简称为过程能力。

  9. 3. 软件过程改进 • 三步:软件过程及其实例进行不断优化的活动。 • 过程度量 • 过程评价 • 过程改进

  10. 3.1 软件过程的度量 • 过程度量是针对所指定的软件过程,以某种方式对其过程能力指标实现合理的量化,从而以一定的标准衡量该软件过程的质量。 • 过程度量的特点: • 过程质量静态特征 • 动态特征:过程能力是过程质量的动态表现、是通过过程运作而体现的。因而和产品度量不同,过程度量是同过程运作紧密相关的,只有经过过程运作,过程度量才能体现其“过程”含义,这是过程度量与产品度量的根本区别。

  11. 客观度量与主观度量 • 度量的客观性是指所得到的关于某对象的度量值是该对象的真实描述。 • 例如LOC度量(代码行数)就是具备客观性的度量; • 度量的主观性是指所得到的关于某对象的度量值是由度量者的主观判断得到的,因此所得到的度量值会随度量者的不同而异。 • 如系统的易学习性”的度量值。

  12. 外部输入 输出内容 度量活动 用户问题目标 分析结论 问题解决模型 问题解决 用户解释目标 度量结果 ... ... 解释 解释模型 转换后的度量值 ... ... 度量约束 值转换 度量知识 原 始 数 据 ... ... 数据获取 获取约束 t 获取技术模型 T (过程周期) 过程度量的通用模式

  13. 3.2 过程评价(Evaluation) • 过程评价:以一系列的标准对软件过程的质量进行评定而使软件过程不断改进和优化的系列活动。 • 过程评价/过程评估:SEI在 “评价/评估指南” • “评估指南”:当用户以过程改进为出发点,对自身机构的软件过程进行评定时 • 评定过程现有的过程能力 • 预见其能力,潜在缺陷和改进方向 • “评价指南” 仅是客观评定过程能力当时所达到的程度。

  14. 无论是过程评价还是过程评估,其目的都是:认知过程能力、比较过程能力、改进过程能力。无论是过程评价还是过程评估,其目的都是:认知过程能力、比较过程能力、改进过程能力。 过程评价有多种实现方法,其中过程度量便是一种最有效且最系统化的方法,其他诸如问卷调查、实际走查(walk through)等也是实现过程评价的常用方法。

  15. 3.3 过程改进 过程改进是在软件过程工程中为了更有效地达到优化软件过程的目的所实施的改善或改变其软件过程的系列活动。 • 认知现有软件过程 • 发现软件过程存在的问题和缺陷 • 提出改进的意见 • 软件过程的改进和完善 过程改进的关键是发现软件过程中所存在的问题和缺陷,而过程度量正是发现问题和缺陷的必备手段。

  16. 3.4. 度量模型 过程度量模型就是要研究过程度量 所涉及的属性和问题,从而规范过程度量的内容和步骤,实现过程度量的目标。 1. FCM(Factor Criteria Metric)模型 1976年Bohem等提出定量进行软件质量评价的概念,两年之后,Walters和McCall提出一个质量要素-准则-度量的三层次式软件质量度量模型,其中,要素是软件质量的反映,软件属性可用作评价准则,量化地度量软件属性可反映软件质量的优劣。此后,G.Murine提出软件质量度量技术(SQM),用于定量地评价软件质量。 1991年ISO推出了以FCM模型作为基准模型的标准ISO9126:“信息技术:软件产品评价质量特性及其使用指南”

  17. ISO/IEC 9126质量模型分三个层次:质量特性(6个),质量子特性(21个) • 功能性 Functionality • 适合性Suitability • 准确性Accurateness • 互操作性Interoperability • 依从性Compliance • 安全性Security • 可靠性 Reliability • 成熟性Maturity • 容错性Fault tolerance • 易恢复性Recoverability • 易使用性 Usability • 易理解性Understandability • 易学习性Learnability • 易操作性Operability

  18. 效率 • 时间特性Time behavior • 资源特性Resource behavior • 可维护性 Maintainability • 易分析性Analyzability • 易改变性Changeability • 稳定性Stability • 易测试性Testability • 可移植性 Portability • 适应性Adaptability • 易安装性Installability • 一致性Conformance • 易替换性Replaceability

  19. Factor Criterion Criterion Criterion Metric Metric Metric FCM模型的基本出发点是:通过一种分层结构建立面向用户的质量要素、面向软件过程属性的准则和度量之间的关系,通过对软件过程属性的度量来反映软件过程质量特性。 FCM模型

  20. 以FCM模型为基础构造的度量模型的特点: (1)第一层先定义面向用户(或是“外部的”)的关于软件过程质量的软件特性; (2)第二层通过分解第一层的软件过程外部质量特性,建立可被度量的软件过程内部属性的基本范围; (3)根据第二层指定的基本范围内的软件过程属性,找到使其量化的度量方法,形成第三层。

  21. 3.5过程改进方式 在软件过程工程的各项活动中,过程改进活动是一项综合且需要持续开展的活动. • 软件机构的过程模型, • 具体软件项目的过程实例

  22. 3.5.1 过程改进的对象 • 过程模型 • 过程实例 主要对过程模型改进,这是因为: 1)过程模型代表了一类软件项目的共性,这使得针对过程模型的改进活动比针对具体项目的过程实例的改进活动更具有代表性,因而更加有效; 2)过程模型通常体现了该机构的项目管理和技术管理手段。优秀的软件机构更加注重过程模型的改进,以提高其管理水平。

  23. 3.5.2 过程改进的两种模式 • 目标驱动模式 目标驱动的过程改进模式是指根据一个预先给定的目标,自顶向下制定过程度量或评价模型,有目的地开展相关改进活动的过程改进模式; • 缺陷驱动 模式 缺陷驱动的过程改进模式是指根据过程实施时所产生的关于过程缺陷的反馈信息,进行有针对性改进活动的过程改进模式。

  24. 机构的需求 (1)确定 机构的需求和 过程改进的要求 已被保持 商业目标 的改进结果 已被证实的 已识别的 改进结果 (8)监督改进 (7)维持 范围和优先级 改进的 后的过程性能 改进结果 预备信息 (2)初始化 (6)确认 再评价的要求 过程改进 改进结果 初步的过程改进 再评价 已实现 大纲方案 结果 的改进 (4)分析评价 (3)准备并 评价 (5)实施 经批准的 结果和制定 实施过程评价 结果 改进活动 活动方案 改进活动计划 评价要求 针对能力确定的 工业 过程改进的大纲方案 当前评价 过程模型 标准 能力确定中 的能力 中的实践描述 的目标能力概括 过程改进的通用步骤

  25. 4. CMM软件过程成熟度模型 • CMM(Capability Maturity Model)即能力成熟度模型 • 美国卡内基梅隆大学软件工程研究所(SEI)在美国国防部资助下于二十世纪八十年代末建立的 • 用于评价软件机构的软件过程能力成熟度的模型。 • 主要目的在于为大型软件项目的招投标活动提供一种全面而客观的评审依据,而发展到后来,又同时被应用于许多软件机构内部的过程改进活动中。

  26. CMM可以指导软件机构,通过确定当前的过程成熟度状况,识别对过程改进起关键作用的一些问题,来明确过程改进的方向和策略;通过一组有限的与过程改进的方向和策略相一致的过程改进活动,软件机构便能稳步而有效地改善其软件过程,使其过程能力得到循序渐进的增长。CMM可以指导软件机构,通过确定当前的过程成熟度状况,识别对过程改进起关键作用的一些问题,来明确过程改进的方向和策略;通过一组有限的与过程改进的方向和策略相一致的过程改进活动,软件机构便能稳步而有效地改善其软件过程,使其过程能力得到循序渐进的增长。 CMM提供了一个级别框架: 1级-初始级、 2级-可重复级、 3级-已定义级、 4级-已管理级和5级-优化级。

  27. 软件组织的成熟与不成熟 • 成熟表现 • 不成熟表现

  28. 软件组织的成熟与不成熟 1. 不成熟的软件组织 • 软件过程一般并不预先计划,而是在项目进行中由实际工作人员及管理员临时计划 • 有时,即使软件过程已计划好,仍不按计划执行 • 没有一个客观的基准来判断产品质量,或解决产品和过程中的问题 • 对软件过程步骤如何影响软件质量,一无所知,产品质量得不到保证。而且,一些提高质量的环节,如检查、测试等经常由于要赶进度而减少或取消。

  29. 产品在交付前,对客户来说,一切都是不可见的产品在交付前,对客户来说,一切都是不可见的 • 没有长远目标,管理员通常只关注解决任何当前的危机 • 由于没有实事求是地估计进度、预算,因此他们经常超支、超时。当最后期限临近,他们往往在功能性和质量上妥协,或以加班加点方式赶进度。

  30. 2. 成熟的软件组织 • 具有全面而充分的组织和管理软件开发和维护过程的能力 • 管理员监视软件产品的质量以及生产这些产品的过程 • 制定了一系列客观基准来判别产品质量,并分析产品和过程中的问题 • 进度和预算可以按照以前积累的经验来制定,结果可行。预期的成本、进度、功能与性能和质量都能实现,并达到目的 • 能准确及时地向工作人员通报实际软件过程,并按照计划有规则地(前后一致,不互相矛盾)工作

  31. 凡规定的过程都编成文档 • 软件过程和实际工作方法相吻合。必要时,过程定义会及时更新,通过测试,或者通过成本-效益分析来改进过程。 • 全体人员普遍地、积极地参与改进软件过程的活动。在组织内部的各项目中,每人在软件过程中的职责都十分清晰而明确,每人各守其责,协同工作,有条不紊,甚至能预见和防范问题的发生。

  32. 软件过程成熟度级别 1.初始(initial)级: 软件过程的特点是无秩序的,甚至是混乱的。几乎没有什么过程是经过妥善定义的,成功往往依赖于个人或小组的努力。 2.可重复(repeatable)级: 建立了基本的项目管理过程来跟踪成本、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。

  33. 3.已定义(defined)级: 己将管理和工程活动两方面的软件过程文档化、标准化,并综合成该机构的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。 4.已管理(managed)级: 收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制。 5.优化(optimizing)级: 过程的量化反馈和先进的新思想、新技术促使过程不断改进。

  34. 5.优化级 标准、一致的过程 4.已管理级 可预测的过程 持续改进过程 3.已定义级 2.可重复级 软件过程成熟度 的5个级别 有纪律的过程 1.初始级

  35. 成熟度级别的行为特征 1. 初始级: (1)软件过程的特点是杂乱无章,有时甚至混乱。几乎没有定义过程的规则或步骤。 (2)过分的承诺。常作出良好的承诺:如“按照软件工程方式,有序的工程过程来工作”;或达到高目标的许诺。但实际上却出现一系列危机。 (3)遇到危机就放弃原计划过程,反复编码和测试。 (4)成功完全依赖个人努力和杰出的专业人才,取决于超常的管理人员和杰出有效的软件开发人员。具体的表现和成果都源于或者说是决定于个人的能力和他们先前的经验、知识以及他们的进取心和积极程度。

  36. (5)能力只是个人的特性,而不是开发组织的特性。依靠着个人的品质或承受着巨大压力,或找窍门取得成果。但此类人一旦离去,对组织的稳定作用也消失。(5)能力只是个人的特性,而不是开发组织的特性。依靠着个人的品质或承受着巨大压力,或找窍门取得成果。但此类人一旦离去,对组织的稳定作用也消失。 (6)软件过程是不可确定的和不可预见的。软件成熟性程度处于第一级的软件组织的软件过程在实际的工作过程中被经常的改变(过程是随意的)。这类组织也在开发产品,但其成果是不稳定的,不可预见的,不可重复的。也就是说,软件的计划、预算、功能和产品的质量都是不可确定和不可预见的。

  37. 2. 可重复级: (1) 进行较为现实的承诺,可按以前在同类项目上的成功经验建立的必要过程准则来确保再一次的成功。 (2) 主要是逐个项目地建立基本过程管理条例来加强过程能力。 (3) 建立了基本的项目管理过程来跟踪成本、进度和功能。 (4) 管理工作主要跟踪软件经费支出、进度及功能。识别在承诺方面出现的问题。

  38. (5) 采用基线 (baseline)来标志进展、控制完整性。基线是指已经通过正式评审和批准的某规约或产品(一个版本),可作为进一步开发的基础,并只能通过正式的变更控制规程被改变。 (6) 项目的软件标准均已确定,并且机构应保证能准确地遵循这些标准。 (7) 通过子合同建立有效的供求关系。

  39. 3. 已定义级: (1) 无论管理方面或工程方面的软件过程都己文档化、标准化,并综合成软件开发组织的标准软件过程。 (2) 软件过程标准被应用到所有的工程中,用于编制和维护软件。有的项目也可根据实际情况,对软件开发组织的标准软件过程进行剪裁。 (3) 在从事一项工程时,产品的生产过程、花费、计划以及功能都是可以完全控制的, 从而软件质量也可以控制。

  40. (4) 软件工程过程组 (SEPG)负责软件过程活动 (5) 在全组织范围内安排培训计划。

  41. 4. 已管理级: (1) 制定了软件过程和产品质量的详细而具体的度量标准。软件过程和产品的质量都可以被理解和控制。 (2) 软件组织的能力是可预见的。原因是软件过程是被明确的度量标准所度量和操作。不言而喻,软件产品的质量就可以预见和得以控制。 (3) 组织的度量工程保证所有项目对生产率和质量进行度量,并作为重要的软件过程活动

  42. (4) 具有良好定义及一致的度量标准来指导软件过程,并作为评价软件过程及产品的定量基础。 (5) 在开发组织内已建立软件过程数据库,保存收集到的数据,可用于各项目的软件过程

  43. 5. 优化级: (1) 整个组织特别关注软件过程改进的持续性、预见及增强自身。防止缺陷及问题的发生。不断地提高他们的过程能力。 (2) 加强定量分析,通过来自过程的质量反馈和吸收新观念、新科技,使软件过程能不断地得到改进。 (3) 根据软件过程的效果,进行成本/效益分析,从成功的软件过程实践中吸取经验,加以总结。把最好的创新成果迅速向全组织转移。对失败的案例,由软件过程小组进行分析以找出原因。

  44. (4) 组织能找出过程的不足并预先改进。把失败的教训告知全体组织以防止重复以前的错误。 (5) 对软件过程的评价和对标准软件过程的改进,都在全组织内推广。

  45. 4.1. 能力成熟度模型的结构 每一个成熟度级别由几个关键过程域组成,每一个关键过程域被分解成称为共同特性的五个部分(执行约定,执行能力,执行活动,测量和分析,验证实现 ),这些共同特性包括了关键实践,实现了这些关键实践后,就实现了关键过程域的目标。 每一个成熟级别的分解都由一个抽象的摘要开始,最后到对关键过程实践的操作定义。

  46. CMM结构 成熟度级别 表明 实现 解决 描述 包含 包含 过程能力 目标 实施或制度化 活动或基础设施 关键过程域 划分为 共同特性 关键实践

  47. 成熟度级别(maturity level) 成熟度级别是一个严格定义的、向着达到成熟软件过程目标进发的平台。CMM的顶层结构中包括五个成熟度级别。 每个成熟度级别表示了过程能力的水平。

  48. 关键过程域(Key Process Area,简称KPA) CMM提供了18个关键过程域,除级别1外,每个成熟度级别都包含几个关键过程域。关键过程域确定了实现一个成熟度级别所必须解决的问题。 关键过程域体现了该成熟度级别的要求。为了达到一个成熟度级别,该级别(以及较低级别)的所有关键过程域必须得到满足,并且过程必须规范化。 每一个关键过程域都有一组对改进过程能力非常重要的目标,并确定了一组相应的活动,完成了这些活动,就达到了相应的目标。

  49. 优化级 缺陷预防 技术更新管理 过程更改管理 已管理级 定量过程管理 软件质量管理 已定义级 机构过程焦点 机构过程定义 培训大纲 综合软件管理 软件产品工程 组间协调 同行评审 可重复级 需求管理 软件项目计划 软件项目跟踪和监督 软件分包合同管理 软件质量保证 软件配置管理 能力成熟度级别中的关键过程域 (共18个) 初始级

  50. 关键实践(key practices) 18个关键过程包含316个关键实践。关键实践描述了对关键过程域的有效实施和规范化起最重要作用的基础设施和活动。 • 关键实践描述要做“什么”,但是它们没有强行规定应当“怎样”完成目标。 • 每一个关键实践由一个单独的句子组成,后面常常有更详细的描述信息,这些描述信息可能包括实例和有关该关键实践的详细阐述。

More Related