多年来,经过大量调查研究发现:管理仍然是开发软件项目成败的关键。迄今为止,学术界和产业界公认CMM是当前最好的软件过程,但应着重指出的是:单纯实施能力成熟度模型CMM,永远不能真正做到能力成熟度的升级,而需要将实施CMM与实施PSP和实施TSP有机地结合起来,才能达到软件过程持续改善的效果。
软件产业已经或正在经历三个时代,即结构化生产时代(在美国,1975~1995年;我国目前处在这一阶段的后期),以过程为中心的时代(在美国,1985~2005年;我国目前尚处在这一阶段的初期),工业化生产时代(美国从1995年进入这一时代)。这是一条不以人的意志为转移的客观规律。因此,我国的软件产业需要迅速转入以过程为中心,走工业化生产的道路。在软件过程方面,不少前人已为我们做了许多奠基性的工作,特别是美国Carnegie-Mellon大学软件工程研究所(CMU/SEI)提出的能力成熟度模型CMM(Capability Maturity Model)、个体软件过程PSP(Personal Software Process)和群组软件过程TSP(Team Software Process),可作为我们前进的借鉴。
早在20世纪70年代中期,美国国防部就组织力量研究软件项目失败的原因,发现在失败的软件项目中,70%是由于管理不善所造成的,因而认为管理影响全局,并掀起了研究软件管理技术的热潮。20年后,根据美国三份经典研究报告,这一状况并未得到转变:软件开发仍然很难预测,大约只有10%的项目能够在预定的费用和进度下交付符合需求的软件;管理仍然是软件项目成败的主要因素;并指出开发过程中的返工是软件过程不成熟的标志。例如在Capers Jones的报告中就指出,在17个影响软件项目成败的主要因素中,与项目管理直接有关的有6个(软件度量、工作量估计、项目规划、进展报告、需求变化、风险管理),间接有关的有3个(系统构架、开发方法、配置管理)。
为了系统地解决软件项目管理问题,美国国防部于1984年在Carnegie-Mellon大学建立了软件工程研究所,1986年开始研究并于1991年提出能力成熟度模型CMM,1989年开始研究并于1994年提出个体软件过程PSP,1994年开始研究并于1998年由CMU/SEI召开的过程工程年会上第一次介绍了TSP草案,于1999年发表了有关TSP的一本书,使软件过程框架形成一个包含CMM、PSP和TSP三者的严密的整体。
创建自我管理的群组
TSP对群组软件过程的定义、度量和改革提出了一整套原则、策略和方法,把CMM要求实施的管理与PSP要求开发人员具有的技巧结合起来,以按时交付高质量的软件,并把成本控制在预算的范围之内。在TSP中,讲述了如何创建高效且具有自我管理能力的工程小组,工程人员如何才能成为合格的项目组成员,管理人员如何对群组提供指导和支持,如何保持良好的工程环境使项目组能充分发挥自己的水平等软件工程管理问题。
具体地说,TSP的目标为创建具有自我管理能力的群组,管理人员要善于引导和激励群组的全体成员使他们能发挥自己的最高水平,采用CMM来进行软件过程的改革,为处于高成熟度的软件组织的过程改革提供指导,积极培训人才为在大学和研究所讲授工业界常用的群组开发技巧提供蓝本。
四条基本原理
群组软件过程TSP基于以下四条基本原理:应该遵循一个确定的、可重复的过程并迅速获得反馈,这样才能使学习和改革最有成效;一个群组是否高效,是由明确的目标、有效的工作环境、有能力的教练和积极的领导等四方面因素的综合作用所确定的,因此应在这四个方面同时努力,而不能偏废其中任何一个方面;应注意及时总结经验教训,当学员在项目中面临各种各样的实际问题并寻求有效的解决问题方案时,就会更深刻地体会到TSP的威力;应注意借鉴前人和他人的经验,在已经可资利用的工程、科学和教学法经验的基础上来规定过程改进的指令。
在软件开发(或维护)过程中,首先需要按照群组软件过程框架定义一个过程。在设计TSP过程时,需要按照以下七条原则:循序前进的原则,首先在PSP的基础上提出一个简单的过程框架,然后逐步完善;迭代开发的原则,选用增量式迭代开发方法,通过几个循环开发一个产品;质量优先的原则,对按TSP开发的软件产品,建立质量和性能的度量标准;目标明确的原则,对实施TSP的群组及其成员的工作效果提供准确的度量;定期评审的原则,在TSP的实施过程中,对角色和群组进行定期的评价;过程规范的原则,对每一个项目的TSP规定明确的过程规范;指令明确的原则,对实施TSP中可能遇到的问题提供解决问题的指南。
实施需具备的条件
首先需要有高层主管和各级管理人员的支持,以取得必要的资源,这是实施TSP必须具备的物质基础;软件过程的改善需要全体有关人员的积极参与,他们不仅需要有改革的热情和明确的目标,而且需要对当前过程有很好的了解;任何过程改革都有一定的风险,都有一个实践、改革、评审直至完善的循环往复、持续改善的过程,不可能一蹴而就;项目组的开发人员需要经过PSP的培训,使之具备自我改善的能力;整个开发单位的能力成熟度在总体上应处于CMM二级以上。
六项管理原则
在实施群组软件过程TSP的过程中,应该自始至终贯彻集体管理与自我管理相结合的原则,具体地说,应该实施以下六项原则:计划工作的原则,在每一阶段开始时要制订工作计划,规定明确的目标;实事求是的原则,目标不应过高也不应过低而应实事求是,在检查计划时如果发现未能完成或者已经超越规定的目标,应分析原因,并根据实际情况对原有计划作必要的修改;动态监控的原则,一方面应定期追踪项目进展状态并向有关人员汇报,另一方面应经常评审自己是否按PSP原理进行工作;自我管理的原则,开发小组成员如发现过程不合适,应主动、及时地进行改进,以保证始终用高质量的过程来生产高质量的软件,任何消极埋怨或坐视等待的态度都是不对的;集体管理的原则,项目开发小组的全体成员都要积极参加和关心小组的工作规划、进展追踪和决策制订等项工作;独立负责的原则,按TSP原理进行管理,每个成员都要但任一个角色。在TSP的实践过程中,TSP的创始人Humphrey 建议在一个软件开发小组内把管理的角色分成客户界面、设计方案、实现技术、工作规划、软件过程、产品质量、工程支持以及产品测试等八类。如果小组成员的数目较少,则可将其中的某些角色合并,如果小组成员的数目较多,则可将其中的某些角色拆分。总之,每个成员都要独立担当一个角色。
TSP流程
TSP一般将一个软件项目的开发工作分为4个阶段。任何一个应用TSP的项目可以只包括其中的一个阶段,也可以包括几个连续的阶段。在项目开始之前,项目组应该执行启动过程,对整个任务进行全面地规划和组织。在每个阶段之前,项目组应该执行重启过程,对下一个阶段的任务进行规划。一般来说,如果项目组的成员经过了PSP的培训,项目组的启动过程约需3天时间,重启过程约需两天时间。此时,项目组同管理人员一起评审项目计划和分析关键风险。在项目已经启动之后,项目组应每周进行一次项目进展讨论会,另外还应及时向有关主管和客户报告项目的进展情况。
当前版本的TSP使用23个过程指南、14个数据表格和3个标准。在这些过程指南中定义了173个启动和开发步骤。每一个步骤都不复杂,但它们的描述都非常详细,以便开发人员能够清楚地知道下一步应该做什么,应该怎样去做。这些过程指南可用来指导项目组来完成启动过程和一步步地完成整个项目。