软件工程部 陈治伦
UNIDA公司自成立之日起就开始承接软件开发项目,七年来完成了数十个应用软件的开发,从DOS到Windows到UNIX、从单机版到网络版到多层结构、从一个人单兵作战到小组开发到多组协同开发,走过了许多艰辛的道路。随着软件项目在公司业务份额中的不断扩大,软件开发人员的数量也急剧上升,使软件工程部成为了公司内最大的一个部门。
我们一直不懈追求的目标是:在预定的时间内、用预定的投资、开发出客户满意的软件产品。这实际上也公司要向软件企业发展的基本条件。正是基于这种认识,我们在2000年通过了ISO 9001认证,实施一段时间之后,却发现还有许多更深层次的问题仍然未得到解决,软件质量、开发进度及开发经费超出预算等问题依然困扰着我们。在这种情况下,美国卡内基-梅隆大学软件工程研究所推出的软件过程能力成熟度模型棗SEI CMM得到了公司高层领导及全体软件工程人员的一致认同,并得以立即着手实施CMM。
促使我们下定决心实施cmm的另一个原因,促使我们下定决心实施CMM的另一个原因,是公司决策层有一个战略目标:在条件成熟的时候,借鉴印度软件业的成功经验,开展承接海外软件定制业务。而想要打入欧美市场、特别是美国市场的话,通过CMM的认证也是一张必不可少的通行证。虽然有了CMM这块“敲门砖”,企业也不一定能成功地进入国际市场,但至少能够比较容易地得到客户的认同。
我们在软件项目开发过程中面临的主要问题是:客户要求软件系统实现的功能越来越多,系统越来越庞大和复杂,相应地,参与开发项目的工程师人数也越来越多,在这种情况下,如何保证项目能按期完成?如何有效地减少错误数目,提供高品质的软件?如何缩短软件的开发周期,降低软件的开发成本?如何预防软件开发过程中可能出现的风险?这些问题已经成为制约公司在软件方面快速发展的严重障碍,而此时CMM的引入正好符合了我们的迫切需要。
CMM即软件能力成熟度模型,它把软件过程从无序到有序的进化过程分成几个阶段,并将这些阶段排序,形成一个逐层提高的平台,使每个平台的过程能力能为达到下一更高级的平台打下基础。它可以指导软件开发组织,通过确定当前过程的成熟度并识别出执行软件过程的薄弱环节,通过解决对软件质量和过程改进至关重要的关键问题,来形成对其过程的改进策略;通过关注并认真实施关键实践活动,稳步地改善其全组织的软件过程,使软件过程能力可持续增长。
但是,任何一种基于模型的软件过程改善都要承担一定的风险,因为模型都要建立在假设的基础上。我们在实施CMM的过程中绝不能仅仅拘泥于CMM模型,而是应该强调进行软件过程的改善,打破模型和理论的界线,将ISO 9000、CMM及其他管理和工程思想融合在一起,使其共同服务于公司的需求。为了完善整体的质量体系,我们明确了自己的实施策略:在全公司范围内广泛实施ISO 9000的基础之上,选择几个项目的软件开发过程中进行CMM理论试点,然后逐步推广试点经验。
为了实施CMM,我们建立了SEPG(Software Engineering Process Group,软件工程过程组),全面负责组织内部的软件过程改善,将软件过程改善大体分为四步:
第一,依据CMM模型评估软件过程,确定目前软件过程的强项和弱项;
第二,据评估报告和改进建议,确定软件过程改进的关键点,制定软件过程改进计划;
第三,依据过程改进计划实施软件过程改进工作,包括编制软件过程文档、选定试点项目、制定具体实施计划和培训计划;
第四,推广试点项目的软件过程改进经验。
改革总是困难的,我们的软件过程改进工作也会遇到很多困难。就像实施ISO 9001一样,质量管理体系实施的首要问题是解决人的问题,解决新制度与原有行为习惯之间的冲突。但是,我们有高层管理者的支持,有各级相关人员的理解与配合,CMM的实施一定能够获得成功。