管理仍然是开发软件项目成败的关键。我国的软件产业需要迅速转入以过程为中心,走工业化生产的道路。但单纯依靠能力成熟度模型CMM,永远不能真正做到过程管理的改善, 只有与PSP和TSP有机地结合起来,才能达到软件过程持续改善的效果。
前言
本文将围绕过程管理的各个环节,以循序渐进的方式,更具体更深入地讲述和分析软件开发的过程改进问题。它将从如何控制、管理和改进个人工作方式的问题开始,到如何创建高效且具有自我管理能力的工程小组,工程人员如何才能成为合格的项目组成员,以及管理人员如何对群组提供指导和支持,一直讲到如何在全公司范围内定义和推行合适的符合CMM标准的过程规范,并达到不断改进的良性循环状态,等等。
如果按照本文所提到的这种思路和体系进行过程改进的话,那么公司的过程工作将是踏实而有效的。并且于个人,于公司都将受益非浅:
1、 提升个人的能力。PSP向你展示如何制订计划并跟踪你的工作,提供工作有效性的数据并识别出自己的优势和劣势,从而使你能够不断了解和改善自己的技能和才智,并在工作中充分利用自己独特的才能。而TSP向你展示如何成为合格的项目组成员,如何创建高效且具有自我管理能力的工程小组,从而达到高效的协同开发。
2、 完善公司的过程。结合TSP和PSP,在全公司范围内建立规范的开发过程就轻而易举。再加上本文提供的具体实践和有效思路,能够很好地帮助企业提升管理能力,包括软件过程管理、项目管理和持续改进过程。
个人开发能力
PSP (Personal Software Process) 是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。
团队开发能力
TSP(Personal Software Process)对群组软件过程的定义、度量和改革提出了一整套原则、策略和方法,把CMM要求实施的管理与PSP要求开发人员具有的技巧结合起来,以按时交付高质量的软件,并把成本控制在预算的范围之内。在TSP中,讲述了如何创建高效且具有自我管理能力的工程小组,工程人员如何才能成为合格的项目组成员,管理人员如何对群组提供指导和支持,如何保持良好的工程环境使项目组能充分发挥自己的水平等软件工程管理问题。
软件开发过程
软件开发过程(Software Development Process,SDP)是组织级在全公司范围内进行的过程定义、度量和改进,包括三部分:开发生命周期、项目管理实践和软件工程过程。它是在CMM的基础上建立起来的,综合在实践中行之有效的具体方法,注重实用性和效果,以实现项目交付的可预期性和质量保证为最终目标。
开发生命周期。一个专业的软件开发公司应该有根据自己的开发模式建立一个非常详细的软件开发周期模型,包括开发阶段,每阶段内的任务,任务的具体工作和交付物,使用的开发工具和技术,以及人员的分工,甚至可以细到通用的审核会议。将开发中所有的内容用网络图或流程图的形式明确地规范下来,使得高层能够对项目的整体过程一目了然,使得项目的管理者很容易地跟踪任务的情况,使得每位开发人员都非常明确自己的任务和在整体开发中的作用。只有这样的生命周期模型对具体的开发才有意义,它是公司所有开发的“圣经”,所有的技术开发和过程开发均需在此基础上进行开展,并以此为依据。
项目管理实践。以公司的软件生命周期为基础,依据CMM标准,为公司建立一系列合适的过程实践。几个关键的过程实践包括:质量保证,需求管理,配置管理,计划和跟踪,风险控制。然后再建立一套项目度量工具来更加精确地管理项目。如果你们企业不做CMM认证的话,我认为其他的实践可以先不做。将这些基本的工作做到位,然后再参考三级四级五级的实践来改进和补充这些实践,也完全可以很好地控制开发的软件过程。即所谓:学习CMM是吸收其精华和精神。
持续改进过程。有了规范的开发生命周期模型和项目管理实践,可以想办法为企业设计一个建立在数据基础之上、不断度量和改进、不断提高企业开发能力的一个良性循环的机制。模型图如下:
三者的有机结合
PSP、 TSP 和CMM为软件产业提供了一个集成化的、三维的软件过程改革框架。三者互相配合,各有侧重,形成了不可分割的整体,犹如一张具有三条腿的凳子,缺一不可。在软件能力成熟度模型CMM的18个关键过程域中,有12个与个体软件过程PSP紧密相关,有16个与群组软件过程TSP紧密相关。因此,如果能够熟悉个体软件过程和群组软件过程,不仅有助于工程师改善工作效率,而且也非常有利于组织的过程改善。
为了更有效地改进公司的过程,在这里我建议一种循序渐进的方法。如下图所示:
PSP注重于个人的技能,能够指导软件工程师如何保证自己的工作质量,估计和规划自身的工作,度量和追踪个人的表现,管理自身的软件过程和产品质量。经过PSP学习和实践的正规训练,软件工程师们能够在他们参与的项目工作之中充分利用PSP,从而保证了项目整体的进度和质量。
TSP注重团队的高效工作和产品交付能力,结合PSP的工程技能,通过告诉软件工程师如何将个体过程结合进小组软件过程,通过告诉管理层如何支持和授权项目小组,坚持高质量的工作,并且依据数据进行项目的管理,展示了如何去生产高质量的产品。
CMM注重于组织能力和高质量的产品,它提供了评价组织的能力、识别优先改善需求和追踪改善进展的管理方式。再拓展到本文提到的软件开发过程SDP的话,那就是具有更高层次更高组织性的意义。
总结
如果一个组织正在按照CMM改进过程,则PSP和TSP是和CMM完全相容的。如果一个组织还没有按照CMM改进过程,则有关PSP和TSP的训练,可以为未来的CMM实践奠定坚实的基础。总之,单纯实施CMM并不能完全做到能力成熟度的升级,我国企业还应当将实施CMM与实施PSP和TSP有机地结合起来,才能将CMM发挥最大的效力