用数据管理过程

摘要:php

用数听说话,这是当前很流行的话题,本文将数据管理过程划分红4个层次,并阐述企业如何达到这四个层次。性能

1.初级量化管理:以数据“感知”项目的情况(至关于CMMI2级)测试

2.中级量化管理:经过经验值来管理项目(至关于CMMI3级)大数据

3.高级量化管理:用PCB进行项目管理(至关于CMMI4级)优化

4.超级量化管理:持续优化的量化管理(至关于CMMI5级)编码

 

 

1. 前言spa

量化方面相关资料、理论很是多,如:六西格玛、统计过程控制(SPC)、过程能力基线(PCB)、软件度量、功能点法、软件估算等等。关于量化方面文章,你们可能难以把各文章的内容在脑壳中组织成一面知识网,主要由于各文章按照各自的角度阐述问题。咱们须要一个统一的角度来描述这些事情,这里咱们就以CMMI的为参考标准,对全部的量化理论进行“格式化”。设计

为了阐述方便,这里咱们把与量化有关的内容,所有统称为“量化管理”,量化管理大体能够分为如下四个级别:3d

1) 初级量化管理-感知级,至关于CMMI2级。对象

2) 中级量化管理-经验级,至关于CMMI3级。

3) 高级量化管理-可预测级,至关于CMMI4级。

4) 超级量化管理-持续优化级,至关于CMMI5级。

高级别的量化管理,必知足全部低级别量化管理特色,例如高级量化管理,它具有初级量化管理、中级量化管理的特色,又具有自己的特色。

 

 

2. 量化管理的第一基本法则

咱们为何要用“功能点法”来估计项目的规模?

咱们为何要度量项目的工时、费用?

咱们为何要作量化管理?

若是咱们不用量化管理的方式,也能达到量化管理的效果,并且成本更低,那还要不要进行量化管理?

当咱们面对铺天盖地的量化理论的时候,当咱们要考虑要作量化管理的时候,首先要问本身的问题就是:为何要作量化管理?

咱们回答一下这个问题:为何要用“功能点法”来估计项目的规模?

若是老板想这样作,估计他感受到项目的估算不是很准,他但愿经过一些量化的办法,让项目的估算作得更准。因此,他的要进行量化管理的目的是:提升估算的准确率。

这就是老板的完整目标吗?若是员工们不计成本地把功能点法作好了,估算误差提升到不超过5%,但估算工做须要的时间由原来的5天增长到50天,这样老板会接受吗?其实老板还有隐含的约束条件,就是不能太花成本。

若是把老板的目标再完整表达一下,应该是:在必定的时间成本要求内,提升估算的准确率。

不管咱们作什么量化的工做,都必须先明确:

 

量化管理第一基本法则:明确量化管理的目的及约束条件。

“功能点”法是比较复杂并且难掌握的软件规模度量办法,有可能在研究使用的过程当中,才发现不值得用“功能点”法,你们再反过来看看目标:在必定的时间成本要求内,提供估算的准确率,而不是:在必定的时间成本要求内,用功能点法提升估算的准确率。这时,你们能够选用别的办法,或者对“功能点”法进行改造。在制定目标的时候,不要把具体的方法写进去,目标是很高层次的,把办法写进去,也就是至关于限制了思路。

有人可能会说,“在必定的时间成本要求内,提升估算的准确率”,这个目标太虚了吧,写了等于没写。其实正是由于没有明确这个“虚”的目标,不少量化管理的工做变成就是为了量化管理而量化管理。其实六西格玛、统计过程控制(SPC)、过程能力基线(PCB)等量化管理办法,都要有很明确的目的。

若是企业对量化管理的目标都不明确的话,那就很是很差意思了,连初级水平都不是,是属于“无级别”的水平。

 

 

3. 初级量化管理-感知级

有不少软件企业,在项目过程当中,须提交一些进度报告、总结报告,报告中可能会有进度状况、成本状况的一些数据。收集这些数据的目标也十分明确,就是想了解项目的进度、成本状况,并与计划的状况进行比较,采起必要的措施。

例:进度报告(节选)

 

在软件测试中,会记录各种缺陷的状况,而且在测试报告中报告缺陷的一些数据。项目组会根据缺陷方面的数据,分析软件的质量,并考虑后续的改进措施。

例:测试报告(节选):

总缺陷数量:50

 

建议:须要在后续版本中修复没有解决的缺陷。

 

“感知级”的企业,有这样的一些特色:

1) 有明确的度量目的。

2) 有度量值的比较基准,如例子中的计划完成时间与实际完成时间的对比。

3) 被度量对象的属性定义得比较清楚,如上例中缺陷的属性。

4) 对度量的结果进行分析,而且要考虑改进措施。

“感知级”的企业,应该知足CMMI2级中MA(度量)这个PA的要求的(请参考CMMI相关标准)。

 

但下面这种状况,算不算“感知级”呢?

在项目总结报告中,统计项目进度、成本等状况,分析与计划比较的差别,提出对之后有用的改进意见。

若是只在项目总结报告的时候,才进行度量的话,是不能算“感知级”的,度量的结果要能用于项目管理,而不是项目结束后了统计出到一些数字,尽管这些数字能够用来改善之后的工做,但对该项目自己工做的改善已经没有任何做用了。

达到初级量化管理的企业,能明确量化管理的目标,经过合适的度量办法,“感知”项目的各种参数,并根据各度量指标的实际数值,采起改善项目行为的措施。

 

 

4. 中级量化管理-经验级

进行量化管理过程当中,咱们能获得各种参数值,但该参数值应该怎样才算合理呢?例如进度误差多少才算合理?遗留缺陷数量多少个才算合理?

前面提到用“功能点”法来估算项目的规模,而后咱们能够由规模导出工做量,但规模与工做量是怎样的一个关系呢?怎样根据规模导出工做量呢?相同规模的软件,不一样的软件企业来作,导出的工做量是不同的。

进行初级量化管理的时候,企业经过实际的参数值,来“感受”项目的情况,当积累足够多数据的时候,管理者可能会找出项目间的一些共同的数据特色,如能够统计出“平均值”、“最大值”、“最小值”,这些数据,能够描述组织总体的性能。

当数据积累比较多的时候,组织级的经验数据,能够用来管理之后的项目,例如能够用组织的平均值作为量化管理的要求。这个时候,就达到了中级量化管理水平了。

 

中级量化管理有如下特色:

1) 对历史数据进行必定的分析,得出一些数值,从这些数据能大概掌握企业的能力情况。

2) 根据大概的企业能力情况,定出项目量化的管理目标,并用于管理项目。

3) 利用历史的经验数据,由项目规模导出工做量。

 

例:项目规模与工做量的关系

根据历史的经验数据,能够绘出规模与工做量的关系,由这个关系可用来估计新项目的工做量。若是没有大量的经验数据,这是不能作到的。

 

CMMI3级中,并无专门的PA是与度量直接对应的,为何说中级量化管理与CMMI3级的要求是对应的呢?CMMI3级的重要特色之一就是,有组织级的度量库,而且项目依据组织级度量库的数据,定义和管理项目的过程。中级量化管理与初级量化管理的最大区别就是,度量数据已经上升到组织级别,每一个项目均可以利用组织的“经验”(即历史数据)来管理项目。

 

 

5. 高级量化管理-可预测级

麦当劳的薯条很多人都吃过,味道很好,并且每家麦当劳的薯条味道很一致。麦当劳是如何作到的呢?咱们分析一下生产过程,咱们发现薯条从原材料开始,到后续加工,油炸的时间,薯条炸出来后多少分钟没有售出,就销毁,整个过程都有严格的控制,并且不少地方是量化控制,时间甚至精确到秒。严格的过程控制,保证了薯条能高质量地稳定地产出。全球的麦当劳,都用同一的严格过程来管理,因此保证了全球的麦当劳的食品都是高质量的并且是高度一致的。从另一个角度说,只要麦当劳按照既定的过程来生产食物,就能够“预测”出最终食物的状况,麦当劳将对最终产品的质量很是有信心。

那么咱们软件开发,是否是也但愿能达到这样的效果呢?你们能够回答一下这个问题:若是项目的规模、采用的技术、人员的水平等因素都肯定了,那么您是否能够颇有信心去预测这个项目的最终结果呢?

若是按照中级量化管理的办法,仍是比较难达到这个效果的,“可预测级”的量化管理应该是怎样的呢?

在回答这个问题以前,咱们须要先搞清楚什么是“稳定”的过程,什么是“不稳定”的过程。咱们以“煮饭”为例,说明什么是稳定的过程什么是不稳定的过程。

你们小的时候可能都野炊过,野炊煮出来的饭可能广泛都是不太好吃的,不是太硬就是太软。为何煮出来的效果会差别这么大呢?仔细分析一下,咱们发现不少因素会影响煮饭的最终质量,如:饭锅、火候、煮的时间、水量等。当咱们用野炊的方式煮饭时,这些因素都不太好控制,因此出来饭的质量变化就会比较大了。

咱们换一种方式来煮饭,用电饭煲煮饭,失手的概率是否是极大地下降了?为何会这样呢?当咱们用电饭煲的时候,饭锅、火候、时间等因素都被“固定”在理想范围了,因此最终出来的结果是比较稳定并且质量比较好。

再看看咱们的软件开发过程,1级的企业作出来的软件,结果是很不稳定的,而4级的企业,能稳定地输出比较好的结果。4级的软件企业,只须要肯定了项目的规模、性质、技术、人员技能等因素后,只要按照既定的过程来生产软件,那么就能够颇有信心地“预测”这个项目的最终结果,这个“预测”是有很高的可信度的。而CMMI23级的企业,虽然也能预测项目的最终结果,但只能“大概”预测,4级企业的预测能准确估计出最终结果的范围,并且这个范围是量化的。

CMMI23级的企业,过程还不能说是稳定的,而4级的企业,过程必定是稳定的。一样,初级、中级量化管理,用数据管理的过程,也不能说是稳定的,而高级量化管理,用数据管理的过程,必定是稳定的。

用数据管理过程,要进入“高级”阶段,就必须了解统计过程控制(SPC)的学问,要了解什么是基线(Baseline),所谓的六西格玛管理,其实就是统计过程控制。

 

例:某公司每周对项目的CPI(成本指数,这是项目挣值管理中的一个重要概念,请参考相关资料)进行度量,分析项目的实际性能。

经过分析,发现CPI波动范围比较宽,从最低的10%到最高的210%,这样意味着最终项目的成本极可能会与预算相差1倍以上。做为管理者来讲,这是不能够接受的,管理者但愿最终的成本与预算相差在比较小的范围内。

为何CPI会波动这么大呢?影响CPI波动的因素很是多,有估算、计划、过程、人的能力等等,若是要收窄波动,就须要在这些影响因素上下功夫,想办法减小这些影响因素的影响。通过改进后,项目的CPI状况以下:

以上的作法是否是已经达到统计过程控制的层次呢?还不是,咱们看看下图。

 

这个控制图,把整个项目过程分为四个阶段:需求阶段、设计阶段、编码阶段、测试阶段。每一个阶段执行的过程不同,工做的性质不同,故绘制控制图的时候须要予以区分。对不一样阶段的CPI数据点绘制XmR图,得出不一样阶段的中值与上下限。用不一样阶段的CPI的中值及上下限来监控项目的行为,项目管理的重点就是监控各数据点有没有超出上下限,对超出上下限的数据点,分析其缘由并采起措施,使之回归到范围内。

所谓的统计过程控制是这样的一个过程:

1) 进行统计过程控制的过程是稳定的,影响该过程的各种因素,都被很好地控制在必定的范围内,故最终的结果也是在可控的范围内的而且是可预测的。

l 什么叫稳定?简单地说,就是在给定的条件下,产出的结果是在必定可接受的范围内的。如:只要项目性质和之前的项目差很少,项目的人员水平和之前的大致一致,执行的过程也和之前一致,那么该项目的结果应该是在可预测的可接受的范围内的。若是从统计学的角度,能够对数据点进行稳定性测试,判断其是否稳定(详细信息请参考SPC方面的书籍)。

2) 要对过程进行足够地细分,才能清晰地区分出各影响因素,使度量出来的数据点很容易识别是信号仍是噪音。在进行数据分组的时候,保证数据之间的可比性是很是重要的,苹果只能跟苹果比,不能苹果跟香蕉比。不少作CMMI4级的企业,很容易犯这样的错误,没有很好地进行数据分组,进行数据分组的时候,要充分考虑项目的性质、人员的水平、所执行的过程等因素。数据分组是否合理的重要标准就是,是否能清晰区分出信号仍是噪音。

l 什么是信号?信号能够说是“过程之音”,就是过程自己内在的特色所引发的正常波动,如项目的性质、技术、执行的过程、人员的水平等。信号反映了过程的正常的能力。

l 什么是噪音?噪音代表实际工做中出现了一些过程以外的特殊状况,如由没有具有项目管理技能的人来担当项目经理工做,而当前过程要求的是须要具有项目管理能力的人来负责的,这样过程执行效果确定会与预计的效果发生比较大的误差,从而超出上下限范围。信号体现了过程正在被正常执行,而噪音则反映出过程正在被偏离执行。

3) 数据点的误差,是由公共缘由(Common Cause)和可归属缘由(Special Cause)共同做用下致使的。在控制限内的数据点的误差,主要是由公共缘由致使的,而超出上下限的误差,则是由公共缘由和可归属缘由共同引发的。

l 什么是公共缘由?公共缘由是指过程自己特有的引发误差的因素,若是人员的水平波动、项目性质的差别、执行过程的力度差别等,这些引发误差的因素在本过程内已经被削弱,但不可能彻底被消除,这些因素共同做用下,会引发数据点的正常波动。信号是由公共缘由引发的。

l 什么是可归属缘由?可归属缘由是指出现了过程没有考虑或者违背了过程的状况,引入了新的引发波动的因素,如:没有安排好相应培训、没有按过程执行等。出现了可归属缘由,将会加大数据点的波动,从而超出上下限范围。噪音是由公共缘由和可归属缘由共同做用引发的。

4) 经过统计学的办法计算出性能基线,如用XR图、XmR图。

5) 用性能基线进行项目管理,项目管理的重点是监控超出范围内的数据点,分析其缘由,想办法排除可归属缘由。消除可归属缘由后,就能够消除因为可归属缘由引发的波动,这样数据点就会从新回到上下限范围内。组织级应该有详细的进行可归属缘由分析及问题解决的指导,项目经理根据该指导来排除可归属缘由。

 

SPC的原理比较深奥,要深入理解是不容易的。SPC在制造业等其它行业已经被普遍应用,其基本原理就是经过改造生产流水线,消除或者限制影响产品规格的因素,使产出的产品规格在必定的范围内并符合要求。

这个原理要用到软件生产,就没有那么简单了,影响软件质量的因素很是多,须要“功力深厚”的人分析各影响因素,并经过改造过程来消除或者削弱这些因素的影响。在这个层面上,用数据管理过程的“档次”已经提升了一大截,这时候数据管理的过程是稳定的过程,该过程的中值和上下限反映出该过程的能力。

这里咱们引出一个新的问题,什么是有能力的过程?什么是没有能力的过程?什么是能力高的过程?什么是能力低的过程?

不稳定的过程,谈不上能力之说,稳定的过程才能谈能力。稳定的过程,能够经过不断地提升性能来提升能力,如收窄性能基线的上下限范围,使中值更接近理想的目标值等,这些都体现了能力的提升。

 

6. 超级量化管理-持续优化级

高级量化管理主要讲述的是如何把不稳定的过程变成稳定的过程,而超级量化管理主要讲述的是把有能力的过程变成更加有能力的过程。

前面提到的CPI中值和上下限,有可能不知足商业目标的须要,如CPI平均值达不是所指望的值,上下限的范围太宽,这样就有必要想办法作一些改进,提升能力,而且能力提升后的过程一样也是稳定的过程。

那么有什么办法能够提升能力呢?

1) 改进过程。过程的性能基线的中值及上下限,是由公共缘由所引至的,要提升其性能,必须从这些公共缘由入手,对信号进行分析,想办法进一步削弱公共缘由引发的误差,想办法改造过程,使中值符合要求。

2) 采用新技术。考虑引入新的技术,并调整相应的过程,来提升过程的性能。

3) 对噪音进行缘由分析。噪音是由公共缘由和可归属缘由共同做用引发的,对每一个噪音的可归属缘由进行详细的分析,将极可能找到改进的机会。

分析过程的可改进地方是比较复杂的,有可能须要对过程进行更深一步的细分,可能会发现原来的数据分组达不到要求,须要加强粒度,以便区分出更多的公共缘由,找出可改进点。另外,原来不须要进行基线级别管理的过程,可能也会由于商业目标的须要,须要创建基线并进行基线级别的管理。

在这个级别上用数据管理过程意义在于,经过数据来监控过程的改进效果,比较能力的变化,为决策提供依据。当造成新的更有能力的能力基线时,企业将用新的能力基线来管理项目。

SPC的创建及优化过程的成本是很高的,但进行SPC管理的过程的成功几率是很是高的,企业根据本身的商业目标须要,选择须要进行SPC管理的过程,并不断优化,使企业具有愈来愈强的竞争力,而这种竞争力是别的企业难以模仿并难以超越的。

 

7. 总结

由“感知级”到“经验级”,再到“可预测级”、“持续优化级”这个过程是不可跨越的,不一样级别的“用数据管理过程”,都是由商业目标驱动的,只是不一样级别所达到的量化管理程度不同。

“感知级”经过软件度量,大概了解项目的情况,并做为工做调整的依据。

“经验级”经过软件度量,对比项目的历史经验数据,把握项目的情况,并进行相应的工做调整。同时,项目的历史经验数据,可供估算等工做进行参考。

“可预测级”,把“经验级”推向一个更高的高度,对影响问题的因素进行详细的分析,排除和削弱影响项目性能的各类因素,对历史经验数据进行合理分组,统计出性能基线,并用于项目管理。用基线来管理的过程都是稳定的过程,这些过程从统计角度来讲均可以准确地预测出未来的结果。

“持续优化级”是“数据管理过程”的最高级别,达到这个级别意味着企业能根据商业目标持续的优化SPC管理,使企业造成别的企业难以模仿并难以超越的核心竞争力。

那是否是越高级越好呢?企业是否是都应该追求更高级的量化管理呢?

答案是否认的。

要实施“可预测级”的量化管理,是有条件限制的,就是过程要稳定,稳定就意味着项目间要有可比性,采用的技术、过程要大致一致。若是一个企业是创新型的企业,常常用新技术作新项目,这样项目的可比性就比较弱,就很难具有稳定的基础条件,很难造成基线。

因此,不能说CMMI级别越高的企业,就必定比级别低的企业管理要更好一点,有时候企业的特色就决定了企业不可能作到45级。各企业的最高领导,关键是清楚理解本身的商业目标,理解高级别的量化管理能带来什么帮助。

那为何要“用数据管理过程”呢?

若是有一个非量化管理的办法,成本更低,而且能更有效地达到目的,那咱们固然就采用那个办法,而不会片面地追求“用数据管理过程”了。全部想“用数据管理过程”的人士,都应该认真思考这个问题,并考虑哪一种层次的量化管理级别适合您的商业目标。

 

 

做者:张传波

创新工场创业课堂讲师

软件研发管理资深顾问

《火球——UML大战需求分析》做者

www.umlonline.org 创始人

相关文章
相关标签/搜索