软件过程改进开展必须高层管理者支持
1 引言
软件企业在发展到一定阶段时,对软件开发质量、进度和成本会有越来越高的要求,于是软件过程改SPI (Software Process improvement)进成为必然。我国引进过程改进已经多年,包括CMM/CMMI体系、ISO和欧洲一些模型标准的推广等。20世纪90年代初,我国开始引进国际流行的质量管理标准ISO 9000。20世纪90年代末,软件界又开始逐渐把注意力转向了CMM,越来越多的软件企业开始注意软件过程改进SPI。与此同时,以提升项目管理能力为目标的美国项目管理知识体系PMBOK也引入中国。在这些标准、体系引领下,有的企业在质量和过程方面取得显著成效,有的则不够理想,甚至有的没有什么成效,拿到个证书也只是做做样子,用于装扮自己的企业。
为什么会有这样大的差别呢?关键在于企业或组织如何改进自己的过程。无论是借助标准或模型还是自我内部需要,企业需要结合自己的实际,找到可行的方法和途径。这里面涉及公司高级管理层的支持、人力和物力(如工具)的投入、团队实施等一系列问题,只有解决了这些问题过程改进的开展才可能有成效。
进一步说,众多软件企业对如何制定软件过程改进策略?过程改进需要哪些基础支持?过程改进如何开展?等问题并不很清楚,也没有达成某种程度上的共识。这样,过程改进多趋于形式化,进而无法有效开展。
2 软件过程改进开展概述
过程(Process)是为实现既定目标的一系列操作步骤[IEEE-STD-610]。那么,软件过程(Software Process)则是指人们用于开发和维护软件及其相关产品的一系列活动、方法、时间和革新。
软件过程涉及软件工程和软件管理两类,工程类的主要过程域:需求开发、系统设计、软件实现、软件测试、软件维护等等;管理类的主要过程域:项目规划、项目监控、需求管理、质量管理、配置管理等等。
2.1 软件过程改进策略
通常,软件过程改进有自上向下和自底向上两种模式,前者是基于标准的,由标准来规范实践;后者是基于实践的,由组织中待解决问题出发,选择和裁减标准。
对于大、中、小软件企业而言,采取的软件过程改进策略不一样,关键看是否符合自身的实际情况。中小企业的实际情况是:管理基础薄弱,资源不足,生存压力大,缺乏统一而有力的文化,人员素质良莠不齐;而大型企业相反。大型软件企业自上而下的模式比较容易推动,对于中小型软件企业在没有正式评估的压力情况下,采用自底向上模式更合适。
以下是针对中小软件企业的一系列具体的过程改进策略[1]。
策略一:两个方针
重诊断,轻评估以诊断和解决企业实际问题为SPI方法论,不追求商业评估。
策略二:两手抓
实施制度化的同时,并行实施企业文化;既要施压,又要清障。
中小企业往往制度化体系很不健全,存在着随意决策的管理习惯,甚至基本的企业纪律都不具备,企业还处于人治和法制的争论中,这样的状态和某些大企业实施SPI的状况是不同的,需要特别强调行政施压。由于缺乏统一的企业文化,所以理念的统一也要加以重视。
策略三:推行两种工具
要推行配置管理工具和项目管理工具这两种工具,工具将有效分解事务性工作,从而缓解人力资源投入不足的矛盾。
策略四:补两门基础课
为了解决基础薄弱的问题,需要在SPI前期为企业补基础管理和基本软件工程两门课。
软件企业需要补的基础管理内容包括:基本时间管理、角色转变、目标管理、沟通管理、基本人力资源管理等。基本软件工程则包括基本的软件工程生命周期、阶段划分、基本文档编制等。
策略五:发动三方参与
一是高于项目管理的层面,称为高层经理。他们提供资源和战略两方面的支持,所以高层经理应该对体系总体架构、体系实施必要性、可行性、障碍和风险、资源等负有责任。
二是项目管理层面,含项目经理和SPI人员。SPI人员作为制度化体系的执行者和推行者应该加强自身修养,要求别人的事,一定要自己能做到。而项目经理作为主要的一线实施人员,需要对整个体系的细节有深入了解和研究,应该把日常工作时间的30%~50%放在工程化管理相关事宜上,要贯彻公司的SPI整体制度,积极主动在项目组内进行推行。
三是项目组成员,包括开发和测试人员,要求团队以纪律性要求自己,做好局部和整体、短期和长期的矛盾平衡。
2.2 软件过程改进开展的基础支持
软件过程改进SPI是变革管理的一种,凡是变革管理都需要进行干系人分析,包括企业的高级管理层、部门管理、项目经理、项目成员、客户等几部分。软件企业在确定适合自身的实施策略后,需要这些利益相关人的支持,特别是高层管理者的支持。
同时,所谓巧妇难为无米之炊,软件过程改进需要一定的人力、物力的投入,包括设立EPG组织、专职SPI人员、专门的工具等。通常SPI专职人员的比例应该占公司研发团队总数的3~5%;过程数据的采集和分析需要工具的支撑,要考虑是外部购买还是自我开发支撑工具。这些都涉及一些投入成本。
企业有了以上这些基本支持,软件过程改进才能有保障。
2.3 软件过程改进开展的团队实施