个体软件过程 PSP
- 格式:rtf
- 大小:142.27 KB
- 文档页数:3
第十三讲CMM、TSP、PSP综述一、前言1984年,美国国防部出资在卡内基·梅隆大学设立软件工程研究所(Software Engineering Institute, 简称SEI)。
SEI于1986年开始研究软件过程能力成熟度模型(Capability Maturity Model, CMM),1991年正式推出了CMM1·0版,1993年推出CMM1·1版。
此后,SEI还完成了能力成熟度模型集成(Capability Maturity Model Integration,简称CMMI)。
目前,CMM2·0版已经推出。
CMM自问世以来备受关注,在一些发达国家和地区得到了广泛应用,近年来,在我国也逐步得到了应用,成为衡量软件公司软件开发管理水平的重要参考因素,并成为软件过程改进的事实标准。
CMM源于工业界的最佳实践,经过SEI的总结、提炼和抽象形成了一个系统地指导软件机构改进软件过程能力的完整框架,它在一定程度上是抽象的模型,它为一般的软件机构提供了指导。
换句话说,它给出了软件机构过程能力改进的一个目标,但在实际操作中,机构应该采取哪些合适的步骤,才能达到这一目标,CMM并未清楚详细地提及,而且关键实践所描述的活动并不一定适合不同背景的所有机构。
针对这种情况,SEI 于1995年后提出了TSP(Team Software Process)和PSP(Personal Software Process),用以改善机构中小组过程能力和个体软件过程能力。
二、CMM简介由SEI提出的CMM描述了有效的软件过程单元的框架,它强调软件机构能一致地、可预测地生产出高质量的软件产品的能力,认为软件产品质量的好坏主要取决于开发和维护该产品所使用的软件过程的质量。
一个有效的软件过程在于能将训练有素的人员、先进的技术、工具和方法有机地结合起来。
CMM将机构的软件过程能力分为5个成熟度级别,分别是初始级、可重复级、已定义级、已管理级和优化级。
个体软件过程PSP模型研究及应用PSP 是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。
PSP 与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。
PSP 模型主要由时间、计划、进度、规模、缺陷和质量六种元素构成的金字塔形,它自底向上可分为三个等级:时间管理层、计划管理层和质量评估层。
时间管理层,由时间一种元素组成,它处于PSP 模型的最底层,是PSP 模型的基础部分,强调时间管理和时间跟踪的重要性,讲述如何使用好时间,管理好时间; 计划管理层,由计划、规模和进度三中元素组成,它处于PSP 模型的中间层,是PSP 模型的核心部分,强调计划的重要性,讲述如何制度有效的计划,如何测量任务规模,如何管理好进度和跟踪项目计划; 质量评估层,由缺陷和质量两种元素组成,它处于PSP 模型的最高层,是PSP 模型的目标部分,它使我们了解自己的任务缺陷和任务质量,为以后减少任务缺陷和提高任务质量提供判断依据,并为个人软件过程的持续改进提供动力。
软件企业大型的ERP 系统ESSP(Enogroup Software Service Portal, 宜诺维信软件服务平台)对PSP 理论模型进行了裁减、修改和扩充,并成功将其运用系统中。
在ESSP中,我们并不是盲目照搬PSP 模型的一般理论,而是根据企业的管理模式、运营模式和企业特点将它的表格、指南和规程进行裁减、修改和补充,使之能满足企业的现实需要,真正改善企业员工的工作效率和工作质量。
ESSP 中PSP 工具是整个企业业务流程流通的核心工具,它支持项目管理子系统、销售管理子系统、人力资源管理子系统和行政管理子系统的个人工作包的计划分解和跟踪,个人工作时间的管理和跟踪,任务进度的管理和跟踪,任务缺陷的管理和排除以及任务质量的评估,同时还支持个人日常报账并将其归并于某个人工作包。
PSP与TSP介绍PSP、TSP与CMMI:发展历史CMM与PSP在20世纪80年代后期到90年代早期,SEI开发了能力成熟度模型(CMM),为软件开发总结了组织级的最佳实践。
SEI特别会员Watts Humphrey决定将CMM的基本原理应用于单个开发人员的软件开发实践中。
个人软件过程(PSP)就是他努力的成果,为单个软件开发人员设计的CMM 五级过程。
CMM与TSP不久大家就发现,虽然使用PSP可以取得优异的结果,但是如果周围的环境不能鼓励并且要求遵守PSP实践,这些必要的规范性是几乎不可能得到维持的。
所以汉弗莱为大多数组织中最小的运作单位——项目组,开发了团队软件过程(TSP),TSP是为项目组设计的CMM5级过程。
在一份SEI技术报告中,记录了使用TSP在满足成本和进度估算的同时达到一流质量水平的最新结果CMM的演变同时,CMM的成功也引发了相似模型的开发以覆盖系统工程(SE-CMM)、集成产品开发(IPD-CMM)、软件采购(SA-CMM)以及人力资源(P-CMM)。
为了缓解模型数量的过快增长,SEI 使用从未正式发布的CMM第二版、系统工程CMM和IPD-CMM开发了能力成熟度模型集成(CMMI),关于PSP何为PSP?个人软件过程(PSP)向工程师显示如何• 管理其项目质量• 做出可以实现的承诺• 改进估算与计划• 减少产品缺陷由于人员成本占据了软件开发的70%,所以工程师的技能与工作习惯很大程度决定了软件开发过程的结果,基于CMM中发现的实践,PSP可以被工程师作为指导,帮助建立开发软件的一套结构化和规范的方法。
PSP是组织计划引入TSP的前提条件。
PSP可以被应用于软件开发过程的许多方面,包括• 小型程序开发• 需求定义• 文档编写• 系统测试• 系统维护• 大型软件系统的加强图一:PSP过程的演化图二到图四显示了工程师经历的部分收益。
图二显示了估算偏差从55%降到27%约两倍的改进。
红色是在第一次的基础上添加的部分。
1. Explain how the number in the Plan column for "Total New & Changed" of the PSPProject Plan Summary form is determined.先把代码主要框架分成几个代码块,然后从历史数据中找到这几个代码块的平均代码行数,加起来。
2. Explain how the number in the Actual column for "Total New & Changed" of the PSPProject Plan自己新写的加上原先代码中修改过的。
3. Though many aspects of a software project contribute to its quality, PSP only uses onemetric for quality. What is it? Why does PSP use a single number to measure quality?缺陷。
找到并修复defects对提高软件质量很重要,即使很多其他的代码数据也对质量很重要;但因为defect是客观的而且是易于计算的,所以使用它。
4. Explain why earned value tracking gives no credit for partially completed tasks.只有一个任务完全完成之后才可以计算积分,一个部分完成的任务没法计算积分。
5. Why is it usually faster to correct errors found in code reviews than in testing?P159课件上:最好在刚刚写完源代码之后和开始编译与测试之前更正错误,因为这时候你最有可能记得代码的意图并且知道如何修改问题。
个体软件过程—PSP
个体软件过程是由美国Carnegie Mellon大学软件工程研究所(CMU/SEI)的Watts s. Humphrey领导开发的,于1995年推出,在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。
PSP是一种可用于控制、管理和改进个人工作方式的
自我改善过程,是一个包括软件开发表格、指南和规程的结构化框架。
PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。
在软件设计阶段,PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计结束准则,而不是设计方法的选择。
根据对参加培训的104位软件人员的统计数据表明,在应用了PSP后,软件中总的差错减少了58.0%,在测试阶段发现的差错减少了71.0%,生产效率提高了20.0%。
PSP的研究结果还表明,绝大多数软件缺陷是由
于对问题的错误理解或简单的失误所造成的,只有很少一部分是由于技术问题而产生的。
而且根据多年来的软件工程统计数据表明,如果在设计阶段注入一个差错,则这个差错在编码阶段引发了3一5个新的缺陷,要修复这些缺陷所花的费用要比修复这个设计缺陷所花的费用多一个数量级。
因此,PSP保障软件产品质量的一个重要途径是提高设计质量。
●个体软件过程-个体软件过程PSP的内容
PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。
PSP能够:
1、说明个体软件过程的原则;
2、帮助软件工程师作出准确的计划;
3、确定软件工程师为改善产品质量要采取的步骤;
4、建立度量个体软件过程改善的基准;
5、确定过程的改变对软件工程师能力的影响。
●个体软件过程-个体软件过程PSP的作用
l、使用自底向上的方法来改进过程,向每个软件工程师表明过程改进的原则,使他们能够明白如何有效地生产出高质量的软件。
2、为基于个体和小型群组软件过程的优化提供了具体而有效的途径。
其研究与实践填补了CMM的空白。
3、帮助软件工程师在个人的基础上运用过程的原则,借助于PSP提供的一些度量和分析工具,了解自己的技能水平,控制和管理自己的工作方式,使自己日常工作的评估、计划和预测更加准确、更加有效,进而改进个人的工作表现,提高个人的工作质量和产量,积极而有效地参与高级管理人员和过程人员推动的组织范围的软件工程过程改进。
●一个成功的软件产品的三要素是:时间,成本,质量。
时间要素是客观存在的,我们没办法改变。
成本在软件企业主要是指人力和时间成本,人力成本是应该用一个合适的人做合适的事,即不出现人才的浪费也不会出人才能力的经验不够的时候。
时间的成本自然是建立在效率的基础之上来谈论的,重点是在时间效率和时间评估这两点之上。
时间效率的重点杜绝浪费,浪费与否谁说了算,过程说了算,谁的过程,当然是自己的过程,团队的过程,组织的过程。
以这样来看,过程的定义是在给定目标、入口、出口、规则的前提下我们所执行的具体的可操作的步骤。
在传统行业的经验来看,生产过程是可以定量,可度度量化
的,而软件的过程更多的是人的过程,相比第一、二次工业革命自动化,工业化,尽量减少人在过程的因素来讲,软件的过程是人的过程,有它的特殊之外,比如0生产过程、人们对这种智力活动产品研制的规律缺乏足够的认识等,但是目标是定量和可度量的并没有改变。
个体软件过程和CMMI同样分为五级;涉及包括,进度,任务,缺陷、时间日志的过程等。
TSP团队的过程在个体软件过程基础上加入分配任务与反馈再分配机制。
个体软件过程的改进
随着软件工程知识的普及,软件工程师都知道,要开发高质量的软件,必须改进软件生产的过程。
目前,业界公认由CMU/SEI开发的软件能力成熟度模型SW-CMM是当前最好的软件过程,并且CMM已经成为事实上的软件过程工业标准。
但是,CMM虽然提供了一个有力的软件过程改进框架,却只告诉我们"应该做什么",而没有告诉我们"应该怎样做",并未提供有关实现关键过程域所需要的具体知识和技能。
为了弥补这个欠缺,Humphrey又主持开发了个体软件过程(Personal Software Process,PSP)。
PSP是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。
PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。
PSP能够说明个体软件过程的原则;帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。
在CMM1.1版本的18个关键过程域中有12个与PSP有关,据统计,软件项目开发成本的70%取决于软件开发人员个人的技能、经验和工作习惯。
因此,一个单位的软件开发人员如能接受PSP培训,对该单位软件能力成熟度的升级是一个有力的保证。
CMM侧重于软件企业中有关软件过程的宏观管理,面向软件开发单位,PSP则侧重于企业中有关软件过程的微观优化,面向软件开发人员。
二者互相支持,互相补充,缺一不可。
按照PSP规程,改进软件过程的步骤大致如图所示。
首先需要明确质量目标,也就是软件将要在功能和性能上满足的要求和用户潜在的需求。
接着就是度量产品质量,有了目标还不行,目标只是一个原则性的东西,还不便于实际操作和判断,因此,必须对目标进行分解和度量,使软件质量能够"测量"。
然后就是理解当前过程,查找问题,并对过程进行调整。
最后应用调整后的过程,度量实践结果,将结果与目标做比较,找出差距,分析原因,对软件过程进行持续改进。
就象CMM为软件企业的能力提供一个阶梯式的进化框架一样,PSP为个体的能力也提供了一个阶梯式的进化框架,以循序渐进的方法介绍过程的概念,每一级别都包含了更低一级别中的
所有元素,并增加了新的元素。
这个进化框架是学习PSP过程基本概念的好方法,它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和水平。
PSP进化框架共有四级,各级及其增强版的主要元素如图所示。
个体度量过程PSP0和PSP0.1
PSP0的目的是建立个体过程基线,通过这一步,学会使用PSP的各种表格采集过程的有关数据,此时执行的是该软件开发单位的当前过程,通常包括计划、开发(包括设计、编码、编译和测试)以及后置处理三个阶段,并要作一些必要的试题,如测定软件开发时间,按照选定的缺陷类型标准、度量引入的缺陷个数和排除的缺陷个数等,用作为测量在PSP的过程中进步的基准。
PSP0.1增加了编码标准、程序规模度量和过程改善建议等三个关键过程域,其中过程改善建议表格用于随时记录过程中存在的问题、解决问题的措施以及改进过程的方法,以提高软件开发人员的质量意识和过程意识。
应该强调指出,在PSP0阶段必须理解和学会使用不合格进行规划和度量的技术。
设计一个好的表格并不容易,需要在实践中积累经验,以准确地满足期望的需求,其中最重要的是要保持数据的一致性、有用性和简洁性。
个体规划过程PSP1和PSP1.1
PSP1的重点是个体计划,引入了基于估计的计划方法PROBE(PROxy Based Estimating),用自己的历史数据来预测新程序的大小和需要的开发时间,并使用线性回归方法计算估计参数,确定置信区间以评价预测的可信程度。
PSP1.1增加了对任务和进度的规划。
在PSP1阶段应该学会编制项目开发计划,这不仅对承担大型软件的开发十分重要,即使是开发小型软件也必不可少。
因为,只有对自己的能力有客观的评价,才能作出更加准确的计划,才能实事求是地接受和完成客户(顾客)委托的任务。
个体质量管理过程PSP2和PSP2.1
PSP2的重点是个体质量管理,根据程序的缺陷善建立检测表,按照检测表进行设计复查和代码复查(有时也称"代码走查"),以便及早发现缺陷,使修复缺陷的代价最小。
随着个人经验和技术的积累,还应学会怎样改进检测表以适应自己的要求。
PSP2.1则论述设计过程和设计。