第一章 过程改进
u 个体软件过程
u 过程改进
1.1个体软件过程
一个软件工程师的任务就是在预定的时间和进度下交付高质量的软件产品。对于他们来说最重要的个人资产,就是始终以高质量的产品满足合同要求的能力。个体软件过程(Personal Software Process,PSP)是为帮助软件工程师出色完成任务、提高个人能力而设计的,它讲述如何把先进的详细的估计和计划的方法应用到日常的任务中去,告诉人们如何按照计划去跟踪任务的执行情况,并详细解释如何利用已定义的过程来指导工作。
PSP提供了软件工程师所需要的改进个人技能的结构化框架和方法。当然问题的关键不在于是否需要某些个人的技能,而在于掌握这些技能需要多长时间以及是否能经常使用它们。如果软件工程师不得不在工作中掌握这种技能。这不仅要付出很大的代价和时间,而且具有很大的风险性。PSP将会加速你的过程。
1.2过程改进
PSP是一个需要逐步改进的过程。
Watts S. Humphrey服兵役的时候,必须学会机枪射击。开始训练时用猎枪打泥鸽子,Watts的成绩非常差,并且努力训练还是没有提高。教官对Watts进行了一段观察后,建议他用左手射击。作为一个习惯右手的人,开始Watts很不习惯,但练了几次后,Watts的成绩几乎总是接近优秀。
这个事例说明了几个问题。首先,要通过测量来诊断一个问题,通过了解Watts击中了几只鸽子和脱靶的情况,很容易看出必须对Watts做些调整。然后,必须客观的分析测量的数据,通过观察Watts的射击,教官就可以分析Watts射击的过程—上膛、就位、跟踪目标、瞄准,最后射击。教官的目的就是发现Watts哪些步骤存在问题,找到问题所在,于是建议目的就是发现用左手射击。
最后,也是最重要的,就是自身的变化。过程改进是非常困难的,因为人们很多时候不愿意尝试新事物。他们传统的习惯看起来很自然,以至于不相信改变会有什么帮助。Watts总是使用右手,从来没有想过左手射击会是什么样子。但是自Watts采纳了教官的建议,他的成绩就提高了。
定义测量方法不是件容易的事情,但它总是可能的。首先定义测量方法。规定了测量方法后,就必须收集和分析数据。如果需要作些改进,接下来就要分析工作过程,看看什么地方需要改进。最后要想真正的改进,必须切实做出改进。
如果Watts不改进他的射击过程,它的成绩几年后都不会有什么变化,也不会成为一个优秀的枪手。仅仅进行测量并不会产生什么提高,仅仅靠努力也不会有什么提高。在很大程度上工作方式决定了所得到的结果。如果还是按照老办法工作,得到的结果还会是老样子。
改进工作方式与Watts学习射击的步骤一样。它们并不复杂,如图1所示:
定义质量目标
测试产品质量
了解过程
对过程进行调整
应用调整后的过程
测试结果
将结果与目标进行比较
循环和持续改进
百发百中是最终目标
成绩糟糕,需要改进
教练观察需要哪些改变
教练建议用左手
Watts用左手打了几轮
重新数击中和脱靶数
结果看成绩大大提高
过程简单不需这一步