软件工程化和 cmm

49
软软软软软软 CMM 解解解解解解解 解解解

Upload: fordon

Post on 15-Mar-2016

272 views

Category:

Documents


7 download

DESCRIPTION

软件工程化和 CMM. 解决软件危机的一种方法. 软件危机的产生. 1 . 正在运行的计算机软件的数量正以惊人的速度急剧膨胀,软件规模庞大,耗资巨大。 2. 微电子技术的进步,计算机软件已经成为限制计算机系统发展的关键因素。 3. 在计算机系统开发早期时代所形成的一些错误观点和做法,已严重的影响了计算机的开发,更严重的是用错误的方法开发出来的许多大型软件几乎根本无法维护,只好提前报废,造成大量人力、物力的浪费 。. 软件危机的具体表现. 1. 对软件开发成本和进度的估计常常很不准确。 2. 用户对“已完成的”软件系统不满意的情况经常 发生。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 软件工程化和 CMM

软件工程化和 CMM

解决软件危机的一种方法

Page 2: 软件工程化和 CMM

2

软件危机的产生 1. 正在运行的计算机软件的数量正以惊人的速度急剧膨胀,软件规模庞大,耗资巨大。 2. 微电子技术的进步,计算机软件已经成为限制计算机系统发展的关键因素。 3. 在计算机系统开发早期时代所形成的一些错误观点和做法,已严重的影响了计算机的开发,更严重的是用错误的方法开发出来的许多大型软件几乎根本无法维护,只好提前报废,造成大量人力、物力的浪费。

Page 3: 软件工程化和 CMM

3

软件危机的具体表现1. 对软件开发成本和进度的估计常常很不准确。2. 用户对“已完成的”软件系统不满意的情况经常发生。3. 软件产品质量往往靠不住。4. 软件常常是不可维护的。5. 软件通常没有适当的文档资料。6. 软件成本在计算机系统总成本中所占的比例逐年上升。7. 软件开发成本生产率提高速度远跟不上计算机应用迅速普及深入的趋势。

Page 4: 软件工程化和 CMM

4

由于软件所引起的后果 海湾战争中,一枚飞毛腿导弹刺入爱国者反导弹的外壳中,打中了位于沙特的一座军营,造成 28 名美国军人死亡, 98 人受伤,其原因是爱国者导弹的软件包含一个累加计时故障,其导弹在设计时规定运行几小时,时钟将复位。该故障从未产生重大影响,因而没有被发现,而在战争中,此导弹的电池连续运行 100 多个小时,这使累计时间差变的太大,导致系统错误。 在战争期间,美军将爱国者导弹运往以色列,防卫飞毛腿导弹。以色列军队 8 小时就发现了此错误,立即向美国导弹生产商报告。后者以最快的速度修正了错误,但新软件在军营被飞毛腿导弹击中后一天才到达。

Page 5: 软件工程化和 CMM

5

软件工程的基本原理 1. 用分阶段的生命周期计划严格管理 2. 坚持进行阶段评审 3. 实行严格的产品控制 4. 采用现代程序设计技术 5. 结果应能清楚的审查 6. 开发小组的人员应该少而精 7. 承认不断改进软件工程实践的必要性

Page 6: 软件工程化和 CMM

6

软件生命周期模型 1. 边做边改模型 2. 瀑布模型 3. 快速原型模型 4. 增量模型 5. 螺旋模型

Page 7: 软件工程化和 CMM

7

软件工程研究的新领域 1.CASE 2.CMM 3. 软件构件技术 4. 面向对象技术 5.UML 6.XML 7. 可移植软件系统的开发

Page 8: 软件工程化和 CMM

工程化软件的开发与研究

Page 9: 软件工程化和 CMM

9

软件工程化产生的背景解决软件危机的有效途径传统建模方法的弊端软件工程化研究的内容

软件工程化的研究意义

Page 10: 软件工程化和 CMM

10

失之毫厘,谬之千里——由于软件开发过程中存在错误而导致的积累与放大效应原始要求

正确的规格说明 错误的规格说明需求分析设计 正确的设计 错误的设计 对错误说明的设计编码 正确编码 对错误说明的编码 错误编码 对错误设计的编码测试 正确功能 潜伏的错误 不可改正的错误 可改正的错误

不完善的软件

Page 11: 软件工程化和 CMM

11

软件危机的形成

高 中 低分析 设计 编程 测试 维护

修改错误的阶段

代价(成本、质量、效率)原始要求

正确的规格说明 错误的规格说明需求分析

设计 正确的设计 错误的设计 对错误说明的设计

编码 正确编码 对错误说明的编码错误编码 对错误设计的编码

测试 正确功能 潜伏的错误 不可改正的错误 可改正的错误

不完善的软件

软件危机的形成

Page 12: 软件工程化和 CMM

12

实体 -关系图数据流图

设计方案分析结果

OO程序非OO设计方案

传统建模方法面临严重困境 ——三条难以逾越的鸿沟

Page 13: 软件工程化和 CMM

13

软件产业自身的特点我国软件产业的现状解决传统的软件开发的弊端解决软件危机的需要

软件工程化产生的背景作用

Page 14: 软件工程化和 CMM

14

软件复用技术工程环境技术软件实用技术软件规范化技术软件过程化技术

软件工程化的研究内容典型应用

Page 15: 软件工程化和 CMM

CMM

软件能力成熟度模型

Page 16: 软件工程化和 CMM

16

软件能力成熟度模型概念产生的背景研究 CMM 的意义国外的发展现状国内的发展现状

Page 17: 软件工程化和 CMM

17

国外发展现状CMM分为五个等级,目前世界上通过CMM认证的软件企业共有 400 多家,其中通过二级认证有 243 个三级认证的有 100 个四级认证的有 60 个五级认证的有 13 个

返回

Page 18: 软件工程化和 CMM

18

国内发展现状目前,我国的软件企业通过 CMM二级认证的软件企业不超过 10家,而通过三级认证的企业仅有 1家(由 IBM公司和清华大学共同支柱的鼎新软件开发公司),同印度的软件企业相比,我们虽然比他们早起步了 10 年,但是目前我国的软件产品出口仅为印度的 1% 。印度有 7家软件企业通过了五级认证。 返回

Page 19: 软件工程化和 CMM

19

产生的背景 CMM 在 1996 年由 Carnegie-Mellon 大学软件工程研究所 SEI 的 Watts Humpherey提出的。 CMM 的基本思想是:由于许多的软件开发过程中的问题是由管理软件过程方法引起的,所以新软件的技术的运用不会自动提高生产率和利润率。

Page 20: 软件工程化和 CMM

20

1987 年诞生于美国; 5 层的分层进化结构;使用过程成熟度的概念来标志软件组织开发软件产品的能力;

1 .初始级1 .初始级过程能力不可预知

5 .优化级 软件过程持续改进

2 .可重复级可以重复以前的成功

3 .已定义级组织的标准软件过程

4 .定量管理级软件过程可预测和控制

返回

Page 21: 软件工程化和 CMM

21

引进 CMM 的目的 1. 在软件生命周期的维护阶段花费的比例接近 70% 。( HP公司大约有 60%---8

0% 的研究人员和开发人员都涉及到维护工作) 2. 软件产品的特殊性。 3.目前世界范围内的的软件开发现状(维护费用高、软件开发周期过长、软件产品不能按期的交付使用)

返回

Page 22: 软件工程化和 CMM

22

软件能力成熟度模型的概念CMM( Capability Maturity Model)。它与传统的软件生命周期模型不同,它不是一个软件生命周期模型,而是一种改进软件过程的策略。它与实际的使用的模型无关。

Page 23: 软件工程化和 CMM

23

1.CMM 明确的定义了五个不同的成熟的等级。(国外的情况) 2.CMM 的软件过程完善是不可能在一夜之间完成的。(尤其是从第一级到第二级的过度) 3.CMM 是以增量方式逐步引入变化的。

返回

Page 24: 软件工程化和 CMM

24

意义自从人类发明数字计算机以后,计算机软件的开发一直是广泛应用计算机的瓶颈。研究新的软件开发方法和技术以提高计算机软件的生产率和质量一直是软件工程研究的焦点。大约在 1987 年前后,美国工业界和政府部门开始认识到,在软件开发过程中,最关键的问题是软件开发组织不能很好的定义和管理其软件过程,从而使一些好的开发方法和技术都得不到所期望的作用。而 CMM是一个分级的模型,其分层结构基于已有 60 多年历史的产品质量原理建立起来的。该框架为软件过程的定量控制建立了项目管理和项目工程的基本原则,这是软件过程得以不断改进的基础。

返回

Page 25: 软件工程化和 CMM

25

200000行的数据处理产品由 CMM的第一级到第五级的组织开发时的数据CMM级 持续时间

(月)工作人月数

交付用户时发现的故障

开发过程中的故障

开发的总费用($)

第 1级 29.8 593.5 61 1348 5440000

第 2级 18.5 143.0 12 328 1311000

第 3级 15.2 79.5 7 182 728000

第 4级 12.5 42.8 5 97 392000

第 5级 9.0 16.0 1 37 146000

Page 26: 软件工程化和 CMM

26

CSCMM 能力成熟度模型 0.初始级( Initial) 1. 基本级( basic) 2. 可重复级( Repeatable) 3. 已定义级( Defined) 4. 已管理级(Managed) 5.优化级( Optimizing)

Page 27: 软件工程化和 CMM

27

CMM的内部结构CMM的相关概念CMM的关键过程域运用CMM进行软件过程改进时的注意事项

CMM的相关知识

Page 28: 软件工程化和 CMM

28

CMM 的内部结构成熟度等级度等级

过程能力 关键关键过程域过程域

目标标 关键实践类

有关职责和目的 关键实践关键实践

基础设施或活动

指示 包含含

达到 组织成一些织成一些

阐述包含若干

描述

Page 29: 软件工程化和 CMM

29

关键过程域:每个关键过程域只与特定的成熟度等级直接相关,它指明一组相关的实践活动,当这些活动全部完成时,就能达到对增强过程能力至关重要的若干个目标。

关键实践:一个关键过程域的关键实践表示,实施这些关键实践是实现该关键过程域目标的必要条件关键实践类:制定方针政策、确保必备条件、实施软件过程和检查实施情况

相关概念

Page 30: 软件工程化和 CMM

30

CMM 的关键过程域优化级

技术革新管理过程更动管理缺陷预防

定量管理级

定量过程管理定量质量管理

已定义级组织过程焦点组织过程定义培训大纲

集成软件管理软件产品工程组间协调同行评审

可重复级软件项目跟踪和监督软件子合同管理软件质量保证软件配置管理

Page 31: 软件工程化和 CMM

31

过程改进时需要注意的事项1、对改进模型的充分理解(能力成熟度模型和包括于每一个关键过程域中的关键实践);2、理解自己组织的实际的实践活动和模型所要求的实践活动之间的差异;3、定义满足改进目标的必要过程;4、确保改进过程被实施并且能够持续的改进。

Page 32: 软件工程化和 CMM

32

不断改进的软件开发过程是软件工程的基本原理之一;软件过程改进是软件生存周期的基本过程之一;目前软件过程改进技术有三大流派;CMM 得到了学术界和工业界公认;用工程化的思想推动软件产业发展;用工程化的思想推动软件产业发展;达到与世界软件水平同步的目标;达到与世界软件水平同步的目标;

研究基于 CMM软件过程改进的意义特点

Page 33: 软件工程化和 CMM

33

建立了软件过程改善组织提出了基于CMM的评估剖面图提出了环境对过程改进的影响模型和支持工具模型设计了基于CMM的教务系统方案形成了与传统的开发方法不同的教务系统改进框架利用PSP设计了详细的开发流程制定了保证软件过程改进顺利实施的条件

CMM在教务系统中的应用

Page 34: 软件工程化和 CMM

34

建立教务系统软件过程改善组管理委员会

SEPG

工作组 技术支持组培训组 工具组 信息组

Page 35: 软件工程化和 CMM

35

环境因素对软件过程改进的影响当前项目状态前项目状态 有关项目的信息项目决策

活动

环境因素

Page 36: 软件工程化和 CMM

36

基于 CMM教务系统软件过程改进设计成熟度等级关键过程域域度等级

建立软件过程改善组善组善组目标制定改制定活动计划进活动计划

较低的成熟度等级的成熟度等级等级

较高的成熟度等级高的成熟度等级系统自身特点进行软件过程改进环境因素

评估当前系统

改进过程

是否满足改进要求要求

形成过程改进框架是

Page 37: 软件工程化和 CMM

37

形成教务系统软件改进框架

高层设计高层设计评审循环开发

详细设计和设计评审测试开发和评审实现和代码评审编译测试

再评估和再循环

需求和计划

Page 38: 软件工程化和 CMM

38

利用 PSP 所形成的软件开发流程需求分析 高层设计 详细设计

系统测试计划

集成计划

编码

产品

单元测试

验收测试

集成

系统测试

评估当前系统

文档安装

需求文档 设计文档 编码文档

Page 39: 软件工程化和 CMM

39

教务系统改进过程中的支持工具人员管理工具

过程流程工具过程文档工具 评审工具

明确责任人 负责各项活动支持 审查并记录

Page 40: 软件工程化和 CMM

40

首先必须对当前系统的过程改进进行评估,找出当前系统的弱点,从而作为软件过程改善的基础。评估可以依据 CMM 所提供的标准来进行,由管理委员成员和软件过程改善组的成员组成评估组对当前的系统进行评估。我们可以通过填写的 CMM 提问单的来对当前的系统进行分析和响应,根据响应和分析的结果,召开座谈会、对文档资料进行复审,以便进一步了解软件开发所遵循的软件过程,在这个过程中应当以 CMM 中的关键过程域和关键实践作为基础,以便更好的确定所考察的实践与 CMM 之间存在的差异,同时形成文档作为今后过程改进的基础和理论依据。另外评估组成员也可以根据评估结果制作 KPA 剖面图,标明该软件开发组织以满足和未满足的其目标的关键过程域,同时在评估的过程中我们也可以聘请一些有经验的软件过程改进人员来参与软件组织的评估活动,进而能够确定过程改进中关键过程域和关键实践的优先级。

基于 CMM的软件过程评估过程

Page 41: 软件工程化和 CMM

41

关于 CMM调查单形式关于调查者的基本信息关于调查者的背景

关于调查者回答问题的响应方式关于关键过程域和关键实践的响应

Page 42: 软件工程化和 CMM

42

教务系统的评估结果关键实践 成熟度等级 表示

软件项目跟踪和监督 2软件子合同管理 2软件质量保证 2软件配置管理 2组织过程焦点 3组织过程定义 3培训大纲 3集成软件管理 3软件产品工程 3组间协调 3同行评审 3定量过程管理 4定量质量管理 4技术革新管理 5过程更动管理 5缺陷预防 5

其中: 代表没有进行的关键实践; 代表已经进行的关键实践; 代表一个关键过程域可能是已满足要求的,但仍可能会有一些相关的问题要解决。

Page 43: 软件工程化和 CMM

43

保证软件过程改进顺利进行的措施软件开发组织负责人的支持

始终将软件的过程改进放到首要的位置制定严格的时间管理

软件过程改进出现问题时能够及时改正软件质量的保证策略

Page 44: 软件工程化和 CMM

44

制定严格的时间管理的相关事项进度管理

7月 8月编号 名称 8/7 15/

722/

729/

75/8 12/8 19/8 26/8

1 需求分析2 结束 ○3 估算进度4 总体设计5 详细设计6 数据库设计7 完成 ○

项目名称:JWC作者:陈晶日期:20/7/01

Page 45: 软件工程化和 CMM

45

时间跟踪日志日期

开始时间

结束时间

中断时间

净时间 活动 备注 C U

9/ 9 8: 00 10:00 120 编程序 VB

9/ 10 20:00 22:00 10 110 调试录入模块

X 2

Page 46: 软件工程化和 CMM

46

根据以往时间来进行估算程序 时间(分钟) 逻辑代码行

分钟/逻辑代码行

功能

1 93 10 9. 30 简单的 whi l e- l oop2 69 11 6. 27 小的 case语句3 114 14 8. 14 大的 case语句4 95 14 6. 79 中等的 repeat-unti l5 151 18 8. 39 小的链表6 158 20 7. 90 小的计算

程序逻辑代码行

以前的功能 估计的功能 最小 平均 最大

Loop1 10 简单的 whi l e- l oop循环4 14 中等的 repeat-unti l 循环 Repeat unt i l 7 11 14

Case2 11 小的 case语句 case 5 8 113 14 大的 case语句

Data5 18 小的链表

Cal c6 20 小的计算 cal cul ate 10 15 20

估计 22 34 45

Page 47: 软件工程化和 CMM

47

软件产品质量保证利用质检比进行预测因此,我们把没有发现缺陷的编译时间定义为 CA,有缺陷改正的编译时间为

CF,因此总的编译时间是 CA+ CF = C;同理,总代码复查时间为 RA+ RF = R和总的测试时间为 TA+ TF = T。使用这些数值,就可将质检成本、过失成本和质检/过失比(A/ FR)定义如下:

AC = 100 * (RA + CA + TA)/(总开发时间)FC = 100 * (RF + CF + TF)/(总开发时间)A/ FR = 100 * AC/ AF

其中 A/ FR是一种有用的度量方法,在教务系统的软件开发过程中我们发现 A/ FR能很好的指示测试中发现缺陷的可能性。

Page 48: 软件工程化和 CMM

48

A/FR的估算结果和结论6543210

每千 行代 码测 试缺 陷 5 10 15 A/FR

从图中我们可以看出当 A/ FR的值小于 1时,测试一般会发现很多错误;当 A/ FR大于 2时,每千行源代码都只有很少几个缺陷,因此应当尽力使 A/ FR的值大于 2。

相关结论

Page 49: 软件工程化和 CMM

49

CMM的未来发展趋势集成的 CMM 即 CMMI

CMMI

SW--CMM SDCEPSP

PeopleCmm

SA--CMM

FAA--iCMM

SE--CMM SECM*(EIA/IS731)

SCE

ISO 15540* ( SPICE )

IPD--CMM*

DOD IPPD