7.5 软件度量相关问题
软件度量是增进软件理解、预测、评价、控制和改善的方法,不过如果寄希望于以统计为基础的度量活动来获取软件开发的所谓“银弹”,就需要重温那句富有讽刺意味的名言“谎言有三种,即谎言、该死的谎言、统计数据”。
7.5.1 增加度量正确性的措施
度量是应该的,但做什么事情也都有其负面作用,为了避免度量带来的作假行为,可以考虑使用辅助策略来减小副作用。例如:
(1)将度量和考核分离。如果开发人员知道软件度量的结果会影响到自己的绩效评价、加薪升职,势必会导致开发人员有意无意的“作假”行为,失去度量工作的真正意义。例如,可能为了提高代码生产率,开发人员倾向于写冗余的代码,将本该写在一行中的语句分多行来写等。
(2)尽量减少度量对人的影响以及人员对度量的影响。软件工程包含了众多人力过程,度量活动会影响它,即当人员得知自己被观察时,效率会发生很大的变化。
(3)利用专门的系统或者专人进行统计度量工作,可以在一定程度上避免统计度量部分当事人作假。
(4)增加评审、复查、抽查等环节,避免当事人在关键环节作假。
(5)增加新度量项的试运行环节,正确度量参数在正式度量时能够尽可能合理。
(6)加大作假惩罚力度,作假说明诚信有问题,一旦发现直接开除,看看还有多少人愿意冒险,当然制度制定后是要执行的。
7.5.2 软件过程性能
软件过程能力描述了通过执行某软件过程能够实现预期结果的程度,一个软件开发组织或者项目组的软件过程能力提供了一种预测该组织或项目组承担下一个软件项目时最可能的预期结果的方法。
软件过程性能表示在遵循一个软件过程时得到的实际结果。过程性能数据体现了过程的实际能力,是能力的具体体现,可以把过程性能理解为在某个方面的基准,是以后项目用来参考和对照的,它是一个范围值。在低成熟度级别的过程中(如CMMI ML2和ML3),经常使用阈值(threshold)来表示,但是阈值是相对主观的值,更多地依赖于项目经理和成员的经验;过程性能基线(Process Performance Baseline)是比较客观的值,需要一定量的相同性质的数据通过统计方法得到。这个值需要时间积累得到,需要很多类似项目数据支持,从而提高了过程的客观性和透明度(数据管理),也提高了项目管理能力。