其实做完cmmi以后想想好像也没什么可讲的,所以一直拖到现在也没有做个详细的总结。 我们公司从去年开始就打算做四级了,本来打算去年10月份评审的,但是由于出了1.2A所以延迟。简单的来说,个人觉得,四级就是要把之前三级以前收集的数据进行汇总分析。 其实在三级的时候,或者说一般的软件公司,已经有相关的数据,只是没有系统的进行收集和分析,比如说缺陷个数,系统规模,模块规模,开发时间等等。很多时候,这个一般的员工没有去收集和分析,领导看来也只是认为项目不停的在加班,在延期,人手不足,项目的bug数一直降不下来,项目款项收不回来,可是没有仔细的去分析这些数据。 我们在做四级的时候,开始一段时间也是在培训,看资料,同时注意收集数据,评估师在开始做四级的时候,把cmmi的知识培训了一遍,然后重点告诉我们四级侧重的就是数据的分析,然后指导并引导我们的思维去发现需要收集哪些数据。比如对于一个项目,一般的人员都会说可能涉及的数据是开发的时间(周期),开发人员,测试的时间,发现的缺陷数等等。其实这些就是数据,但是我们没有看到内在的联系,以及其他潜在的数据,比如说开发人员,我们是否想放到过开发人员的水平,这其实是个很重要因素。人员水平是不是和人员个数成正比,或者说对项目而言是不是人越多越好 我想学过数学的人应该都知道,其实是有个临界点的。 就像抛物线或者是一般的曲线,都有个拐点,达到这个拐点可能是{zj0}或者是最差的情况,四级就是在收集的这些数据的基础上,对数据进行分析,找到适合我们项目和我们公司的{zj0}的一个组合。 这就需要建立数学模型,画出直接的图形,能直观和透彻的进行说明,这样的东西才有说服力,才能让研发人员和项目经理乃至公司高层相信,我们的公司要根据这样的组合才能达到{zj0}。四级的精华也就在此,cmmi检查的也就是一个公司是否达到四级,有哪些数据和分析,说明他们达到了,说明他们在不断的改进和提升。 当然,同样要强调的就是,这些东西不是仅仅是QA SEPG成员知道就行的,要求所有研发人员都知道,这就是培训的问题,中国很多的公司,做CMMI,可以说是就是质量部,或者QA来完成的,QA把所有的东西准备好了,然后评审,真正意义上的,或者说严格意义上是需要全员掌握的。QA是一个职能岗位,要做到上通下达,你的工作不是你一个人就能完成的,是需要各部门配合的。当然有些工作,很多时候可能就是QA做了,比如说数据收集 以及开始的建立模型等等,因为参加培训的只是少部分人,而且研发人员也不可能整天在忙这个。所以QA在做一些工作的时候,需要将自己的成果通过培训或者会议的方式传达个各研发人员,让别人知道你在做什么,你做的东西有什么用。 在收集的数据以后,我们需要筛选,比如说,我们发现影响系统缺陷数增加的因素很5个,那我们要分析,哪些是可用的,哪些是不需要的,或者说影响比较少,不需要的。同时要注意,如果有相关性很强的两组数据是否可以同时作为参考,会不会影响到今后的建立模型。比如说,我们从A地到B地1000米的话,我们走路需要30分钟,但是我们打的的话,只需要10分钟,但是要花30块钱,这就可以建立一个简单的数学模型。但是10分钟和30块钱,在这里是相关性很强的两个数据,我们需要考虑是否只要取一个数据就行,这是个简单的例子。 再比如刚才提到的研发人员水平和研发人员个数,当我们建立模型的时候,我们取的数据比如说是人员水平的一个累加,那我们可以考虑不用人员个数这个因素,因为这两个是有直接关联的。当我们发现影响缺陷数的因素有1个时候,我们可以建立,一元线性方程,如果有多个的时候,我们就可以建立多元线性方程。比如说,我们发现这个系统有5个bug,花费了10个小时的开发时间,4个人参加,人员的水平累计是12,系统的规模是1000行 那么我们的模型可以是Y=10X1+4X2+1000X3..... 通过类似这种方法,通过一些统计软件和分析工具,可以建立起一个多元线性模型。当然,这个只是{dy}步,就是你知道应该通过这些数据的分析,找到他们的联系,但是这些x因素是不是真的确实可行,对y的影响是不是能起到作用,这个是需要进一步分析的,而不是光凭表明观察可以看出来的。 这个时候我们会用到回归分析。x间关系、y和x关系的分析,来对x进行选择,从而找出真正能对y起到决定影响的x。比如说y=ax1+bx2+cx3+e 其中x1 x2 x3和y的关系是不一样的,可能a=0.6 b=0.3 c=0.,那这样我们可以看出,X1对y的影响更明显。回归分析,在我们使用的excel表格中就有,可以简单的得出我们需要的一个线性方程 我们用历史数据得出模型,可以作为我们项目级或者组织级的模型 比如说,我们得到的模型是根据公司所有项目的数据得到的一个模型 这个建立的就是我们公司PPB。ppb=project process baseline 这样就得出了我们组织级/项目级的一个基线。 对这个基线我们进行分析,里面的数据是否是{zj0}的,是否能够进行改进,比如我们通过什么方法可以减少开发时间,如果把开发时间达到一个较好的水平,那我们的模型是不是会发生变动,在ppb的时候,我们有散点图,可以得到一个曲线,在这个曲线上我们可以看出那个是{zj0}的值,也就是之前提到的“拐点”。如果我们对数据改进以后,这个{zj0}值会发生变动,曲线也会发生变动,从而有改进以后的模型,就是我们的ppo,ppo=project process object 。 这其中就有三个步骤,建立ppb,进行psp改进,得到ppo ,这是这个阶段我们项目级/组织级的一个标准。 之后我们的项目,根据这个标准,根据模型来控制我们的活动。在有新项目或者新数据以后,我们把我们的新数据增加进原先模型,进行改进,发现是否会建立一个更xx的模型,这样就会建立新的ppb,从而有新的ppo。 通过这样的活动,我们的模型会变得越来越好,我们的ppb和ppo的区间会变得越来越窄,我们的过程也就越来越稳定。 sei要看的就是你在不断的改进公司的模型,过程不断的稳定,这就是四级要达到的效果。 如果能按照CMMI的要求,一步步的执行,对项目的执行肯定是有帮助的。例如我们建立了一个工作量的模型,知道了我们项目一般的开发周期是多长时间,我们的项目经理在开始做项目计划的时候,就会以这个为标准,进行制定计划,安排人员。在项目开发过程中再不断的检查和比对我们的PPB,从而提高项目的开发效率,降低开发成本。 现在说下数据收集这块 数据收集其实很多之前做过CMMI的公司我相信都有在做,数据的收集对于cmmi来说非常的重要,我们需要通过“数据”来说话,所谓的“有据可查”。 在数据收集之前,我们要先确定我们需要哪些数据?这可以通过倒退的方法来考虑。比如说我们需要的是对缺陷率的分析,那可能涉及到数据就有代码行数,模块规模,开发人员的数量,开发的环境,开发的工具.....将这些可能影响到缺陷率的因素都罗列出来。然后对这些因素进行分析,有些是有直接影响的,有些是有间接影响的。我们需要找出对缺陷率影响{zd0}的几个备选因素。这个过程,可以通过一个图标的方式进行,这样会更加直观和明确,也不会出现遗漏。 在找到相关因素以后,我们开始对数据进行收集。在收集的时候,我们要考虑我们项目的情况,比如说我们是要收集项目的数据,还是组织级的数据。如果是项目的数据,那我们的小项就应该是各个模块的数据,如果是组织级的数据,那就是各个项目的数据。不同类型的数据得出的是不同类型的模型。在数据收集的时候,我们同样要注意,我们是否可以考虑把模块/项目规模大小相近的数据放在一起进行分析,或者是相似产品的数据,这样得出的模型更有说服力。(同时要注意,根据一般电脑统计软件的规则,我们一般要求数据不少于15组或者一定组数的要求。)如果没有足够的组数,我们可以考虑几个类似的项目模块放在一起进行分析。 同时在数据收集的时候,要注意相关的格式要统一,比如统一使用每千行,或者是每行,开发时间是采购小时或者分钟。这些细致的问题也不能忽略。 数据收集的过程,很多时候是基于原先的基础,如果一个公司之前没有对任何数据进行收集,那要对数据进行分析的话,工作量就会非常的大。所以我们尽量考虑用我们目前可能收集到的数据,或者是便于取得的数据,当然也可以重新进行收集,但是这样收集起来的数据,可能有时效性比较差等问题会出现。 数据这块,是CMMI-4的基础,我们要得到模型就必须有足够的数据,而且这些数据能足以说明问题,否则我们得到的模型没有足够的说服力。 如果不是做CMMI-4,其实对数据这块同样也不能忽略,对于一个软件公司而言,很多东西就蕴含在数据中,我们可以通过数据来直观的表示一个项目是否延期,工作效率怎么样,有多少个bug,产品质量如何。 补充一点,就是刚才{zx0}提到的,我们对我们要建立的模型收集数据,有些人可能会问:我们需要建立哪些模型呢?这也是一个需要关注的地方。一般而言,我们知道我们需要对公司影响较大的过程建立模型,但是如何表明这个过程就是特别需要关注的呢?这就要依赖我们的公司商业目标,也就是我们常说的BGS。所以在建立模型的最初,我们需要对我们公司的BGS进行分析,对我们的BGS进行细分。尽量能细分到涉及到那些数据。比如研发部部门的目标进行一步步细分,根绝这样,我们就能知道我们公司需要建立那些模型能对我们公司的过程进行到监控和改进,哪些过程的改进是对我们公司的目标有着重大影响的。 这是一个很重要也是一个基础的环节。 在对数据进行分析的时候,很多工具可以被我们所使用。其实不用把建立模型想像的过于复杂,其实简单而言就是列方程,一元方程,二元方程,多元方程......这些我们中学设置小学的时候就已经做过了。 我们将前面提到的数据收集起来以后,用表格的形式列好,一般都是用excel表格。简单的分析,我们用excel就能做。在excel表格中,点击“工具”-数据分析即可。如果没有“数据分析”这个模块,可能是当时在安装office的时候安装的是精简版,这种情况重新加载宏即可。在数据分析这个模块里面有一些excel自带的分析工具,比如回归分析。在对我们收集到的数据进行分析的时候,就用的到回归分析。 可能有人会问为什么要用这个工具呢,其实很简单,我们昨天提到我们将对结果有影响的因素进行了收集,可能我们发现有10个因素,可是是否这10个因素都是能用来建立模型的呢?这就要用到回归分析的方法,用回归分析,我们可以验证各个因素与结果的关系,简单来说就是Y与X的关系。在通过电脑自动计算后我们可以建立一个简单的模型,即y=ax1+bx2+cx3+....+E,这就是我们的一个多元线性方程。同时还能看到一个R方值,这个值是表明,方程成立的概率有多大,也就是我们简单的说的95%或者99%的置信区间。 说道置信区间,可能很多人都有印象,因为初中学过。在cmmi模型里面,也有一个相关的数据就是6sigma值。在现实世界里面,我们很难使得事情能百分百的得到满足,就像我们生产一个螺帽,可能会出现瑕疵品,这是很正常的,但是我们同样是可以对我们的过程进行控制,比如我们要求我们的合格率达到95%或者99%,这就是数学概念里面的置信区间。 我们在建立模型的时候也有个可行性要求,具体就在R方的大小,如果R方能达到95%以上,我们就能说明我们的模型是可行的,太低显然是不行的,也没有任何意义的。 通过excel表格,我们能够简单的得到一个模型,这个可以说是分析的{dy}部分,从分析的结果我们看出哪个X对Y的影响{zd0},哪个影响最小,有了一个初步的判断,从而也可以验证我们之前的假设,看是不是像我们想的那样,代码规模对缺陷率影响是{zd0}的,而人员水平是最小的等等~~ |