一、引言1、过程是活动的集合,软件过程是与软件开发与维护相关的活动的集合。 2、过程管理是制定过程和对过程活动进行动态监管。软件过程管理的目的是最大限度地提高软件产品的质量和软件开发过程的生产率。 3、软件过程管理的途径:软件过程模型→ 组织标准软件过程→ 项目定义软件过程→ 过程实施与监控→ 软件过程改进。 4、过程的分类:产品实现过程;管理过程;支持过程。在软件过程中,产品实现过程被称为“工程过程”。
软件工程( Software Engineering) l 指导计算机软件开发和维护的工程科学。 l 旨在确定软件开发技术规范,其中软件开发技术包含:软件开发方法学、软件工具和软件工程环境。 l 应用计算机科学(用于构造模型预算法)、工程科学(用于制定规范、设计模型、评估成本及权衡利弊)和管理科学(用于计划、资源、质量、成本等管理)的基本原理。 l 与其他工程的区别:产品是程序。 l 特点:规范化、文档化。
l 软件过程是指软件开发人员开发和维护软件以及相关产品(如项目计划、设计文档、代码、测试用例和顾客手册)的一套行为、方法、实践以及变化过程。 l 软件过程管理的重要前提是:软件产品质量的好坏主要取决于开发和维护该产品所使用的软件过程质量。 l 有效的软件过程可将人员、工具和方法进行有机结合。
二、软件与软件产业的发展过程软件过程管理 l 对软件开发全过程规范化及标准化的管理。 l 软件过程管理技术包括:软件管理学和软件工程经济学。 l 目前,国外普遍采用的软件过程管理方法是:美国卡内基·梅隆大学软件工程研究所(SEI) 提出的软件能力成熟度模型(SW-CMM)。 l 目的:研究如何有效地对软件开发项目进行管理,以便按照进度和预算完成软件项目计划,实现预期的经济效益和社会效益。 l 包括:成本估计、进度计划、人员组织、质量保证等。
三、软件危机及其原因软件成本高软件特殊性 l 软件开发的进度难于控制 l 估计软件工作量很困难 l 软件质量难于保证 l 修正维护软件困难
软件项目出现的典型问题 l 缺少用户的参与 l 需求及其说明不完整或经常变更 l 项目得不到高层管理者的支持 l 技术能力不足或对新技术不熟悉 l 资源投入不足 l 预期要求过高 l 项目目标不清晰 l 人员配合存在问题
四、过程及其要素l 软件开发项目是在规定的成本和时间内,开发和提交满足客户某些需求的软件产品。 l 项目的三个基本特征是:成本、进度和质量(代表软件在多大程度上满足客户的要求)。 l 一个项目的成功与否在于它是否达到或者超过成本、进度或者质量的预期目标。 l 项目失败的原因可能有:不正确的估计、松散的需求管理、薄弱的项目管理、不正确的风险管理以及不好的工程解决方案等,这些原因都可以归结为过程失败(用于执行软件项目的过程)。
软件项目失控的主要原因是: 过程失败 l 目标不明确 l 计划差 l 没有项目管理方法 风险管理 l 使用新技术 l 没有足够的人员
软件过程: l 软件过程是指软件开发人员开发和维护软件以及相关产品(如项目计划、设计文档、代码、测试用例和顾客手册)的一套行为、方法、实践以及变化过程。 l 软件过程管理的重要前提是:软件产品质量的好坏主要取决于开发和维护该产品所使用的软件过程质量。 l 有效的软件过程可将人员、工具和方法进行有机结合。 l 对于机构而言,包含多个项目,而实现机构的高质量和生产率,依赖于三个因素:过程、人和技术。 l 其中过程不仅仅是一系列步骤,还包含了机构所积累的经验,包含了机构可以从已成功的项目中所学到的一切。 l 通过以过程的形式获取成功的经验,并在将来的项目中使用这些过程,机构就可以确保项目的持续成功。 l 过程在有效地控制机构发展方面充当了关键角色。
一个组织的生产率及其产品的质量取决于所采用的过程的质量。——Watts S.Humphrey
不成熟过程和成熟过程的比较
不同成熟度的过程管理特征
基本术语 软件过程能力software process capability:描述了遵循某软件过程可能达到的预期结果的范围。 软件过程效能(性能)software process performance:表示遵循一个过程所达到的实际结果的一种度量。 由于项目要求和客观环境的差异,软件过程性能不可能充分反映软件过程的整体能力,即软件过程能力受限于它的环境。 软件过程成熟度:是指针对具体的软件过程进行明确定义、管理、测量、控制以及有效的程度。表明软件工程能力增长的潜力,表明机构软件过程的丰富性以及其应用于项目的一致性。
过程管理原则(五个) 过程的稳定性: 片面强调个性的过程不可能进行有序而持久改进。 过程的明确性: 组织必须识别复杂过程的关键步骤,将关注焦点放在对其改进上。 过程和产品检验: 过程检验和产品检验同样重要。 系统方法: 孤立地解决问题将导致过程恶化。 过程支持: 不要期望过程能通过自身获得改进。
五、CMM与软件产业软件产业与CMM的提出 l 专门针对软件产业制定的CMM认证体系(SW-CMM) l 世界上软件发展的水平参差不齐。 n 美国、欧洲、日本和印度等国家:水平高、质量好、规模大 n 我国进展显著,发展速度相对落后。
六、CMM的发展过程什么是CMM l CMM概况 l 用于解决“软件危机” l 将工程的概念、原理、技术和方法引入了软件系统开发,在一定程度上解决了软件生产过程中遇到的问题。软件工程成为软件产业的重要分支。 l 管理是影响软件研发项目全局的因素,而技术只影响局部。 l 1987年9月,美国卡内基-梅隆大学软件工程研究所发布了软件过程成熟度框架,并提供了软件过程评估和软件能力评价两种评估方法和软件成熟度提问单。 l 4年之后,SEI将软件过程成熟度框架进化为软件能力成熟度模型(Capability Maturity Model For Software,简称SW-CMM)。 l 自CMM 1.1发布起,SEI相继研制并发布了“人员能力成熟度模型”(P-CMM),“软件访问能力成熟度模型”(SA-CMM)和“系统工程能力成熟度模型”(SE-CMM)及其支持文件。 l 经过试运行,产生了把SW-CMM, P-CMM, SA-CMM和SE-CMM合并在一起的想法,于是开始了名为“综合能力成熟度模型”(英文缩写为CMMI)的一个综合性模型投入研制。 l 围绕以CMM为基础的软件过程评估和软件能力评价,建立了从审核员培训到提供评估和评价的一整套服务体系。
CMM的理论基础 “丹明链” “全面质量管理” “质量管理顾问公司(质量研究所)”
SEI给CMM下的定义 对于软件组织在定义、实现、度量、控制和改善其软件过程的各个发展阶段的描述。这个模型便于确定软件组织的现有过程能力和查找出软件质量及过程改进方面的最关键的问题,从而为选择过程改进战略提供指南。
CMM的发展方向 CMM的主要特点 l 基于实际实践 l 最好的反映了实践的情况 l 反映了软件过程改进和软件过程评估执行人员的需求 l 形成文档 l 文档可以公开使用 CMM是活的文档,在稳定性需求和不断的过程改进之间提供适当和实际的平衡点。
l CMM为软件企业的过程能力提供了一个阶梯式的进化框架,它基于过去所有软件工程成果的过程改善的框架,吸取了以往软件工程的经验教训。 l 它指明了一个成熟的软件组织在软件开发方面需要管理的那些主要工作、这些工作之间的关系、以及以怎样的先后次序,一步一步的做好这些工作使软件组织走向成熟。是目前国际上最流行也是最实用的软件生产过程标准。
CMM的用途包括:软件过程改进;软件过程评估;软件组织开发能力评价.但它不是特定的软件开发技术。 设计CMM,就是为了指导软件企业通过判断当前自身的过程成熟度,提出几个对软件质量和过程提高最为关键的问题,以此来选择过程的提高策略。 CMM是一个模型,人称“事实上的标准”
为什么我们需要学习CMM 对软件企业而言: l 规范软件开发过程及其管理 l 规范市场竞争 l 帮助企业进行内部软件过程改进 l 增加企业的国际竞争力 l 降低软件开发风险
理解CMM需要注意以下几点 l 它仅指明该做什么,而没有指明如何做,它不是方法论。 l 它仅指明该做的关键内容,它仅描述软件过程的本质属性,而并非面面俱到。抓问题的主要方面的思想贯穿在整个CMM模型中。 l 软件过程是指软件工程过程、软件管理过程和软件组织的过程三者的有机结合。 l 它是从软件过程的角度考虑问题,而并非关注软件开发工具。 l CMM为改善整个企业的软件过程提供了指南,而并非针对某个具体项目。 l SW-CMM认为过程的不断改进基于许多小的、进化的步骤而不是革命性的创新。 l 基于CMM的过程改善投资力度大、周期长,而技术投资则可能在短期内有较快回报。单独依靠技术改进可能在短期内有较快回报,但最终可能一无所获。
ISO 9001与CMM异同 CMM与ISO9001的设计思路不同,并且一个是“专用”,一个是“泛用”,因此,尽管两者都由于涉及质量管理和过程而有着相似之处,但也存在很大差别。
与ISO标准系列相比,CMM更为软件产业所看好 原因是它专门针对软件工程控制而设置的,不仅进行软件企业工程能力的评估,更致力于软件开发过程的管理,强调“对软件开发过程进行持续改进”,引导软件开发过程走向成熟。
七、CMMI简介CMMI的起源 l CMMI 的全称为Capability Maturity Model Integration,即能力成熟度模型集成。CMMI是CMM模型的最新版本。 l CMMI 有两种表示方法,一种是大家很熟悉的,和软件CMM 一样的阶段式表现方法,另一种是连续式的表现方法。 l 这两种表现方法的区别是:阶段式表现方法仍然把CMMI 中的若干个过程区域分成了5 个成熟度级别,帮助实施CMMI 的组织建议一条比较容易实现的过程改进发展道路。而连续式表现方法则通过将CMMI 中过程区域分为四大类:过程管理、项目管理、工程以及支持。 l CMMI不是传统的、仅局限于软件开发的生命周期,它应该被运用于更广泛的一个范畴——工程设计的生命周期。TSP的建立,也是为了支持CMMI的这样一个系统。 l 用一句话来概括什么是CMMI,它就是各个进程的一个关键的元素,在很多领域里面一个集成的点。
CMMI的两种实施方法 CMMI有两种不同的实施方法,不同的实施方法,其级别表示不同的内容。 CMMI的一实施方法为连续式,主要是衡量一个企业的项目能力。企业在接受评估时可以选择自己希望评估的项目来进行评估。仅仅表示企业在该项目或类似项目的实施能力达到了某一等级。 而另一种实施方法为阶段性。它主要是衡量一个企业的成熟度,亦即是企业在项目实施上的综合实力。企业在进行评估时,一定要由评估师来挑选企业内部的任何项目,甚至于任何项目的任何部分。 |
|