|
Gompertz模型项目管理者联盟
不知身为软件工程师的你,在写代码时是不是有过这样的经历:一方面对自己写的代码信心满满,一方面又非常希望知道自己开发的代码的质量到底多高。如果代码真的没被测出bug来或者测出的bug较少时,反而有点担心——会不会还有隐藏的更深的bug没被发现?或者身为测试工程师的你,可能比开发人员担心的会更多:这些代码该不该再继续测试了?怎么就能断定当前的版本算是通过验收标准了,继而可以被客户和用户认可?是不是就可以把这个版本交付使用了呢?项目管理者联盟
--------------------------------------------------------------------------------项目经理圈子
相信这是很多开发和测试人员都曾经经历过的。无论是开发人员、测试人员,还是项目经理、高层管理人员,都已经为版本的交付日以继夜的加班工作,可不能在交付的时刻功亏一篑。打击心情不说,加班加点不说,而且,谁该来为可能的返工和无休无止的变更买单呢。项目管理者联盟
所以,软件版本在发布时需要有一个判定的标准——没有预先定义的判定标准,就无法去判断版本是否已经达到了客户的要求。不进行判断,或者是错误的判断,都很有可能会造成该项目资源安排的不合理,甚至造成资源的浪费,那么不管是精神上还是体力上,甚至进度上、成本上,都会给项目团队带来不小的打击。项目管理者联盟
CMMI四级的一个要求是量化的管理项目(详见量化项目管理QPM中文版)。映射到缺陷预测活动中,也就是量化的管理缺陷。量化的退出标准就是将类似“这个版本是否能够通过”这样的问题,形象地转变为“已经测出的bug数是否已经足够多,遗留的bug是否已经少到不会影响软件的交付”等等这样的表述。这样,无论是理解上还是判断上都更加容易,版本发布标准也就变得不难理解了。项目管理培训
在决定发布版本之前,需要去统计这样几件事:我们已经发现了多少个bug;用量化的方法进行管理时,我们还有多少个bug没有发现;我们统计到的未发现的bug数是否能达到客户的要求;如果无法满足客户的要求,那我们至少还需要发现多少个bug。当这一系列问题都解决了以后,开发、测试人员是终于可以“收”工拿项目奖,还是需要返工加班、继续努力,也就一目了然了。项目管理者联盟
知道了要做什么,接下来要考虑的就是“怎么做”。出于这样的原因,方正国际软件有限公司(以下简称方正国际)几年来一直都在内部实施着利用统计学的原理对软件缺陷进行管理和监控。用统计学的方法监控和预测缺陷的发展情况,从而对发现的缺陷进行管理,确定还未发现的缺陷情况、为了按时交付每一个阶段应当发现的缺陷情况,以此相应调整测试工作的时间和进度。项目管理者联盟
PgMp.mypm.net
这就是方正国际近两年来一直在内部实施的基于Gompertz模型的缺陷预测与管理,以及在此基础上开发的缺陷预测与管理的工具。在已经采集到的多个项目数据的基础上,现在该工具已经在公司内部使用。应用这个工具,让测试人员在测试初期就对自己大致的工作量有了比较准确的估计,并对测试的每个阶段发现的bug实施分析和监控;根据预实对照的目标达成情况来调整开发、测试的进度;而且在最终交付时,给客户一个高质量的、可靠的工作产品。简单用个例子来说明吧。在项目A还未进入但即将进入测试阶段时,测试经理就会根据历史的情况、经验等方法,估计出进入测试阶段后的第一周,大概可以发现多少件缺陷;同样,再估计出版本交付时可能出现的缺陷数目,以及版本交付后会出现的缺陷的数目。利用这三个数据的信息,就大致可以得到:要达到预定的目标,在进入测试阶段后,每周、甚至每天大概需要发现多少缺陷。以此为依据,测试经理就可以对团队中的测试人员的任务进行分配、对工作进行评价。当然,这仅仅是Gompertz模型使用的场景之一。pmp.mypm.net
统计学是很强大的,统计学知识的应用也是很广泛的。那么,在缺陷预测中的统计学原理,或者说是理论依据是什么呢?基于Gompertz模型的缺陷预测工具到底是怎样对测试活动和质量进行监控的呢?接下来,我们会逐步与大家分享。项目经理博客
预测技术项目管理者联盟
在展开Gompertz模型趋势预测的说明前,首先给关注统计学知识在软件行业应用的网友介绍趋势预测的基础知识。PgMp.mypm.net
如何理解预测技术呢?简单来说,预测(prediction)是根据事物发展的历史资料及当前情况,运用一定的理论和方法,对未来趋势做出的一种科学推测。再简单点,就像传说中或是童话里的占卜师一样,当你想知道将来的事情时,你需要告诉占卜师你的出生情况,他就能将你的一生预测出来。不同的是,他只能告诉你,你的一生是顺利或是不顺,或再详细点告诉你可能在哪段时间会发生不寻常的事情;而我们所说的预测技术却可以详细到周,甚至详细到天。当然,这里还有个本质的区别,那就是我们这里说的预测是有科学基础的,而占卜师的预测只是常常出现在童话里或者传说中罢了。项目管理者联盟
项目管理者联盟
预测技术的应用主要针对未来的趋势,即是经常讲的趋势预测?这里我们也来个“顾名思义”。“趋势”一词在词典里的解释是“事物发展的动向”,也就是会呈现出某种规律。简单点,某一事物未来是好是坏,是多是少,是升是降,或者先好后坏,先多后少,先升后降等等,也就是对未来进行预测。再用上面的例子来说明,小李急切地想知道自己的未来,并求助于占卜师,而占卜师则预测到他在40岁时会有场灾祸,那么恐怕小李紧接着要问的就是“我该怎样做才能化解我的灾祸”。趋势预测就是要解决类似的问题。预测并不是最终目的,而是一种手段,当预测到的趋势不符合规定的标准时,就应当及时采取措施来进行调整或缓解,这也是趋势预测的目标之一,通过分析预测的结果,揭发它的发展趋势,从而使得人们能够尽早地发现问题,或得到一个科学论断和标准。现在从童话回到现实中来。在软件领域,缺陷的趋势预测是预测技术应用较为广泛的领域之一,它是利用统计的手段来预测产品或解决方案中的遗留缺陷、测试阶段的单位时间内应当查出的缺陷等,因此对软件质量的提高和测试阶段的管理起着重要作用。项目管理者联盟文章
项目管理者联盟
在软件领域中,一条重要的原则就是“do it right the first time”。这条原则告诉软件行业的工作人员:应当在第一次就将事情做对。然而实际中的情况是,软件开发完成后总还是存在缺陷,所以才需要测试,才需要品质保证;考虑业务的复杂性、开发工具的更新、需求的不稳定性、开发人员的能力经验欠缺等因素,几乎不能在第一次就将事情完全的做对,取而代之的是不断的验证、测试、修改再确认,才能最终确保软件产品或服务的正确性。然而有一件事可以确定,某个软件系统中的缺陷数目应当是一定的,随着软件系统生命周期的推进,发现的缺陷数应当由少到多,再从多到少并趋近于零。那么,如果无法做到“第一次将事情做对”,也要“尽早将事情做对”,在缺陷可能带来巨大的风险之前,就将它“扼杀在摇篮里”。如果没有预测,不知道未来趋势,也就无法判断当前处于怎样的状态下,更无法知道,在当前阶段,是不是已经有缺陷遗留到了下一阶段。这一点其实很容易理解,本来需要在2周内每天完成30项任务,但第一周只完成了10项,那接下来的一周内就需要加班加点完成剩下的50项任务;如果未能完成,那就可能导致无法交付任务,带来足以让你后悔的结果。转自项目管理者联盟
时间序列预测是预测技术中最常见的一种。时间序列是指由同一现象在不同时间上的相继观察值排列而成的数列,形式上由现象经历的时间和现象在不同时间上的观察值两部分组成。时间序列可以分为平稳的时间序列和非平稳的时间序列两种。平稳的时间序列是指基本上不存在趋势的序列;非平稳的时间序列指的是存在趋势的序列。
平稳序列的分析和预测的方法主要有3种,分别为:简单平均法;移动平均法;指数平滑法:项目经理博客
在简单平均法中,t+1期的预测值等于前t期的预测值的平均值,它适用于较平稳的序列,将远期的数据与近期的数据看作对未来同等重要,但现实生活中,往往是近期的数据更加重要。所以,简单平均法的预测结果不够准确。项目管理者联盟
移动平均法是对简单平均法的改进,通过对时间序列利用“逐期递移”的方式求得一系列平均数作为趋势值或预测值。它的关键在于选择合适的移动步长。简单的移动平均法将每一个值都赋予了相同的权值,也可以使用加权的移动平均法,权值之和为1。PgMp.mypm.net
指数平滑法是加权移动平均的一种特殊形式,表现为观察值的时间离现在的时间越远,其权数就会呈现指数的下降。项目管理者联盟文章
非平稳的、不存在趋势的序列的预测方法有2种:线性的趋势预测和非线性的趋势预测:项目经理圈子
线性趋势是指现象随时间的推移而呈现出稳定增长或下降的线性变化规律。它的预测方式是根据最小二乘法原理,使实际观察值与预测值的离差平方和最小。项目管理者联盟
|