CMMI在网络学习空间软件项目中的应用研究

2017-05-30 11:22张璇
中国电化教育 2017年10期

张璇

摘要:软件项目管理是建立软件生产线的必经之路,软件项目管理是以模型和理论为指导的,理解并结合软件组织的自身特征和开发现状的。CMMI(Capability Maturity Model Integration,即能力成熟度模型集成)是帮助软件项目控制和改进软件开发和管理过程,从而不断改进提高软件质量的国际通行标准,CMMI提出了软件项目管理并给出了达到各成熟等级的标准,但是CMMI缺少具体可操作的实施方法和确实有效的实施措施。该文从CMMI出发,选定网络学习空间软件项目为特定研究对象,分析了项目实施中遇到的问题和原因,结合CMMI第二级和CMMI第三级的关键过程域,提出了改进网络学习空间软件项目管理的策略,并对比了实施效果,以期通过提升项目管理水平使得网络学习空间的软件质量有所保证。

关键词:软件项目管理;CMMI;软件质量;软件过程改进

中图分类号:G434 文献标识码:A

一、前言

随着信息技术的发展,网络学习空间软件的复杂性与规模化不断增长,但是网络学习空间的实践过程阶段不明显,在软件质量保证、项目管理等方面尚未得到足够的认识和重视,缺乏系统、完整、科学、适用的方法论和模型体系的指导和规范,开发风险不断增大,软件质量很难得到有效的保证。在这样的现实环境下,使得构建软件的过程(即软件过程)得到了更多的关注。基于此,卡内基—梅隆大学软件工程研究院(SEI)提了软件能力成熟度模型(CMM)。CMM的核心是对软件的实践过程进行管理和研究,使其流程化、科学化,最后达到保证软件质量的目的。

CMM模型的提出后,衍生了多种模型,分别针对软件过程的各个不同阶段和不同对象,但是这些模型又在配置管理、需求管理等方面有共同的方面,因此SEI整合了不同模型中的最佳实践,建立了覆盖不同领域的统一模型CMMI。CMMI被认为是把各种CMM和其衍生模型集成为一个系列的模型,CMMI在支持软件过程改进和提高的同时,减少了重复工作,消除了多种模型共存的不一致性和混乱性,CMMI的源模型包含:软件能力成熟度(CUU)2.0版,EIA-731系统工程能力评估模型,集成的产品开发能力模型IPDCMM(IPD)0.98a版。

二、研究理论

(一)CMMI模型

1.外部结构

CMMI有两种表示法:阶段表示法、连续表示法。阶段表示法是一个五级的阶梯式进化结构,具体描述如下:

(1)初始级:无计划、无流程、无管理,软件项目完成情况不稳定,随意变更项目计划,是否能成功完成项目主要依靠项目负责人的经验和能力。

(2)完成级:建立了最基本的管理規则,初步实现标准化开发流程,开发计划能稳定完成。但是,开发计划和项目管理依赖于以往的项目实践经验,盲目重复采用以往成功项目的条件。

(3)管理级:开发过程(包括研发和管理)实现配置管理,并建立了培训制度、同行评审制度,有效控制了各项实践活动,基本保证系统成功达到需求目标。

(4)定义级:建立了定量的质量目标,建立了过程数据库,实现了过程控制。开发活动中的生产率和质量是可量度的,因此可以预测软件质量趋势,如预测有偏差,实现及时纠正。

(5)优化级:能够防止出现缺陷、识别薄弱环节,可获得过程有效性的数据,并据此进行分析,采用新技术、新方法,从而改进现有过程,最终得出最佳实践方法。

连续表示法将过程域划分为四个类型,分别为“过程管理、项目管理、工程管理、支持服务管理”,并将过程域分成基础和高级,分别在每个过程域中建立实现基准。每个过程域的能力等级有六级:不完整级、执行级、管理级、定义级、量化管理级和持续优化级。在连续表示法中,项目可以追求单独的类型上的提升。

本文采用的是阶段表示法。

2.内部结构

CMMI模型每级的内部结构包括:等级特性、关键过程域(KPA)、关键实践(KP),这三者共同定义CMMI模型的每个成熟度等级,它们构成了成熟度等级的关键成功因素。CMMI阶段表示法的五个等级中共包括22个关键过程域,每个等级中的关键过程域都有特定目标,并有与之相应的关键实践用来实现这些目标,关键实践包括管理、技术和人员三方面的因素。通过对关键过程域的识别,能够找出过程成功所需的关键实践,从而确定项目活动的优先次序。

除初始级外的其他等级都包含了实现该级特定目标的若干个关键实践,不同的关键实践都有具体的实践活动的描述。通过分析各等级与关键过程域在管理、人员和技术三方面的因素,可以得出第二级与第一级相比最大的提高是在管理方面具有了需求管理以及项目跟踪和监督,第三级与第二级相比最大的提高是具有配置管理、人员培训和同行评审。由此可知,第二级和第三级是两个非常重要的阶段,在第二级中开始建立基本制度和规程,第三级中实现了标准化管理,处于该等级时,实践活动为软件质量的保证提供良好的基础。CMMI第二级和第三级共有18个关键过程域(PA),占据了五个等级所有关键过程域的八成。

3 CMMI的实施方案

对于软件项目,CMMI的实施需要基本的五个步骤:

第一步:调查分析研究。通过调查项目中开发、管理等关键流程,发现具有共性的重要问题,研究出现问题的潜在原因,并与项目组成员商议解决方案。

第二步:明确职责,优化结构。根据问题原因,明确重要岗位的职责,确定科学的组织架构,调整部分职责模糊的岗位和人员。

第三步,优化项目过程,配备管理工具。优化项目管理的流程,整合商务、研发和管理过程规范,配备与流程规范相配套的管理工具。

第四步,内部培训。为项目组成员提供全面的培训,让成员掌握过程规范和管理工具。

第五步,执行改进方案。项目组根据改进后的过程规范开展项目工作,项目过程改进人员监督并记录执行的情况,将问题反馈给项目组,然后再优化改进过程。如此反复,形成持续改进的良性循环,建立更加有效的项目运作机制,提高产品质量,控制生产成本和降低开发风险。

(二)软件项目管理

实施软件项目管理的目的是为了使软件项目的生命周期在控制之下,以预定的成本、进度、质量顺利完成并交付用户使用。软件项目管理主要涉及人员组织管理、项目计划、风险管理、配置管理、软件质量保证、软件过程能力评估等。

三、网络学习空间项目开发过程中存在的问题

(一)项目中存在的问题

影响软件质量的因素有很多,在本项目中主要存在的问題有:需求不明确、项目计划不充分、项目监控不到位、评审机制不完善、团队的组织不恰当等等。通过本项目的实施,并结合目前存在的一些普遍问题,归纳总结了两个产生严重影响的问题。

1.项目进度滞后

在项目初期,对网络学习空间系统的复杂性缺乏充分的估计,对需求没有进行详细分析和实际验证的情况下就开始盲目开发,项目计划制定的不充分、不到位。同时,项目很多工作完全依赖项目负责人协调沟通,没有明确的工作流程,项目关键内容缺少了必要的文档化。在项目执行过程中,出现了临时更改系统功能的情况,且没有可以采用的应对计划。在功能更改后,忽视了跟踪需求变更和评审开发内容。因此,影响了整体的开发的进度,导致项目进度延误,项目计划分成六个阶段45天完成,实际完成时间是51天,进度延误偏差率为13%。延误最为严重的环节是需求分析和测试阶段,需求分析计划天数是12天,实际完成是15天,测试计划天数是4天,实际完成时间是5天,这两个阶段的实际完成时间进度延误偏差都高达25%。

2.软件质量偏低

在项目的整个实施过程中,由于项目计划部分失效,出现了计划外的任务,造成软件出现明显缺陷。而这些计划外的任务多出现于开发阶段的后期,而此时完成这些计划外的任务所付出的成本代价是非常高的。另外,在缺陷管理方面,仅仅依赖测试报告来记录系统缺陷情况,造成在系统缺陷追踪上不畅通,出现了修复一个缺陷后继而暴漏出其他缺陷的恶性循环,从而严重的影响了软件质量。通过比较各个阶段的软件缺陷分布率,得知在需求分析阶段的缺陷率比较高,这说明了项目人员没有完全理解应用需求,并且对需求缺乏深入详细的挖掘以及分析,错失了潜在需求,忽视了功能后的实际应用效果,所以越来越多的缺陷逐渐暴漏在后续活动中;另外,测试阶段缺陷率也较高,在项目前期阶段,预防和及早发现缺陷,有利于控制项目预算和项目进度,而到了测试阶段,修复软件缺陷的成本代价将会成倍的扩大,缺陷越多,进度越延误。

(二)问题的原因分析

1.需求不明确,需求分析不透彻,需求管理活动混乱,导致不断修改需求,同时缺乏有效的管理,无法保证软件过程顺利进展,造成项目延期。

2.不重视项目的实际度量和分析,设计开发等进程建立在以往的项目经验上,缺乏科学的实施流程,项目进度完全依靠项目负责人协调沟通去推进。

3.缺乏设计和实施过程的标准定义,文档结构各异且版本管理混乱,出现交叉测试等缺乏管理规则的活动,忽略了设计开发与测试各个步骤之间的关联性,造成项目实现过程中缺少连贯性,项目只好停滞返工,重新设计开发,从而导致不能按照原定计划按时完成。

4.在开发中缺少有效的项目监管和评审机制,项目不能顺利交付,出现大大小小的偏差,致使项目进度滞后,软件质量偏低。

四、基于CMMI的改进建议

CMMI给出了规范化的过程,关注在开发过程中加强过程域的监督和管理,解决软件实施中的实际问题,并通过持续改进提升软件质量。以往项目进展只是依靠项目负责人的经验,实施过程无序且不可控,仅仅达到CMMI第一级的要求。显而易见,达到CMMI 1(初始级)并不能解决上文中提到的问题。因此,上述三个问题,本文以CMMI 2、3级为依据找到影响问题的关键过程域,提出网络学习空间的软件过程改进措施。主要的改进措施包括完善需求管理和质量保证体系、规范实施过程、建立监管和评审机制,涉及到的关键过程域有需求管理过程、技术解决方案、过程和产品质量保证、配置管理、项目监督和控制。

(一)完善需求管理

CMMI模型对需求管理提出了明确的目的是就软件项目中需要满足的各种功能性和非功能性需求建立约定。针对项目中存在的问题,从以下几个方面对需求管理进行了改进。

(1)在项目开始时,根据实际情况制定需求管理制度,并规定文档化的内容。建立需求管理小组,确定角色和责任。制定需求跟踪方案,明确需求偏离后的纠正流程,确立需求变更评审制度。对需求管理小组人员进行培训,从业务上加深需求理解。

(2)需求管理小组中有一定经验的设计人员、开发人员和测试人员协助进行需求调研,有益于项目各个执行部分对系统的理解,有效规避由于沟通不畅引起的问题。

(3)需求调研之后,对获得的需求进行分析和整理,定义各项需求的重要性和优先级,形成规范文档。

(4)变更管理是需求管理中最重要的部分,首先,需求变更规格化,必须由书面化的方式提出;其次,评审确定是否接受变更;如接受,在执行变更后验证是否成功。

(5)针对需求定期进行追踪,追踪每一个需求从定义到实现到验证的全过程,确保需求、设计、开发和测试之间的一致性,保证最终成果符合需求。

(二)完善质量保证体系

过程和产品的质量保证体系是为了向项目组提供软件过程的客观信息。网络学习空间软件项目出现进度延期、软件缺陷率高等问题,归根到底其本质是对软件过程把控的不足,对质量保证关注的不够。因此,参照CMMI第二级和第三级的关键过程域,对质量保证体系提出了改进建议,涉及到管理、人员、技术三个方面。

1.增设质量管理岗位

根据CMMI增设了软件质量管理人员,主要负责项目评审和验证并及时更新相关文档,检查开发活动和管理活动是否与已经制定好的策略一致。为保障评审的客观性,软件质量管理人员独立于项目组。

2.完善配置管理

配置管理作为CMMI第三级的关键过程域,其目的是用标识、控制、统计和审计等活动来保证网络学习空间软件的完整性和项目的可回溯性。根据CMMI的规定,配置管理分成三个部分:配置项、基线和变更控制,贯穿于网络学习空间软件项目的整个生命周期。

3.建立缺陷管理

在网络学习空间软件项目实施过程中出现的缺陷主要來源于需求和测试阶段,技术问题和管理问题混杂在一起。现将技术问题和管理问题区分管理,并且建立缺陷等级制度。缺陷等级分为三级:第一级不会影响项目进度,由项目组协商解决;第二级可能影响项目进度,需要记录缺陷并上报项目负责人,随后采取相应措施;第三级严重影响项目进度,可能导致项目停滞,上报项目负责人后,召开专家会议确定缺陷解决方案,专人全程跟踪并记录解决过程。

规范和完善的缺陷处理流程。首先,发现缺陷后记录,然后将其提交给负责人,通过评审,最后进行任务分配并解决缺陷问题,由缺陷发现人跟踪解决情况直至问题关闭。缺陷处理好后,评审人员对修复结果进行评审,确认无误后,此任务关闭,并将结果记录。为保证缺陷信息的完整性和即时性,项目负责人跟踪处理过程并记录过程,在结项时进行汇总统计。

五、基于CMMI的网络学习空间实现过程

在基于CMMI的网络学习空间的设计与实现过程中,强调文档标准化、准确化和完善化,强调项目顺利完成和软件质量很大程度上取决于实现过程。同时,网络学习空间采用开源B/S结构,下面将结合其技术特点讨论合理的系统实现流程,从过程上加以改进实现流程,达到标准化流程的要求,采用分步骤逐步推进的方法。

(一)网络学习空间的设计模式

网络学习空间展示页面设计模式采用的是JSP+持久层框架,后台管理页面设计模式采用的是JSP+EXT+持久层框架,完全基于W3C技术构建,具有很高的代码复用率,为敏捷开发提供了较好的解决方法。

(二)网络学习空间开发流程实现

在网络学习空间项目实施前,确认需求后,将实现流程映射到迭代增量开发模型,得到一个完整的基于CMMI三级和网络学习空间软件的开发流程,如下图所示,结合网络学习空间的自身特点,半年分四个阶段完成,四个阶段分别是:启动阶段、计划阶段、建设阶段和交付阶段。如下图所示。

每一个阶段通过质量保证体系,及时跟进并反馈项目进度、关键资源应用、问题缺陷等情况,分析跟踪结果,一旦出现项目进展和系统功能偏离项目计划时,采取纠正措施,直至项目结束,促使项目按照计划时间、预算、达到既定质量要求的情况下交付。下面几个步骤是具体的开发实例说明。

1.初始阶段

首先,调研网络学习空间的需求,建立需球管理,明确各类人员的分工和职责,利用适当的时间组织培训,加深开发人员对需求的理解,并确定技术路线。

2.计划阶段

对网络学习空间的开发过程进行适当的裁剪,确定其系统框架,建立项目里程碑,并用经验估算法对工作量进行估算。结合前两个阶段,网络学习空间功能模块及实现优先级如表1所示。

3.建设阶段

建设阶段的关键环节是系统设计与开发,该环节重点改进的是变更控制,包括配置管理和缺陷问题管理。同时,监督与评审也是网络学习空间的开发进行到第三个阶段的关键工作过程。综上所述,在此阶段,项目负责人监督项目进展和系统性能,一旦出现项目进展偏离项目计划或开发缺陷问题时,采取纠正措施,直至项目结束。

4.交付阶段

合理的环境和数据选择是网络学习空间部署实施的关键要素,发布系统并记录问题以及处理情况。最后,进行同行评审,确认无误后交付系统。

六、应用与改进效果

(一)网络学习空间的实际应用反馈

截止到本文发稿前,网络学习空间已经上线应用,其功能需求和性能需求都得到了百分百的实现。前台界面展示简洁友好,适合多种浏览器;后台管理操作简单便捷,易用性强。应用后的用户实际反馈如表2所示。

(二)开发过程改进效果

在项目进度方面,按照改进后的实现过程,网络学习空间开发进度延期情况明显改善,尤其是延误最为严重的需求分析和部署实施,初始进度延误偏差高达到20%,实施改进方案后,需求分析延误偏差为10%,系统实施阶段按时完成,无延误。

在软件缺陷方面,改进方案实施后,采用了较为科学的过程裁剪,选择了适合网络学习空间的开发过程颗粒度,使得开发过程较为顺利,软件质量得到基本保证,无明显需求偏离。

七、总结与展望

本文通过诊断并分析开发网络学习空间系统过程中遇到的问题及问题产生的原因,以CMMI第二级、第三级中关键过程域为基础,在软件项目管理上采取了一些改进措施,有效解决了部分问题。在系统开发过程中,出现缺陷问题是在所难免的,及时发现并提出行之有效的解决措施是提升软件质量的明智之举。CMMI模型只能提供理论框架,因此,不能一味地盲目追求。在软件项目管理的过程中,结合实际建立适合软件项目的管理体系,做好项目监管和质量评审工作,促进软件质量满足实际应用的需求,顺应教育教学的发展需求,迎合教育用户的消费心理,不断提升软件质量,才可以有利于教育软件持续发展,开创教育软件发展的新天地。