中小企业软件过程改进(SPI)五大策略及实施案例
对于SPI(Software Process improvement软件过程改进)策略的选择,实在是仁者见仁,智者见智。也许并没有什么绝对的对错,关键看是否符合自身的实际情况。
对广大中小软件企业而言,存在什么样的实际情况?应该采取什么样的软件过程改进策略呢?
中小企业的实际情况大致如下:管理基础薄弱,资源不足,生存压力大,缺乏统一而有力的文化,人员素质良莠不齐。
软件过程改进有自上向下和自底向上两种模式,前者是基于标准的,由标准来规范实践;后者是基于“实践”的,由组织中待解决问题出发,选择和裁减标准。
对于中小软件企业来说,如果没有正式评估的压力,建议采用自底向上模式。
一、中小软件企业过程改进策略
策略一:两个方针
- 重诊断,轻评估
以诊断和解决企业实际问题为SPI方法论,不追求商业评估。以往实施ISO9000的过程中发现,企业拿证书的愿望常常会冲淡“真正改进”的目的。所以,除非不得已,建议一开始不要把商业评估作为目标,以便将焦点集中在“改进”上。的确,一旦进行商业评估,难保不急功近利,限期取证。SPI如同“治病”,多长时间治好怎么可以人为规定呢?
重诊断,正是前述自底向上方法论的具体贯彻。根据企业的不同状态和症状,实施有针对性的方案,将有望设计出实用性更强、效率更高的应用模型。
- 重实施,轻宣传
我们不妨来看一组数据,这是我们去年发起的一次调查,提问是“您认为软件企业中开发不规范,不能突破管理瓶颈的原因是什么?”
可见,以往我们多年来实施ISO9000这样的体系,但效果差得可怜(客户满意度12%)。
据报道,中国通过ISO9000的企业超过了日本和韩国,但是中国并没有因此成为质量强国!
ISO9000在软件企业的现状,并不能仅仅归结于ISO9000不适合软件企业这一点上,更大的问题在于,人们对体系的“可实施性”研究和重视得不太够。
所以我们提出以高的“过程实施率”(定义的文档被很好的遵守)和“过程性能改善”为SPI目标,不追求宣传效应。
策略二:两手抓
实施制度化的同时,并行实施企业文化;既要施压,又要清障。
中小企业往往制度化体系很不健全,存在着随意决策的管理习惯,甚至基本的企业纪律都不具备,企业还处于“人治”和“法制”的争论中,这样的状态和某些大企业实施SPI的状况是不同的,需要特别强调行政施压。由于缺乏统一的企业文化,所以理念的统一也要加以重视。
CMMII的实质是制度化体系,实施CMMII也是实施全面制度化的有效途径。但是制度和组织文化总是辨证存在的,没有良好的文化保障,制度化将困难重重,而没有制度的支撑,文化也将是无源之水。企业文化的实施从改造企业价值观开始,价值观是企业文化的核心,一个企业中如果好的行为不能得到鼓励,坏的行为不能得到惩罚,那怎么能倡导出有利于制度生存的价值观呢?
两手抓还包括另外一个层次的含义,过程改进要加强推进和减少阻力并重。这针对两种现实中的错误认识:一种认为,员工都是自觉的,只要把道理讲清楚了,制度就能得到实施。这种假定是不现实的,如同法律,如果假设人们都是遵纪守法的,那么法律本身就没必要存在了。实际情况是,人们在组织中总是有区分的,有的人主动顺应变革,有的人推一推也能动,有的人可能推十下也不动,从而成为变革的障碍。所以变革的落实需要一个强的“推力”。另外一个观点刚好相反,认为没必要对员工讲为什么,只要告诉怎样做就行了。这又走到另外一个极端,体系在强力的推动下可能会暂时得到执行,但是由于并没有解决观念转变的问题,一定难以持久。
策略三:推行两种工具
要推行配置管理工具和项目管理工具这两种工具,工具将有效分解事务性工作,从而缓解人力资源投入不足的矛盾。
配置管理工具根据不同的平台推荐使用VSS和CVS,项目管理工具使用微软公司的MSP。使用工具,可有效分解管理工作量,提升工作效率;有助于管理制度的真正落实,使体系更加固定化。
策略四:补两门基础课
为了解决基础薄弱的问题,需要在SPI前期为企业补基础管理和基本软件工程两门课。
CMMI的设计是以美国的软件企业为研究对象,它假定企业在实施CMMI前,已经具备了基本软件工程和基本管理的能力,所以有“先管理、后工程”的观点。就是先把项目管理到位,再实施软件工程(即软件工程到位)。
但是这个假定对于绝大部分的中国软件企业是不成立的。
软件企业需要补的基础管理内容包括:基本时间管理、角色转变、目标管理、沟通管理、基本人力资源管理等。基本软件工程则包括基本的软件工程生命周期、阶段划分、基本文档编制等。
策略五:发动三方参与
按照ISO9000的说法叫全员参与,分成三个层面就是:
- 一是高于项目管理的层面,称为高层经理。他们提供资源和战略两方面的支持,所以高层经理应该对体系总体架构、体系实施必要性、可行性、障碍和风险、资源等负有责任。
- 二是项目管理层面,含项目经理和SPI人员。SPI人员作为制度化体系的执行者和推行者应该加强自身修养,要求别人的事,一定要自己能做到。而项目经理作为主要的一线实施人员,需要对整个体系的细节有深入了解和研究,应该把日常工作时间的30%~50%放在工程化管理相关事宜上,要贯彻公司的SPI整体制度,积极主动在项目组内进行推行。
- 三是项目组成员,包括开发和测试人员,要求团队以纪律性要求自己,做好局部和整体、短期和长期的矛盾平衡。
特别要关注试点项目的PM(项目经理)选择,选择好的PM意味着SPI一半的成功。
需要说明的是,自底向上并不是绝对不做正式评估,如果需要,等到水到渠成再实施评估,不仅使得过程改进更实在,而且只需投入少量的资金就可获得评估。
二、以项目形式管理软件过程改进(SPI)
以项目形式管理软件过程改进,特别有利于提高团队凝聚力、规避风险、明确目标、提高效率,而且由于SPI项目组与其他项目组形成了一种矩阵式组织结构,可以有效促进组间交流。所以对于SPI这样一件比较复杂的工程来说,以项目形式进行管理将是成功的重要保证。
国外的一项有关SPI(Software Process Improvement软件过程改进)的调查表明,没有很好地对过程改进进行管理造成了至少70%以上的软件企业改进失败或挫折!当我们问自己如下问题的时候,能否迅速给出满意的答案——
- SPI强调管理,自身是如何管理的?
- SPI提供方法论,自己的方法论如何?
- SPI强调做事要有计划性,自身计划性如何?
- SPI倡导风险管理,自身的风险被很好识别了吗?
本文试图给出一种对SPI自身进行管理的方法——“以项目形式管理SPI”。
以项目形式管理SPI通常分为如下五步骤:
- 体系诊断
- 方案设计
- 项目策划
- 过程管理
- 项目验收总结。
- 体系诊断
诊断是一切过程改进和管理咨询的前奏,对于不以取证为目的的软件过程改进来说,这一步尤其重要。
“过程诊断”和“过程审计”有着某种程度的相似性,通常的方式为面谈、文档查阅、检查表填写等形式。
典型的基于CMMI的检查表(软件项目跟踪和监督)举例如下:

典型的SPI诊断花费大约为2~3人/日,这和组织的成熟度、组织的历史长短、管理和业务的复杂度都有关系。
对诊断过程的漠视是自上向下改进策略的最大弊端。
- 方案设计
在了解了组织、项目的实际状态以后,就可以有针对性地提出解决方案了,这一步骤称为方案设计。

在上图方案中,我们可以看到主要的元素来自于CMMI、SEBOK(软件工程)、Good Practice(最佳实践)。这种结果是与该企业的如下现状相适应的:
- 首先,该企业没有形成基本的软件工程流程。
- 其次,项目没有生命周期的概念,无明确启动和验收点,正如其项目经理所言,“我们的项目结束点要等到下一个项目已经开始,本期项目不得不结束时才会出现”。
- 再次,该企业整体管理基础薄弱,资源提供不充分,这种情况下,在大企业顺理成章的事情可能在这里都是问题,所以需要大量的变通和折衷策略,这些都被归纳在GoodPractice中。
诸如此类的方案设计,存在两个裁减特征:
- 一是横向裁减,可以在打破现有知识体系的基础上,创造性的构建新体系;
- 其二是纵向裁减,比如对于CMMI具体KPA,也可以分两步或更多步来达到要求。所有这些裁减都会带来更多的灵活性。
SPI方案的编制需要涵盖如下内容:本组织软件过程改进的历史,过程诊断(包括诊断方法、诊断结果和差距分析),改进方案(包括总体目标、总体工程化管理系统设计和详细改进措施),资源需求预测,计划进度概要(包括前提和承诺、资源需求预测),风险,里程碑。
- 项目策划
方案得到认可后,可启动项目策划。SPI的项目策划要求与其他项目策划的要求并无多少差异,主要是编制一份项目计划,有如下内容:项目目标(包括整体目标和本阶段目标),假定和约束,项目组织(包括组织结构、接口关系、报告关系和责任矩阵),项目进度跟踪方式,项目里程碑,交付物(包括文档编制和人员培训),风险管理,项目激励,项目验收。
值得一提的是SPI风险管理,其说明如下表。

- 过程管理
计划制定好以后,还要对SPI的实施过程进行定期和不定期的过程跟踪,一般可通过“周”和“里程碑”两种周期进行跟踪。周跟踪的内容为进度、完成量、问题和风险,通过周报和周会的形式进行;里程碑跟踪的内容为进度、工作量、人力开销、风险等,还要对项目管理的经验和教训进行总结,里程碑也是识别典型案例和收集最佳实践的良好时机。里程碑跟踪活动通常包括“里程碑总结报告编制”和“里程碑总结会”两种形式。
- 项目验收总结
对于自底向上的软件过程改进,并没有标准的验收准则可利用,这要求组织根据自身裁减的体系编制自己的验收准则。验收准则有定性和定量两种形式,定量适合于有一定管理基础的组织,需要有足够的、可信的、可比的历史数据。但多数中小软件企业可能在起步阶段只能选择定性验收的方式,这种定性验收方式常常是“先僵化、再固化、后优化”理念的一种体现。
项目验收后,组织需要进行SPI项目的最后一项活动——项目总结,需要提交书面报告并召开总结会,项目总结中要统计汇总SPI本身数据、进度、开销、偏差及分析,还要识别和共享经验教训。这一阶段的工作将为今后的SPI持续改进打下良好的基础。SPI将进入下一个改进循环。


