论文部分内容阅读
摘 要:本文根据目前中小型软件企业项目管理的实际状况,以及高职院校软件人才培养的定位,提出并分析了CMM2模型,并将该模型进行改进,提出了一个可实施的,运用在软件实训项目管理系统中的方案。
关键词:CMM2;过程改进;项目管理系统
中图分类号:TP311.5
目前,南京市软件产业取得了令人瞩目的成绩,中小型软件企业的数量也在与日俱增,相当多的中小型软件企业希望以CMM2作为切入点,着力改进软件项目管理过程,提升企业的市场竞争力。作为培养“软件蓝领”的高职院校,就要顺应这一趋势,采用信息化的手段让学生学习并了解CMM2模型。所以,一个基于CMM2模型的、并加以改进的“软件实训项目管理系统”应运而生。
1 软件能力成熟度模型2级(CMM2)详解
所谓CMM2(可重复级),就是在CMM2级企业中,已经建立了基本的软件项目级管理过程,可对项目的成本、进度进行跟踪和控制,软件开发和维护的过程相对稳定,已有的管理类似项目的成功经验可以被复用管理新项目,尽管新项目所实施的具体过程有可能不同。CMM2的核心就是重复利用。
CMM2包括六个关键过程域(KPA),囊括了需求管理、项目管理、质量管理、配置管理和子合同管理五个方面,其中项目管理又分为计划过程和跟踪与监控过程。
1.1 需求管理
需求管理的最终目的是在客户与实现客户需求的项目之间达成共识,需求管理活动就是为了建立并维护这种共识,这是软件项目计划和管理的基础。在软件项目的整个生命周期,都应该记载、跟踪和验证由于需求的变化而引起其它文档所作的修改。
1.2 软件项目计划
建立合理的开发计划的基础是对项目规模、资源要求和风险等要有一个合理的估算。软件项目计划的目的是为完成软件工程和管理软件项目制定合理的计划,包含估计待完成的工作,建立必要的约定和确定进行该工作的计划。
1.3 软件项目跟踪及监督
软件项目跟踪和监督的目的是建立对实际进展的适当的可视性,使管理者能在软件项目性能明显偏离软件计划时采取有效措施。它包括对照已文档化的估计、约定、和计划评审和跟踪软件完成情况和结果,以保证当项目执行偏离项目计划时管理上能采取有效的解决措施。
1.4 软件质量保证
软件质量保证的目的是向管理者提供适当的对软件项目正使用的过程和正构造产品的可视性。它包括评审和审计软件产品和活动以验证它们符合适用的规程和标准,给项目和其它有关的经理提供这些评审和审计的结果。
1.5 软件配置管理
软件配置管理的目的是建立和维护在项目的整个软件生存周期中软件项目产品的完整性。它包括标识在给定时间点上软件的配置,系统地控制对配置的更改、并维护在整个软件生存周期中配置的完整性和可跟踪性。
1.6 软件子合同管理
软件子合同管理的目的是选择合格的软件子承包商并有效地管理他们。它包括选择软件子承包商、建立和子承包商的约定,及跟踪和评审子承包商的性能和结果。
2 软件实训项目管理与CMM2模型改进
2.1 软件实训项目管理
(1)软件实训项目管理概述。软件实训项目是参考中小型软件企业真实项目案例,同时又适合高职学生作为训练相应技能而改进的软件项目,它不是一个具有商业性质的软件产品。目前,正规的软件企业如果重视软件项目实施过程的管理,一定会采取各种方法对软件项目进行管控,软件项目管理系统就是一个常见的措施,采用该系统可以对软件项目的各个实施阶段进行有效的、实时的、科学的管控。所以,把针对软件实训项目管理的系统叫做软件实训项目管理系统。
(2)软件实训项目管理系统的基本功能需求。软件实训项目管理系统是体现软件实训项目管理过程的一个信息化软件平台,针对学院对项目管理基本的功能需求调查发现,整个系统包括了班级管理、案例资料管理、项目管理、历史数据管理、实训成绩管理、课程管理六大部分。其中最重要的功能就是项目管理,它重点体现了软件成熟度模型的思想,有效的规范和保证了项目实施的全过程,包括项目启动、计划、执行、质量保证、结束。
2.2 CMM2级模型改进与实施方案
(1)CMM2级模型改进。CMM2模型中的内容非常广泛,标准十分完备,如果完全照搬CMM2运用到该系统中是不合适的。因此,必须对CMM2中管理的内容和标准进行一定的优化和裁减,提出一个适合软件实训项目组规模的CMM软件项目管理模型,并给出在模型的各个阶段实际要完成的任务和需要注意的问题。
根据CMM2六个关键过程域(KPA)的解释和软件项目管理的过程,这里我们可以初步提出一个基于CMM2的软件实训项目管理模型。该模型如图1所示:
图1中软件实训项目管理模型的划分结合了软件项目的生命周期,主要分为:项目启动、项目计划、项目实施与控制、项目技术。各个阶段分别包含CMM2的关键过程域,其中软件质量保证和软件配置管理2个KPA贯穿于整个项目开发过程始终。图中只提到了CMM2的5个KPA,还有一个软件子合同管理KPA,考虑到根据软件实训项目的规模和实际情况,一般不会出现把项目转包出现的情况,在此进行了裁减。
(2)组织管理结构改进。对CMM2的模型改进后,接下来就要对CMM2所要求的组织管理结构进行适当的裁减。因为CMM中任务分工细,涉及到的角色关系多,这对于软件实训项目组这样的小型软件开发组织来说是难以实现的。经过裁减后,组织管理结构中各个角色的工作职责描述如下:1)高级经理:一名,负责所开展的所有软件实训项目。2)项目经理:一个项目一名,负责整个项目的实施。3)软件工程师:根据软件项目的规模确定人数,负责软件的设计与开发。4)软件配置管理员:可安排由项目组中任意成员担任,可以是项目经理,可以是软件工程师,也可以由其他人员兼任,负责软件产品的配置整合工作。5)软件质量保证员:如果人员条件允许,此人员最好单独设立,如若条件所限,可由项目经理或软件测试人员兼任,负责项目在各个阶段的评审。6)软件测试员:可由软件工程师同时担任,在开展测试工作时,必须交叉测试。 3 实施方案
3.1 项目启动
项目启动是软件项目管理的初始阶段,它对项目有序、正常的开展起着非常关键的作用。项目启动包括有项目可行性分析,需求调研、编写需求文档和可行性分析报告。该阶段主要包含CMM2的软件项目计划KPA。
在此阶段需要重点处理的工作有:(1)可行性分析。可行性分析是为了分析在一定时间范围内软件项目是否能够按要求完成以及完成的价值如何。一般从技术可行性、经济可行性、社会可行性三个大方面来考虑,从而形成软件项目可行性分析报告。技术可行性即项目开发的技术储备,开发的风险等方面是否支持项目的开发;经济可行性即确定该项目在经济上是否值得开发;社会可行性即判断待开发的项目是否有侵犯、妨碍等责任问题。(2)需求分析。需求分析是经过需求分析后的产出物。需求分析的任务就是确定系统具备哪些功能,即回答待开发项目做什么的问题。需求分析的过程是和客户打交道最多也是最重要的环节,它直接决定了后续项目开发的成功与否,必须通过多次的需求调研、分析才能形成需求规格说明书。
3.2 项目计划
项目计划的提出是为了给软件项目实施的各个阶段提供一个合理的、可行的、可参考的工作计划,使项目参与人员能够有条不紊的按照计划开展工作。该阶段主要包含CMM2的需求管理KPA和软件项目计划KPA。
在此阶段需要重点处理的工作有软件项目计划:软件项目计划必须按照需求调研的结果来制定,要根据不同的项目要求明确软件项目开发模型,可以利用的项目资源,项目经理还要根据项目需求文档从软件规模、人力、成本、进度等方面进行项目估算和风险评估,根据项目组成员的技术特点和能力进行工作分解和职责分配,从而形成软件项目计划书。项目计划书一旦制定,项目实施的过程就要严格的以它为基准跟踪和控制。
3.3 项目实施与控制
虽然软件项目已经有了明确的需求分析和好的项目计划,但由于计划本身具有假设性和预测性,尽管也充分考虑了可能的风险因素,但是计划毕竟只能是对现实所作的预测和粗略的描述。因此在实施计划时,偏差不可避免。当软件项目的执行与项目计划出现明显偏差时,项目管理人员必须采取有效的措施。该阶段包含CMM2软件项目跟踪和监控KPA和需求管理KPA。
在此阶段需要重点处理的工作有:(1)需求变更控制:由于需求不能在项目启动时就能完整的定义好,并且随着项目的实施,遇到客户临时更改需求的情况也是不可避免的,项目经理要组织项目组讨论变更带来的影响,从而决定是否进行需求文档和项目计划的修改。(2)版本控制:由于软件项目通常是团队合作方式进行,所以不管是需求的变更,还是实施过程中其他文件的更新,都必须及时通知到每一个项目组成员。(3)需求状态:需求状态是标识需求的一个重要属性。每当处理一个需求功能点时,都必须及时的把对该需求的处理方式记录下来,通常的需求状态有:已批准、已拒绝、已删除等等。(4)项目跟踪和监控:项目组必须指定专人在规定的时间记录项目中特定的跟踪项的进展状态,以提供计划与实际偏差的第一手数据,从而采取必要的措施及时处理偏差。
3.4 项目结束
项目结束阶段主要是针对项目本身进行的项目评审验收、归档总结等工作。此阶段包含CMM2软件质量保证和软件配置管理KPA。
在此阶段需要重点处理的工作有:(1)用户验收和项目评审。项目评审应该贯穿于整个项目实施的始终,可以根据项目规模的大小来决定评审的形式,是走查还是正是评审,可以邀请同行和客户来对软件项目进行审查。在项目结束阶段的评审主要是对项目整体功能是否符合需求,项目过程是否符合项目计划等方面来展开。(2)归档总结。项目结束后,要把项目涉及到的项目资料包括软件的需求文档、开发设计文档、产品文档、管理文档等资料汇总收集到相关资料库中,同时还要认真的总结项目实施过程,供今后维护和开发参考使用。
参考文献:
[1]韩万江,姜立新.软件项目管理案例教程[M].机械工业出版社,2006.
[2]Mark C.Paulk,Charles V.Weber,Suzanne M.Garcia,Mary Beth Chrissis,Marilyn Bush.Key Practices of the Capability Maturity ModelSM,Version 1.1.1993.
[3]邓子云.论CMM2的过程改进[J].安徽电子信息职业技术学院学报,2004,3(5).
[4]王斌.基于CMM的软件过程改进模型的研究与实现[D].南京航空航天大学,2006.
[5]黄涛.中小型软件企业软件项目开发过程改进研究基于CMM的视角[D].浙江工业大学,2010.
作者单位:南京城市职业学院,南京 210002
关键词:CMM2;过程改进;项目管理系统
中图分类号:TP311.5
目前,南京市软件产业取得了令人瞩目的成绩,中小型软件企业的数量也在与日俱增,相当多的中小型软件企业希望以CMM2作为切入点,着力改进软件项目管理过程,提升企业的市场竞争力。作为培养“软件蓝领”的高职院校,就要顺应这一趋势,采用信息化的手段让学生学习并了解CMM2模型。所以,一个基于CMM2模型的、并加以改进的“软件实训项目管理系统”应运而生。
1 软件能力成熟度模型2级(CMM2)详解
所谓CMM2(可重复级),就是在CMM2级企业中,已经建立了基本的软件项目级管理过程,可对项目的成本、进度进行跟踪和控制,软件开发和维护的过程相对稳定,已有的管理类似项目的成功经验可以被复用管理新项目,尽管新项目所实施的具体过程有可能不同。CMM2的核心就是重复利用。
CMM2包括六个关键过程域(KPA),囊括了需求管理、项目管理、质量管理、配置管理和子合同管理五个方面,其中项目管理又分为计划过程和跟踪与监控过程。
1.1 需求管理
需求管理的最终目的是在客户与实现客户需求的项目之间达成共识,需求管理活动就是为了建立并维护这种共识,这是软件项目计划和管理的基础。在软件项目的整个生命周期,都应该记载、跟踪和验证由于需求的变化而引起其它文档所作的修改。
1.2 软件项目计划
建立合理的开发计划的基础是对项目规模、资源要求和风险等要有一个合理的估算。软件项目计划的目的是为完成软件工程和管理软件项目制定合理的计划,包含估计待完成的工作,建立必要的约定和确定进行该工作的计划。
1.3 软件项目跟踪及监督
软件项目跟踪和监督的目的是建立对实际进展的适当的可视性,使管理者能在软件项目性能明显偏离软件计划时采取有效措施。它包括对照已文档化的估计、约定、和计划评审和跟踪软件完成情况和结果,以保证当项目执行偏离项目计划时管理上能采取有效的解决措施。
1.4 软件质量保证
软件质量保证的目的是向管理者提供适当的对软件项目正使用的过程和正构造产品的可视性。它包括评审和审计软件产品和活动以验证它们符合适用的规程和标准,给项目和其它有关的经理提供这些评审和审计的结果。
1.5 软件配置管理
软件配置管理的目的是建立和维护在项目的整个软件生存周期中软件项目产品的完整性。它包括标识在给定时间点上软件的配置,系统地控制对配置的更改、并维护在整个软件生存周期中配置的完整性和可跟踪性。
1.6 软件子合同管理
软件子合同管理的目的是选择合格的软件子承包商并有效地管理他们。它包括选择软件子承包商、建立和子承包商的约定,及跟踪和评审子承包商的性能和结果。
2 软件实训项目管理与CMM2模型改进
2.1 软件实训项目管理
(1)软件实训项目管理概述。软件实训项目是参考中小型软件企业真实项目案例,同时又适合高职学生作为训练相应技能而改进的软件项目,它不是一个具有商业性质的软件产品。目前,正规的软件企业如果重视软件项目实施过程的管理,一定会采取各种方法对软件项目进行管控,软件项目管理系统就是一个常见的措施,采用该系统可以对软件项目的各个实施阶段进行有效的、实时的、科学的管控。所以,把针对软件实训项目管理的系统叫做软件实训项目管理系统。
(2)软件实训项目管理系统的基本功能需求。软件实训项目管理系统是体现软件实训项目管理过程的一个信息化软件平台,针对学院对项目管理基本的功能需求调查发现,整个系统包括了班级管理、案例资料管理、项目管理、历史数据管理、实训成绩管理、课程管理六大部分。其中最重要的功能就是项目管理,它重点体现了软件成熟度模型的思想,有效的规范和保证了项目实施的全过程,包括项目启动、计划、执行、质量保证、结束。
2.2 CMM2级模型改进与实施方案
(1)CMM2级模型改进。CMM2模型中的内容非常广泛,标准十分完备,如果完全照搬CMM2运用到该系统中是不合适的。因此,必须对CMM2中管理的内容和标准进行一定的优化和裁减,提出一个适合软件实训项目组规模的CMM软件项目管理模型,并给出在模型的各个阶段实际要完成的任务和需要注意的问题。
根据CMM2六个关键过程域(KPA)的解释和软件项目管理的过程,这里我们可以初步提出一个基于CMM2的软件实训项目管理模型。该模型如图1所示:
图1中软件实训项目管理模型的划分结合了软件项目的生命周期,主要分为:项目启动、项目计划、项目实施与控制、项目技术。各个阶段分别包含CMM2的关键过程域,其中软件质量保证和软件配置管理2个KPA贯穿于整个项目开发过程始终。图中只提到了CMM2的5个KPA,还有一个软件子合同管理KPA,考虑到根据软件实训项目的规模和实际情况,一般不会出现把项目转包出现的情况,在此进行了裁减。
(2)组织管理结构改进。对CMM2的模型改进后,接下来就要对CMM2所要求的组织管理结构进行适当的裁减。因为CMM中任务分工细,涉及到的角色关系多,这对于软件实训项目组这样的小型软件开发组织来说是难以实现的。经过裁减后,组织管理结构中各个角色的工作职责描述如下:1)高级经理:一名,负责所开展的所有软件实训项目。2)项目经理:一个项目一名,负责整个项目的实施。3)软件工程师:根据软件项目的规模确定人数,负责软件的设计与开发。4)软件配置管理员:可安排由项目组中任意成员担任,可以是项目经理,可以是软件工程师,也可以由其他人员兼任,负责软件产品的配置整合工作。5)软件质量保证员:如果人员条件允许,此人员最好单独设立,如若条件所限,可由项目经理或软件测试人员兼任,负责项目在各个阶段的评审。6)软件测试员:可由软件工程师同时担任,在开展测试工作时,必须交叉测试。 3 实施方案
3.1 项目启动
项目启动是软件项目管理的初始阶段,它对项目有序、正常的开展起着非常关键的作用。项目启动包括有项目可行性分析,需求调研、编写需求文档和可行性分析报告。该阶段主要包含CMM2的软件项目计划KPA。
在此阶段需要重点处理的工作有:(1)可行性分析。可行性分析是为了分析在一定时间范围内软件项目是否能够按要求完成以及完成的价值如何。一般从技术可行性、经济可行性、社会可行性三个大方面来考虑,从而形成软件项目可行性分析报告。技术可行性即项目开发的技术储备,开发的风险等方面是否支持项目的开发;经济可行性即确定该项目在经济上是否值得开发;社会可行性即判断待开发的项目是否有侵犯、妨碍等责任问题。(2)需求分析。需求分析是经过需求分析后的产出物。需求分析的任务就是确定系统具备哪些功能,即回答待开发项目做什么的问题。需求分析的过程是和客户打交道最多也是最重要的环节,它直接决定了后续项目开发的成功与否,必须通过多次的需求调研、分析才能形成需求规格说明书。
3.2 项目计划
项目计划的提出是为了给软件项目实施的各个阶段提供一个合理的、可行的、可参考的工作计划,使项目参与人员能够有条不紊的按照计划开展工作。该阶段主要包含CMM2的需求管理KPA和软件项目计划KPA。
在此阶段需要重点处理的工作有软件项目计划:软件项目计划必须按照需求调研的结果来制定,要根据不同的项目要求明确软件项目开发模型,可以利用的项目资源,项目经理还要根据项目需求文档从软件规模、人力、成本、进度等方面进行项目估算和风险评估,根据项目组成员的技术特点和能力进行工作分解和职责分配,从而形成软件项目计划书。项目计划书一旦制定,项目实施的过程就要严格的以它为基准跟踪和控制。
3.3 项目实施与控制
虽然软件项目已经有了明确的需求分析和好的项目计划,但由于计划本身具有假设性和预测性,尽管也充分考虑了可能的风险因素,但是计划毕竟只能是对现实所作的预测和粗略的描述。因此在实施计划时,偏差不可避免。当软件项目的执行与项目计划出现明显偏差时,项目管理人员必须采取有效的措施。该阶段包含CMM2软件项目跟踪和监控KPA和需求管理KPA。
在此阶段需要重点处理的工作有:(1)需求变更控制:由于需求不能在项目启动时就能完整的定义好,并且随着项目的实施,遇到客户临时更改需求的情况也是不可避免的,项目经理要组织项目组讨论变更带来的影响,从而决定是否进行需求文档和项目计划的修改。(2)版本控制:由于软件项目通常是团队合作方式进行,所以不管是需求的变更,还是实施过程中其他文件的更新,都必须及时通知到每一个项目组成员。(3)需求状态:需求状态是标识需求的一个重要属性。每当处理一个需求功能点时,都必须及时的把对该需求的处理方式记录下来,通常的需求状态有:已批准、已拒绝、已删除等等。(4)项目跟踪和监控:项目组必须指定专人在规定的时间记录项目中特定的跟踪项的进展状态,以提供计划与实际偏差的第一手数据,从而采取必要的措施及时处理偏差。
3.4 项目结束
项目结束阶段主要是针对项目本身进行的项目评审验收、归档总结等工作。此阶段包含CMM2软件质量保证和软件配置管理KPA。
在此阶段需要重点处理的工作有:(1)用户验收和项目评审。项目评审应该贯穿于整个项目实施的始终,可以根据项目规模的大小来决定评审的形式,是走查还是正是评审,可以邀请同行和客户来对软件项目进行审查。在项目结束阶段的评审主要是对项目整体功能是否符合需求,项目过程是否符合项目计划等方面来展开。(2)归档总结。项目结束后,要把项目涉及到的项目资料包括软件的需求文档、开发设计文档、产品文档、管理文档等资料汇总收集到相关资料库中,同时还要认真的总结项目实施过程,供今后维护和开发参考使用。
参考文献:
[1]韩万江,姜立新.软件项目管理案例教程[M].机械工业出版社,2006.
[2]Mark C.Paulk,Charles V.Weber,Suzanne M.Garcia,Mary Beth Chrissis,Marilyn Bush.Key Practices of the Capability Maturity ModelSM,Version 1.1.1993.
[3]邓子云.论CMM2的过程改进[J].安徽电子信息职业技术学院学报,2004,3(5).
[4]王斌.基于CMM的软件过程改进模型的研究与实现[D].南京航空航天大学,2006.
[5]黄涛.中小型软件企业软件项目开发过程改进研究基于CMM的视角[D].浙江工业大学,2010.
作者单位:南京城市职业学院,南京 210002