张宜轩
摘要:介绍PSP、TSP、CMM三者的含义,以及在实际项目组织管理、软件开发过程中各自担当的作用,并浅析如何将三者有机地结合起来,从而实现高效管理团队、开发面向用户的高质量产品的组织目标。
关键词:个人软件过程(PSP);团队软件过程(TSP);软件能力成熟度模型(CMM);组织目标
一、组织目标完成过程的现状以及存在的问题
近年来,国内已有多家企业通过并实施了软件能力成熟度模型(CMM)、个人软件过程(PSP)、团队软件过程(TSP)等各级认证,将它们成功地应用到软件开发过程和组织管理过程中去。尽管如此,因此三者之间存在同一的协调与配合,导致一部分生产出的软件产品在交付用户过程或在后期维护过程中会出现各类问题或漏洞,因此我们只有三者兼顾,才能有效地改善过程,才能有效改善过程,最终在整体角度缩短完成时间、降低所需成本。
二、PSP/TSP/CMM简介
(一)PSP(个人软件过程)
PSP过程由一系列方法、表格、脚本等组成,用以指导软件开发人员计划、度量和管理,具体理解他们的工作。就是说PSP提供了一种模式帮助软件开发人员从个人角度出发,收集时间、缺陷、工作量等数据,对比计划内容与实际结果,从中总结和感知到作为软件开发人员还有哪些缺陷和不足并针对自己的问题进行改进。PSP过程与具体的技术(设计语言、工具、算法思想等)相对独立,在帮助软件开发人员做出各个阶段的计划后软件开发人员按照既定目标进入开发周期,不断调整与计划之间的差距,从而最大化地从个人角度提高软件开发的实际效率。PSP过程是对软件开发人员的持续改进过程,这种结构性框架虽然对于团队软件过程它使用的范围小的多,但其中的管理思想、发挥作用等确实是举足轻重的。
(二)TSP(团队软件过程)
TSP过程与PSP过程不同,它更加强调对群组软件过程的定义、度量且提供了一种策略和方法,与PSP过程相较,它辖制的范围要大得多、管理的事务也相对庞杂,作为管理者,一方面需要思考如何筛选合格的开发组工作人员,为每个人分配不同的角色,大致承担什么职责:以10人团队为例,作为管理人员需要充分调查谁的编程能力上乘、谁的测试能力强劲、谁的后期维护水平优秀等等。
“尺有所长,寸有所短”,TSP过程的任务分配不是简单的排列座位,而更加注重各子过程的实际运行情况。如果角色稍有重复,势必会造成时间的浪费;如果分配工作任务与实际能力水平不匹配,亦会造成工作流程协调、衔接的不顺畅。更多地,TSP过程为管理者提供了一种模式用以管理整体团队事务,将PSP过程中的个人技巧按一定策略进行安排,对群组管理提供强有力的支持和保障。
(三)CMM(軟件能力成熟度模型)
CMM是一种协助企业进行软件质量与管理流程评估的标准,目的是克服软件生产的危机。CMM的核心就是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控研究,使更加科学化、标准化。CMM虽然是一个优秀的框架,但人员、技术、过程是支撑软件开发平台的三大要素,少了哪一个都不行:为了解决软件危机,人们尝试了形式化描述语言、结构化开发方法等工具,但这并不意味着实施CMM就一定带来软件企业开发能力的提高。
三、如何将三者有效结合服务于组织目标
介绍完上述三者的含义以及各自作用,我们更应该思考如何确定三者的关系以及如何服务组织目标。
根据前面的描述,我们知道:软件的生产过程及其他许多子过程,软件开发者以及用户,系统使用过程都存在变化与波动。要使一个软件过程对软件生产的改善真正有所帮助,其框架应当是由CMM、TSP、PSP组成的一个完整体系,即组织、群组和个人三位一体,对软件工程和管理实践进行指导和支持。如果仅仅进行某项应用的单独维护,所起到的作用自然是微乎甚微。
CMM改善是过程改善的第一步,提供了评价组织的能力、识别优先改善需求和追踪改善进展的管理方式。对于企业自身来说,CMM改善不仅仅带来的是优化,更大程度上带来的是对企业软件产品质量的不断提升,CMM改善后才能让整个企业、整个团队自上而下地意识到质量的重要性,从而建立起有效地项目小组。但是从另一方面来说,CMM规范并不代表完全的生搬硬套,它实现的成功与否与组织内部成员的积极参与和灵活性、创造性头脑思想密不可分。如果生搬硬套,反而失去了CMM规范的原始定义。
至于PSP(个人软件过程)来说,是用来指导软件开发个体保证自己的工作质量和规划自身工作的;对于一个团队来说,个人表现的好坏直接或间接影响了整个团队的进度和软件开发的质量,经过PSP学习和实践过程,对软件开发个体的应用算法能力可能没有质的飞跃,但这样一个科学的过程却可以精准的提高工作效率,而且效率提升会在软件开发周期的不断推进中越来越多地显示出来,而且PSP过程为管理人员在TSP过程阶段提供了极为重要的参考。
TSP结合了CMM的管理方法和PSP的工作技能,通过层次传递将个人软件过程的表现反映给管理人员和软件工程师,让管理人员等明确如何将个体过程融入小组软件开发过程,继而与整个管理系统融合,向组织展示如何应用CMM的原则和PSP技能去生产高质量的产品。
通过上文的分析我们可以发现:CMM/TSP/PSP三者互为表里,互相依赖,它们对促进软件生产的科学化、管理话,提升软件过程的生产能力意义重大,一款软件字开发成型伊始,定然要接收用户的检验和考量,还要考虑被技术进步潮流淘汰的风险,后期巨大的维护成本等问题,CMM/TSP/PSP代表了目前国际上软件过程管理研究方面最新的成果。试想我们不参照这样一个标准或不遵循此类模式进行开发和管理,我们如何节约各方面的成本,有效应对软件危机?只有采用CMM/TSP/PSP三者结合的模式,才能促进软件生产的科学化管理,为软件的工业化奠定基础,当然此模式也没有完全解决上述的各类问题,具体的使用效果还依赖于管理者的管理水平。
四.总结
因为软件过程改进是一个循序渐进的过程,在使用CMM/TSP/PSP过程中,我们不能盲目应用,我们必须在套用之前深入研究并理解其中的理论,然后根据自身开发的实际情况和实践经验制定可行方案,不断总结经验以期实现更高质量的产品。
参考文献:
[1]何新贵等 《软件能力成熟度模型》[M] 北京:清华大学出版社,2000
[2]韩丹、袁昱译 《小组软件开发过程》[M] 北京:人民邮电出版社,2000