论文部分内容阅读
在质量三角形(图1)中,技术当然是非常重要的,技术和人这两个因素是影响产品质量的先决条件,而过程是影响产品质量的第三个重要因素。在我国软件业的发展过程中,随着产品规模和团队规模的增大,以及技术的成熟化,过程瓶颈越来越突出。有人说,“缺乏规范的过程正是国内软件组织的软肋”。国内软件业最缺的正是管理,而CMMI恰好可以补上我们的不足。
1 CMMI模型的概念及其基本思想
CMMI是英文Capacity Maturity Model Integration的简称,即能力成熟度集成模型。CMMI是一套融合多学科的、可扩充的产品集合,CMMI-SE/SW (Capability Maturity Model Integration for Systems Engineering and Software Engineering,CMMI-SE/SW)是系统工程和软件工程能力模型集成,在该模型中,对于系统工程和软件开发过程中需求的建立、项目计划的制定和实施,以及对软件的测试等过程都有详尽的描述。CMMI的思想来源于已有多年历史的产品质量管理和全面质量管理,该模型中融合了全面质量管理的思想,以不断进化的层次反映了软件过程定量控制中项目管理和项目工程的基本原则。其基本思想是:通过不断地对企业的工程过程的基础结构和实践进行管理和改进、控制,解决企业软件生产中所出现的问题,增强研制开发能力,保证按计划、保质保量地制造出高品质的产品。
CMMI的一个重要价值在于它把众多的common sense整合成完整的知识体系,CMMI中贯穿着抓主要矛盾的哲学思想,它与ISO9000的一大不同就是它的分级思想,它承认资源总是相对不足的,问题不可能一下子全解决,要分几步(等级)走,每一步解决一些关键问题(KPA)。再比如它先做管理后做工程的思想,用Humphrey的原话来解释:"看起来,定义和实施一个工程过程似乎要比定义和实施管理过程容易(特别是在技术人员的眼中),但是如果没有管理过程的规定,工程过程很可能会成为进度和成本等压力的牺牲品"。所以在CMMI L2里面全部是项目管理的过程,而产品工程则放到了L3。CMMI作为美国SEI众多专家多年研究的结晶,其中的丰富内涵有待于我们在学习和实践的过程中不断认识,逐步理解。
2 我国软件组织实施CMMI过程改进的发展现状
从美国软件产业的发展过程可以看出,软件产业的发展可以分为三个阶段:结构化生产方式、以过程为中心的生产方式和工业化生产方式。
我国软件组织正在由结构化生产方式向以过程为中心的生产方式和工业化生产方式前进。为了跟上国际竞争的步伐,目前已有很多企业(不论是国营或者民营公司)认识到要按CMMI改进软件过程,实施科学化、系统化的管理,以提高组织的软件过程能力成熟度,这表明,我国软件企业已经具备了改善自我的强大动力。但是,我国软件企业在进行过程改进的道路上仍然存在很多问题,主要表现在以下几个方面:
a)一些组织想通过ISO9000和CMMI提高能力成熟度,但是他们不熟悉CMMI的概念,也不知道CMMI和ISO9000之间究竟有哪些区别;
b)大部分软件组织在软件工程理论和实践两方面都比较薄弱,虽建立了软件过程,但过程阶段不明显,软件生产无序,对进度、预算、质量的预测和控制不得力,常常在遇到问题时就放弃原定计划;重视编程与测试,却忽略需求分析和构架设计;
c)高层管理者对软件管理尚未引起足够的重视,没有配备足够的资源或合格的人员承担过程改进工作;
d)缺少文档化的过程描述,特别是缺少工作文档(如过程中的变更请求报告)、工作量统计文档(如时间和工作量统计表,周状态报告)和风险管理文档(如风险估计报告、风险评测报告);
e)缺乏对过程和产品进行度量,软件过程积累的历史数据很少,因此很难基于历史数据对工作量和进度进行合理的估计。
3 对我国软件企业实施CMMI过程改进的几点建议
软件过程改进是一种含有大量管理成分的工作技术,它主要包括以下三个关键步骤:a) 对比目前的状态和期望达到的状态,找出存在的差距;b) 确定要改变哪一些差距,要改变到什么程度;c) 制定相应的具体的实施计划,其中的“具体”是指:①要有明确的,可以检验的目标;②要定出检验成功与否的标准;③要有具体的实施办法;④指定具体执行计划的人,并明确具体的职责与任务;⑤要明确执行计划的主要领导或协调者,以负责解决在计划执行中出现的问题;⑥要列出“实施计划”所应用的新技术与新工具以及如何获得这些新技术与新工具。
为了帮助软件企业更好地推进CMMI过程改进工作,切实提高软件过程管理能力,结合本人参与的过程改进实践,给出如下建议:
3.1 建立合理的组织机构,配备必要的资源
建立合理的组织机构是做好过程改进工作的有力保障。高层管理者应该把更多的注意力放在过程改进上,为其配备必要的资源,设立一支有相当规模的专职的过程改进队伍,在投资上应达到足够的力度。
这支改进队伍,负责研究软件工程理论和软件过程改进方法,制定和实施过程改进计划,他们是实现企业过程改进活动的具体组织者。在执行计划的过程中,通过检查它的遵从性,在遇到计划偏离时,仔细研究造成偏离的原因,并采取相应的纠正行动,他们是企业进行定期过程诊断的内部评估师和企业过程改进活动的监控者。
3.2 转变观念和工作习惯
过程改进是思想观念和工作方式的改变,是企业文化的转变,它涉及到企业中绝大部分工作人员。CMMI不是个别人的事,组织中每个人都应不同程度的参与,每个人都要想想我应该尽到什么职责,要“调整心态,从我做起”。
对于高层管理者来说,首先需要正确认识CMMI实施带来的额外工作量,CMMI实施最直接的后果就是带来了很多的事务性管理工作,这要求设立一些专职的角色,如SQA、SCM,或者配备适当的工具,把相应的工作量从项目经理的身上分离出来,否则,一旦技术和管理展开竞争,牺牲的肯定是管理;其次,高层管理者有必要改变自己的管理习惯,原来很多事都口头裁决,现在需要先看有没有规范,如果有,就遵循规范,规范是文档化的组织意志;第三,实施CMMI体系就是要打破旧平衡,建立新平衡。在这个过程中,管理体系会相对混乱,对正在运行的项目会产生一定的影响,甚至于在个别企业中,出现技术人员由于适应不了新的工作方式而离职的例子,这些情况,高层管理者都应该有心理准备,对CMMI抱有坚定的信心。
对于项目经理来说,要改变技术本位主义思想。国内的项目经理,大多是技术出身,没有接受过系统的管理知识,心态多是技术带头人而已。CMMI本质就是要解决管理问题,所以对项目经理来说,实施CMMI就是要从技术上分出一部分时间来做管理,项目经理必须主动调整心态以适应新的情况。另外,项目经理还是沟通项目层和管理层的桥梁,对于CMMI的贯彻起着承上启下的关键作用。贯彻CMMI不可能奢望全体人员一致拥护,但是项目经理的积极参与却是必要的。CMMI实施的内部驱动力有两个:高层经理和项目经理。高层经理通过资源和政策驱动,项目经理以实际问题驱动。项目经理要做过程改进的“明白人”,认识到过程改进工作正是为项目服务的,而不单单是被动的服从高层经理的安排和质量经理的规划。
对于质量管理人员来说,要增强服务意识。质量部门是主要的制度制定者,但这并不意味着质量管理人员就应该高高在上。一线开发者是为用户服务的,而职能管理部门又是为一线服务。服务意识的增强体现在深入了解项目经理对过程改进的需求,根据实际需要驱动质量工作重点,争取在局部先有所突破。质量宣传要密切接触一线人员,采取多种灵活方式,多了解反馈,这可能比会议形式的宣贯更有效。过程改进需要不断地成功来推动后续的改进。
对于开发测试人员来说,主要是改变以自我习惯为中心的做事方式,养成遵循过程规范的工作习惯。只有大家关注过程规范,它才有可能得到不断优化和成熟,要避免“两张皮”。开发人员还需要通过自身努力,借鉴PSP的方法提升个体软件能力,这是个自我工程,须以个人的上进心为动力。
3.3 加强培训,提高过程改进技能
实施CMMI过程改进需要建立相当规模的过程改进队伍,但提高这支队伍的质量却比它的数量更重要。要认识到只有高素质的人员,执行成熟的良好过程,才能生产出好的产品。因此,应普遍开展CMMI模型及软件工程基础的培训,使每个岗位的人员都具备过程改进的意识,并掌握必要的过程改进知识和技能。
3.4 加强度量,积累有效数据
度量数据是进行过程改进的基础,要重视过程与产品的度量工作。在项目的整个开发过程中,特别是在里程碑处,要收集过程的执行数据,记录活动状态,既为当前项目的测量和分析提供数据,又可作为历史数据保留下来为今后的项目提供参考。这些数据主要包括:软件规模、工作量、成本和进度的估计数据和实际数据、产品质量度量数据、需求变化情况以及风险分析数据等等。
3.5 加强配置管理,重视辅助工具的开发
应加强软件配置管理及配置管理工具的开发。配置管理最主要的目的是在项目的整个软件生命周期中建立和维护软件项目产品的完整性,系统地控制对配置项的改变,并管理组织的软件工程资产。配置管理的内容繁多,权限管理复杂,开发或采购合适的配置管理工具是非常必要的。
4 结束语
过程改进是为了建立一个有利于研制开发最好的软件和成为最好的软件组织的、优秀的企业文化,以此来帮助企业通过不断的过程改进,实现企业目标,获得最大的经济效益。
我国软件产业方兴未艾,实施CMMI可以在起跑线上改变我国的软件工程文化,改善软件人员的素质,不仅对我国的经济具有重要意义,也是提高软件企业素质,增强软件企业的国际竞争力的必要前提,而且还为软件的出口创汇创造了条件。
CMMI是一个较好的过程改善框架,但CMMI只给出做什么,并没有给出如何做,因此要认真研究如何遵循CMMI模型进行具体操作的问题。对于CMMI,前期要“打破神秘,从头学起”,后期要“调整心态,从我做起”。前期重在学,深入学有利于打破神秘,尽快结束争论和观望;后期鼓励做,要调整心态,改变习惯,从自身开始,方可获得成功。
1 CMMI模型的概念及其基本思想
CMMI是英文Capacity Maturity Model Integration的简称,即能力成熟度集成模型。CMMI是一套融合多学科的、可扩充的产品集合,CMMI-SE/SW (Capability Maturity Model Integration for Systems Engineering and Software Engineering,CMMI-SE/SW)是系统工程和软件工程能力模型集成,在该模型中,对于系统工程和软件开发过程中需求的建立、项目计划的制定和实施,以及对软件的测试等过程都有详尽的描述。CMMI的思想来源于已有多年历史的产品质量管理和全面质量管理,该模型中融合了全面质量管理的思想,以不断进化的层次反映了软件过程定量控制中项目管理和项目工程的基本原则。其基本思想是:通过不断地对企业的工程过程的基础结构和实践进行管理和改进、控制,解决企业软件生产中所出现的问题,增强研制开发能力,保证按计划、保质保量地制造出高品质的产品。
CMMI的一个重要价值在于它把众多的common sense整合成完整的知识体系,CMMI中贯穿着抓主要矛盾的哲学思想,它与ISO9000的一大不同就是它的分级思想,它承认资源总是相对不足的,问题不可能一下子全解决,要分几步(等级)走,每一步解决一些关键问题(KPA)。再比如它先做管理后做工程的思想,用Humphrey的原话来解释:"看起来,定义和实施一个工程过程似乎要比定义和实施管理过程容易(特别是在技术人员的眼中),但是如果没有管理过程的规定,工程过程很可能会成为进度和成本等压力的牺牲品"。所以在CMMI L2里面全部是项目管理的过程,而产品工程则放到了L3。CMMI作为美国SEI众多专家多年研究的结晶,其中的丰富内涵有待于我们在学习和实践的过程中不断认识,逐步理解。
2 我国软件组织实施CMMI过程改进的发展现状
从美国软件产业的发展过程可以看出,软件产业的发展可以分为三个阶段:结构化生产方式、以过程为中心的生产方式和工业化生产方式。
我国软件组织正在由结构化生产方式向以过程为中心的生产方式和工业化生产方式前进。为了跟上国际竞争的步伐,目前已有很多企业(不论是国营或者民营公司)认识到要按CMMI改进软件过程,实施科学化、系统化的管理,以提高组织的软件过程能力成熟度,这表明,我国软件企业已经具备了改善自我的强大动力。但是,我国软件企业在进行过程改进的道路上仍然存在很多问题,主要表现在以下几个方面:
a)一些组织想通过ISO9000和CMMI提高能力成熟度,但是他们不熟悉CMMI的概念,也不知道CMMI和ISO9000之间究竟有哪些区别;
b)大部分软件组织在软件工程理论和实践两方面都比较薄弱,虽建立了软件过程,但过程阶段不明显,软件生产无序,对进度、预算、质量的预测和控制不得力,常常在遇到问题时就放弃原定计划;重视编程与测试,却忽略需求分析和构架设计;
c)高层管理者对软件管理尚未引起足够的重视,没有配备足够的资源或合格的人员承担过程改进工作;
d)缺少文档化的过程描述,特别是缺少工作文档(如过程中的变更请求报告)、工作量统计文档(如时间和工作量统计表,周状态报告)和风险管理文档(如风险估计报告、风险评测报告);
e)缺乏对过程和产品进行度量,软件过程积累的历史数据很少,因此很难基于历史数据对工作量和进度进行合理的估计。
3 对我国软件企业实施CMMI过程改进的几点建议
软件过程改进是一种含有大量管理成分的工作技术,它主要包括以下三个关键步骤:a) 对比目前的状态和期望达到的状态,找出存在的差距;b) 确定要改变哪一些差距,要改变到什么程度;c) 制定相应的具体的实施计划,其中的“具体”是指:①要有明确的,可以检验的目标;②要定出检验成功与否的标准;③要有具体的实施办法;④指定具体执行计划的人,并明确具体的职责与任务;⑤要明确执行计划的主要领导或协调者,以负责解决在计划执行中出现的问题;⑥要列出“实施计划”所应用的新技术与新工具以及如何获得这些新技术与新工具。
为了帮助软件企业更好地推进CMMI过程改进工作,切实提高软件过程管理能力,结合本人参与的过程改进实践,给出如下建议:
3.1 建立合理的组织机构,配备必要的资源
建立合理的组织机构是做好过程改进工作的有力保障。高层管理者应该把更多的注意力放在过程改进上,为其配备必要的资源,设立一支有相当规模的专职的过程改进队伍,在投资上应达到足够的力度。
这支改进队伍,负责研究软件工程理论和软件过程改进方法,制定和实施过程改进计划,他们是实现企业过程改进活动的具体组织者。在执行计划的过程中,通过检查它的遵从性,在遇到计划偏离时,仔细研究造成偏离的原因,并采取相应的纠正行动,他们是企业进行定期过程诊断的内部评估师和企业过程改进活动的监控者。
3.2 转变观念和工作习惯
过程改进是思想观念和工作方式的改变,是企业文化的转变,它涉及到企业中绝大部分工作人员。CMMI不是个别人的事,组织中每个人都应不同程度的参与,每个人都要想想我应该尽到什么职责,要“调整心态,从我做起”。
对于高层管理者来说,首先需要正确认识CMMI实施带来的额外工作量,CMMI实施最直接的后果就是带来了很多的事务性管理工作,这要求设立一些专职的角色,如SQA、SCM,或者配备适当的工具,把相应的工作量从项目经理的身上分离出来,否则,一旦技术和管理展开竞争,牺牲的肯定是管理;其次,高层管理者有必要改变自己的管理习惯,原来很多事都口头裁决,现在需要先看有没有规范,如果有,就遵循规范,规范是文档化的组织意志;第三,实施CMMI体系就是要打破旧平衡,建立新平衡。在这个过程中,管理体系会相对混乱,对正在运行的项目会产生一定的影响,甚至于在个别企业中,出现技术人员由于适应不了新的工作方式而离职的例子,这些情况,高层管理者都应该有心理准备,对CMMI抱有坚定的信心。
对于项目经理来说,要改变技术本位主义思想。国内的项目经理,大多是技术出身,没有接受过系统的管理知识,心态多是技术带头人而已。CMMI本质就是要解决管理问题,所以对项目经理来说,实施CMMI就是要从技术上分出一部分时间来做管理,项目经理必须主动调整心态以适应新的情况。另外,项目经理还是沟通项目层和管理层的桥梁,对于CMMI的贯彻起着承上启下的关键作用。贯彻CMMI不可能奢望全体人员一致拥护,但是项目经理的积极参与却是必要的。CMMI实施的内部驱动力有两个:高层经理和项目经理。高层经理通过资源和政策驱动,项目经理以实际问题驱动。项目经理要做过程改进的“明白人”,认识到过程改进工作正是为项目服务的,而不单单是被动的服从高层经理的安排和质量经理的规划。
对于质量管理人员来说,要增强服务意识。质量部门是主要的制度制定者,但这并不意味着质量管理人员就应该高高在上。一线开发者是为用户服务的,而职能管理部门又是为一线服务。服务意识的增强体现在深入了解项目经理对过程改进的需求,根据实际需要驱动质量工作重点,争取在局部先有所突破。质量宣传要密切接触一线人员,采取多种灵活方式,多了解反馈,这可能比会议形式的宣贯更有效。过程改进需要不断地成功来推动后续的改进。
对于开发测试人员来说,主要是改变以自我习惯为中心的做事方式,养成遵循过程规范的工作习惯。只有大家关注过程规范,它才有可能得到不断优化和成熟,要避免“两张皮”。开发人员还需要通过自身努力,借鉴PSP的方法提升个体软件能力,这是个自我工程,须以个人的上进心为动力。
3.3 加强培训,提高过程改进技能
实施CMMI过程改进需要建立相当规模的过程改进队伍,但提高这支队伍的质量却比它的数量更重要。要认识到只有高素质的人员,执行成熟的良好过程,才能生产出好的产品。因此,应普遍开展CMMI模型及软件工程基础的培训,使每个岗位的人员都具备过程改进的意识,并掌握必要的过程改进知识和技能。
3.4 加强度量,积累有效数据
度量数据是进行过程改进的基础,要重视过程与产品的度量工作。在项目的整个开发过程中,特别是在里程碑处,要收集过程的执行数据,记录活动状态,既为当前项目的测量和分析提供数据,又可作为历史数据保留下来为今后的项目提供参考。这些数据主要包括:软件规模、工作量、成本和进度的估计数据和实际数据、产品质量度量数据、需求变化情况以及风险分析数据等等。
3.5 加强配置管理,重视辅助工具的开发
应加强软件配置管理及配置管理工具的开发。配置管理最主要的目的是在项目的整个软件生命周期中建立和维护软件项目产品的完整性,系统地控制对配置项的改变,并管理组织的软件工程资产。配置管理的内容繁多,权限管理复杂,开发或采购合适的配置管理工具是非常必要的。
4 结束语
过程改进是为了建立一个有利于研制开发最好的软件和成为最好的软件组织的、优秀的企业文化,以此来帮助企业通过不断的过程改进,实现企业目标,获得最大的经济效益。
我国软件产业方兴未艾,实施CMMI可以在起跑线上改变我国的软件工程文化,改善软件人员的素质,不仅对我国的经济具有重要意义,也是提高软件企业素质,增强软件企业的国际竞争力的必要前提,而且还为软件的出口创汇创造了条件。
CMMI是一个较好的过程改善框架,但CMMI只给出做什么,并没有给出如何做,因此要认真研究如何遵循CMMI模型进行具体操作的问题。对于CMMI,前期要“打破神秘,从头学起”,后期要“调整心态,从我做起”。前期重在学,深入学有利于打破神秘,尽快结束争论和观望;后期鼓励做,要调整心态,改变习惯,从自身开始,方可获得成功。