论文部分内容阅读
[摘要] 中小型软件企业要想成功地进行软件过程改进就必须建立起一套适合企业自身特点的改进框架,在分析国内中小型软件企业特点的基础上,结合已有的软件过程改进模型给出了一种软件过程改进框架。
[关键词] 软件过程改进中小型软件企业CMMI
软件企业只有对软件过程进行有效管理、将过程规范化并不断改进才能在预算的时间和成本下生产高质量的软件产品,从而在激烈竞争的市场环境中提高其竞争力。
我国绝大部分软件企业属于中小型软件企业,它们管理软件过程的能力还比较弱,软件过程管理的规范化和标准化程度不高。国际上采用的软件过程改进模型如CMM/CMMI是软件过程改进领域的重要成果,它是适用于软件企业质量管理和过程改进的重要标准。但是,这些模型主要是针对大型软件企业的,对于国内为数众多的中小型软件企业并不完全适合。因此,寻找一种适合国内中小型软件企业的软件过程改进框架显得非常重要。以下在分析中小型软件企业特点和借鉴CMMI和SPP理论基础上,给出了一个面向国内中小型软件的软件过程改进框架(Software Process Improvement Framework,SPIF)。
一、国内中小型软件企业特点
我国的软件组织以中小企业为主,50人以下的软件企业占大多数,这些企业有一些共同的特点。
1.人员少,一般在20人~150人之间。流动性很大,企业的组织结构不像大企业那样健全,经常是一人多职,既做开发人员,又做测试人员,甚至还作设计人员。
2.资金不足,难以进行企业级的大规模的过程改进以及相关的培训活动。
3.软件过程不明显,甚至没有明确定义的软件过程。一个项目甚至整个企业是以少数技术骨干为支撑,凭借他们的聪明才智来保证项目的顺利进行和企业的生存发展。开发人员一般对技术比较重视,而对软件过程则表现出不关心。
4.企业从事的软件生产呈现明显的领域特征。中小软件企业经常是给特定用户开发为其专门使用的软件产品或承接大的软件企业的子项目,而且这些软件产品和项目常集中于某一领域,因此在该领域企业往往积累了较丰富的开发经验和技术。
二、构建SPIF的理论基础
1.CMMI的过程域(KPA)。CMMI过程域分为四类:过程管理类、项目管理类、工程类和支持类。
过程管理类的过程域可以分为基本的过程管理过程域和高级过程管理域。基本的过程管理过程域包括组织过程焦点(OPF),组织过程定义(OPD)和组织培训(OT);高级过程管理过程域包括组织过程性能(OPP)和组织革新和部署(OID)。
项目管理类过程域也分为基本的和高级的两种。基本的项目管理类过程域包括了项目策划(PP),项目监督与控制(PMC)和供应商协议管理(SAM)过程域;高级项目管理类过程域包括集成项目管理(IPM),风险管理(RSKM),集成团队(IT)和定量项目管理(QPM)。
工程类过程域包括了各工程领域的开发和维护活动,集成了软件工程和系统工程,它包括了需求开发(RD),需求管理(REQM),技术解决(TS),产品集成(PI),验证(VER)和确认(VAL)等过程域。
支持类过程域涵盖了支持产品开发和维护的活动。支持类过程域也分为基本的支持类过程域和高级的支持类过程域两种。基本的支持类过程域有度量与分析(MA),过程和产品质量保证(PPQA),配置管理(CM)。高级的支持类过程域包括组织集成环境(OEI),原因分析和解决(CAR),决策分析和解决等过程域(DAR)。
2.SPP理论。SPP(Simplified Parallel Process),“精简并行过程”是林锐博士于2002年提出来的。SPP是对CMMI3级以内各过程域的内容和要求做了“精简”处理而创作出一种“软件过程改进方法和规范”。它由众多的过程规范和文档模板组成,主要用于指导国内软件企业进行软件过程能力的持续地改进。CMMI是SPP的主要参考标准,但是SPP并不是对CMMI进行简化处理后的结果。两者都是用于指导软件过程改进的方法论,CMMI主要论述“应当做什么才能使软件过程能力达到CMMI某种等级”,而SPP则论述“应当怎样做才能使软件过程能力达到CMMI3级水平”。
三、面向国内软件企业软件过程改进框架(SPIF)的建立
1.SPIF中的过程域(KPA)组成。SPIF(Software Process Improvement Framework)的建立是基于CMMI2、CMMI3级中的KPA,SPIF中的KPA分别是需求管理、需求开发、系统设计、代码实现与测试、项目策划、项目监督与控制、立项管理、结项管理、度量与分析、过程与产品质量保证、配置管理,本框架结合了中小型软件企业的特点,具有较强的针对性。
2.SPIF中各KPA的分析。
(1)需求管理过程域。需求管理过程域是许多过程域实施的前提,如果需求以失控的状态进入软件过程,那么从源头上就失去了项目的质量保证,而好的需求管理能避免需求范围界定不清、需求变更失控等不利局面的出现。其目的是管理项目的产品和产品构件的需求,标识哪些需求与项目计划及工作产品之间不一致。通过适当的步骤,确保需求在项目的各个层面上动态地保持一致,一旦出现不一致,则启动相关的处理过程域,使其调整到一致。
(2)需求开发过程域。需求开发是一个重要的过程域,它的质量决定了研发产品的方向。如果需求没有把握准确,不仅产品在研发过程中需要返工,而且上市后不能满足客户的需求,那么必然使企业利润的获取大打折扣,从而影响企业的发展。其目的是产生和分析用户需求、产品需求和产品组件需求。
(3)系统设计过程域。系统设计过程域是对产品的体系结构、用户界面、模块、数据库等进行设计,从而在需求和代码之间建立桥梁,指导开发人员去开发产品。
(4)代码实现与测试过程域。代码实现与测试过程域的目的是根据的用户需求,系统架构,系统设计的要求编写并测试整个系统的代码,确保产品最终满足用户的需求。
(5)项目策划过程域。项目策划是对人员角色、任务进度、经费、设备资源、工作成果等做出合适的安排,制定出一些计划(包括高层的和细节的),使大家按照计划行事,最终顺利地达到预定的目标。其目的是为项目的开发和管理工作制定合理的行动纲领(即项目计划),使所有人员按照该计划有条不紊地开展工作。
(6)项目监督和控制过程域。为了保证软件系统在预期的工作量内按时保质的完成,需要定期地对其主要项目进行跟踪、监测和调整,跟踪的对象通常有规模、工作量和成本、计算机资源、进度、风险和软件工程技术活动等。其目的是通过周期性的跟踪项目计划的各种参数,不断了解项目的进展情况,以便当项目实际进展状况明显偏离计划时能够及时适当地采取纠正措施。
(7)立项管理过程域通过规范化的流程,判断并采纳符合企业根本目标的立项建议,提供合适的资金和资源,使立项建议成为正式的项目,并进行相应的筹备活动。反之,拒绝不能给企業带来利益的立项建议,避免浪费人力资源、资金和时间。
(8)结项管理过程域。结项管理过程域是对项目的有形资产和无形资产进行清算,以利用可复用的软件成果;对项目进行综合评估,如评估项目完成情况、项目质量、项目对企业的贡献等,评估报告可作为考核项目人员业绩的重要依据;总结经验教训,将产品入库,形成组织财富。
(9)度量与分析过程域。现代软件工程理论认为,要想控制软件质量就必须进行软件度量,软件度可分为产品度量、项目度量和过程度量。它们分别对软件产品质量、软件项目实施质量和软件过程质量进行量化,软件度量是成功实施过程改进的保障。其目的是在于发展和维持度量能力,以便支持对管理信息的需要。
(10)过程和产品质量保证过程域。过程和产品质量保证过程域引入的动机是为了有一个相对独立于项目的成员,能够以第三方角色保证项目组成员遵守事先的约定,遵守作业流程以及对产品制定的标准和规则,这就好像社会中的司法部门,起监督执行的作用。其目的是使工作人员和管理者能客观了解过程和相关的工作产品,确保所策划的过程得以实施,从而支持交付高质量的产品和服务。
(11)配置管理过程域。配置管理过程域目的是运用配置标识、配置控制、配置状态统计和配置审计,建立和维护工作产品的完整性。
3.框架中各KPA的流程。各KPA流程都由角色小组负责,流程中包括产品(输入和输出产品)、主要步骤(主要活动或任务)和度量(见图)。
输入产品是指执行该流程的任务(活动)所需要的数据和文档,包括其他流程生成的工作产品级组织的各种规范和模板。进入准则是指进行该流程所必须的前提条件,如所需的工具,资源级任务分配等。主要步骤是指完成该流程的产品所需要进行的相关工作,结束准则是指结束此流程所要满足的条件,度量主要是指对当前流程所花费的主要工作量的统计,准确地度量出工作量,既可以掌握当前流程的情况,对于今后估算其他数据也有重要意义。
KPA的流程关系描述图
4.SPIF各KPA与CMMI2、CMMI3的对应关系(见表)
SPIF的KPA与CMMI2、CMMI3级KPA的对应关系表
四、结束语
本文给出的软件过程改进框架是在综合考虑国内中小型软件企业特点的基础上以CMMI和SPP理论为基础构建的,其目的是帮助国内中小型软件企业提高软件能力成熟度。今后的工作需要在更多实践的基础上对SPIF进一步规则化和细化,以提高其可操作性,并且在未来的研究中应建立和完善适合具体软件企业的裁剪指南。
参考文献:
[1]Capability Maturity Model:Integration (CMMISM),Version 1.1 for Software Engineering (CMMI-SW,V1.1),Staged Representation,2002
[2]Dennis M.Ahern,Aaron Clouse,Richard Turner 著.CMMI精粹—集成化过程改进实用导论(第二版)(陈波 译)[M].北京:清华大学出版社,2005.91~121
[3]林锐王慧文董军:CMMI 3级软件过程改进方法与规范.北京:电子工业出版社,2003.35~210
[4]羅运模谢志敏:CMMI软件过程改进与评估[M].北京:电子工业出版社,2004. 22~118
[关键词] 软件过程改进中小型软件企业CMMI
软件企业只有对软件过程进行有效管理、将过程规范化并不断改进才能在预算的时间和成本下生产高质量的软件产品,从而在激烈竞争的市场环境中提高其竞争力。
我国绝大部分软件企业属于中小型软件企业,它们管理软件过程的能力还比较弱,软件过程管理的规范化和标准化程度不高。国际上采用的软件过程改进模型如CMM/CMMI是软件过程改进领域的重要成果,它是适用于软件企业质量管理和过程改进的重要标准。但是,这些模型主要是针对大型软件企业的,对于国内为数众多的中小型软件企业并不完全适合。因此,寻找一种适合国内中小型软件企业的软件过程改进框架显得非常重要。以下在分析中小型软件企业特点和借鉴CMMI和SPP理论基础上,给出了一个面向国内中小型软件的软件过程改进框架(Software Process Improvement Framework,SPIF)。
一、国内中小型软件企业特点
我国的软件组织以中小企业为主,50人以下的软件企业占大多数,这些企业有一些共同的特点。
1.人员少,一般在20人~150人之间。流动性很大,企业的组织结构不像大企业那样健全,经常是一人多职,既做开发人员,又做测试人员,甚至还作设计人员。
2.资金不足,难以进行企业级的大规模的过程改进以及相关的培训活动。
3.软件过程不明显,甚至没有明确定义的软件过程。一个项目甚至整个企业是以少数技术骨干为支撑,凭借他们的聪明才智来保证项目的顺利进行和企业的生存发展。开发人员一般对技术比较重视,而对软件过程则表现出不关心。
4.企业从事的软件生产呈现明显的领域特征。中小软件企业经常是给特定用户开发为其专门使用的软件产品或承接大的软件企业的子项目,而且这些软件产品和项目常集中于某一领域,因此在该领域企业往往积累了较丰富的开发经验和技术。
二、构建SPIF的理论基础
1.CMMI的过程域(KPA)。CMMI过程域分为四类:过程管理类、项目管理类、工程类和支持类。
过程管理类的过程域可以分为基本的过程管理过程域和高级过程管理域。基本的过程管理过程域包括组织过程焦点(OPF),组织过程定义(OPD)和组织培训(OT);高级过程管理过程域包括组织过程性能(OPP)和组织革新和部署(OID)。
项目管理类过程域也分为基本的和高级的两种。基本的项目管理类过程域包括了项目策划(PP),项目监督与控制(PMC)和供应商协议管理(SAM)过程域;高级项目管理类过程域包括集成项目管理(IPM),风险管理(RSKM),集成团队(IT)和定量项目管理(QPM)。
工程类过程域包括了各工程领域的开发和维护活动,集成了软件工程和系统工程,它包括了需求开发(RD),需求管理(REQM),技术解决(TS),产品集成(PI),验证(VER)和确认(VAL)等过程域。
支持类过程域涵盖了支持产品开发和维护的活动。支持类过程域也分为基本的支持类过程域和高级的支持类过程域两种。基本的支持类过程域有度量与分析(MA),过程和产品质量保证(PPQA),配置管理(CM)。高级的支持类过程域包括组织集成环境(OEI),原因分析和解决(CAR),决策分析和解决等过程域(DAR)。
2.SPP理论。SPP(Simplified Parallel Process),“精简并行过程”是林锐博士于2002年提出来的。SPP是对CMMI3级以内各过程域的内容和要求做了“精简”处理而创作出一种“软件过程改进方法和规范”。它由众多的过程规范和文档模板组成,主要用于指导国内软件企业进行软件过程能力的持续地改进。CMMI是SPP的主要参考标准,但是SPP并不是对CMMI进行简化处理后的结果。两者都是用于指导软件过程改进的方法论,CMMI主要论述“应当做什么才能使软件过程能力达到CMMI某种等级”,而SPP则论述“应当怎样做才能使软件过程能力达到CMMI3级水平”。
三、面向国内软件企业软件过程改进框架(SPIF)的建立
1.SPIF中的过程域(KPA)组成。SPIF(Software Process Improvement Framework)的建立是基于CMMI2、CMMI3级中的KPA,SPIF中的KPA分别是需求管理、需求开发、系统设计、代码实现与测试、项目策划、项目监督与控制、立项管理、结项管理、度量与分析、过程与产品质量保证、配置管理,本框架结合了中小型软件企业的特点,具有较强的针对性。
2.SPIF中各KPA的分析。
(1)需求管理过程域。需求管理过程域是许多过程域实施的前提,如果需求以失控的状态进入软件过程,那么从源头上就失去了项目的质量保证,而好的需求管理能避免需求范围界定不清、需求变更失控等不利局面的出现。其目的是管理项目的产品和产品构件的需求,标识哪些需求与项目计划及工作产品之间不一致。通过适当的步骤,确保需求在项目的各个层面上动态地保持一致,一旦出现不一致,则启动相关的处理过程域,使其调整到一致。
(2)需求开发过程域。需求开发是一个重要的过程域,它的质量决定了研发产品的方向。如果需求没有把握准确,不仅产品在研发过程中需要返工,而且上市后不能满足客户的需求,那么必然使企业利润的获取大打折扣,从而影响企业的发展。其目的是产生和分析用户需求、产品需求和产品组件需求。
(3)系统设计过程域。系统设计过程域是对产品的体系结构、用户界面、模块、数据库等进行设计,从而在需求和代码之间建立桥梁,指导开发人员去开发产品。
(4)代码实现与测试过程域。代码实现与测试过程域的目的是根据的用户需求,系统架构,系统设计的要求编写并测试整个系统的代码,确保产品最终满足用户的需求。
(5)项目策划过程域。项目策划是对人员角色、任务进度、经费、设备资源、工作成果等做出合适的安排,制定出一些计划(包括高层的和细节的),使大家按照计划行事,最终顺利地达到预定的目标。其目的是为项目的开发和管理工作制定合理的行动纲领(即项目计划),使所有人员按照该计划有条不紊地开展工作。
(6)项目监督和控制过程域。为了保证软件系统在预期的工作量内按时保质的完成,需要定期地对其主要项目进行跟踪、监测和调整,跟踪的对象通常有规模、工作量和成本、计算机资源、进度、风险和软件工程技术活动等。其目的是通过周期性的跟踪项目计划的各种参数,不断了解项目的进展情况,以便当项目实际进展状况明显偏离计划时能够及时适当地采取纠正措施。
(7)立项管理过程域通过规范化的流程,判断并采纳符合企业根本目标的立项建议,提供合适的资金和资源,使立项建议成为正式的项目,并进行相应的筹备活动。反之,拒绝不能给企業带来利益的立项建议,避免浪费人力资源、资金和时间。
(8)结项管理过程域。结项管理过程域是对项目的有形资产和无形资产进行清算,以利用可复用的软件成果;对项目进行综合评估,如评估项目完成情况、项目质量、项目对企业的贡献等,评估报告可作为考核项目人员业绩的重要依据;总结经验教训,将产品入库,形成组织财富。
(9)度量与分析过程域。现代软件工程理论认为,要想控制软件质量就必须进行软件度量,软件度可分为产品度量、项目度量和过程度量。它们分别对软件产品质量、软件项目实施质量和软件过程质量进行量化,软件度量是成功实施过程改进的保障。其目的是在于发展和维持度量能力,以便支持对管理信息的需要。
(10)过程和产品质量保证过程域。过程和产品质量保证过程域引入的动机是为了有一个相对独立于项目的成员,能够以第三方角色保证项目组成员遵守事先的约定,遵守作业流程以及对产品制定的标准和规则,这就好像社会中的司法部门,起监督执行的作用。其目的是使工作人员和管理者能客观了解过程和相关的工作产品,确保所策划的过程得以实施,从而支持交付高质量的产品和服务。
(11)配置管理过程域。配置管理过程域目的是运用配置标识、配置控制、配置状态统计和配置审计,建立和维护工作产品的完整性。
3.框架中各KPA的流程。各KPA流程都由角色小组负责,流程中包括产品(输入和输出产品)、主要步骤(主要活动或任务)和度量(见图)。
输入产品是指执行该流程的任务(活动)所需要的数据和文档,包括其他流程生成的工作产品级组织的各种规范和模板。进入准则是指进行该流程所必须的前提条件,如所需的工具,资源级任务分配等。主要步骤是指完成该流程的产品所需要进行的相关工作,结束准则是指结束此流程所要满足的条件,度量主要是指对当前流程所花费的主要工作量的统计,准确地度量出工作量,既可以掌握当前流程的情况,对于今后估算其他数据也有重要意义。
KPA的流程关系描述图
4.SPIF各KPA与CMMI2、CMMI3的对应关系(见表)
SPIF的KPA与CMMI2、CMMI3级KPA的对应关系表
四、结束语
本文给出的软件过程改进框架是在综合考虑国内中小型软件企业特点的基础上以CMMI和SPP理论为基础构建的,其目的是帮助国内中小型软件企业提高软件能力成熟度。今后的工作需要在更多实践的基础上对SPIF进一步规则化和细化,以提高其可操作性,并且在未来的研究中应建立和完善适合具体软件企业的裁剪指南。
参考文献:
[1]Capability Maturity Model:Integration (CMMISM),Version 1.1 for Software Engineering (CMMI-SW,V1.1),Staged Representation,2002
[2]Dennis M.Ahern,Aaron Clouse,Richard Turner 著.CMMI精粹—集成化过程改进实用导论(第二版)(陈波 译)[M].北京:清华大学出版社,2005.91~121
[3]林锐王慧文董军:CMMI 3级软件过程改进方法与规范.北京:电子工业出版社,2003.35~210
[4]羅运模谢志敏:CMMI软件过程改进与评估[M].北京:电子工业出版社,2004. 22~118