基于CMMl模型的K公司软件开发项目体系
2018-11-09毛程佳
毛程佳
(科多思(北京)咨询有限公司上海分公司,上海 200335)
1 引言
K公司目前的主要业务是为各大通信运营商提供各种服务,包括域名系统(DNS)、电话号码映射(ENUM)服务和认证授权计费(AAA)服务等产品。由于该产品是从瑞典转移来到上海,缺乏核心骨干的技术支持,并且没有严格的软件项目管理模式。虽然有相关的项目管理人员,但是从传统的瀑布型开发模式变革为敏捷开发模式,项目管理人员并没有相关的项目管理经验和相关的培训,需要一定的时间去适应新的环境以及开发模式。这就导致了项目开发过程中出现了各种问题,例如,没有定期进行项目阶段审评、日程进度安排不合理、对项目进度估计失误、拖延工期、一定程度返工,即使勉强按照项目计划完成,产品质量也达不到预期要求。因此,分析并解决上述问题成为企业的当务之急,有必要深入研究质量管理相关的方法,从而构建适合K公司软件开发的质量管理体系。
2 软件项目质量管理
软件质量往往是软件工程的核心所在。软件质量是一个被过度使用的术语,它对不同的人意味着不同的东西,其主要包括了软件质量管理、质量管理计划、质量保证、质量控制、文档及其相关的缺陷跟踪。
软件质量的含义可以概括为:一个实体的特征的总和,它依赖于满足明确和隐含需求的能力。这意味着交付的软件产品必须按照定义的需求。
2.1 CMMI概述
能力成熟度模型集成(CMMI)是一个过程和行为模型,可以帮助组织简化过程改进,并鼓励生产效率高的行为,从而降低成本、产品和服务开发中的风险。
2.2 CMMI的组织成熟度层次
CMMI将能力成熟度分为5个等级,分别是:初始级、已管理级、已定义级、量化管理级和优化级。这5个等级中每一个等级构成了下一级的基础。CMMI为改进一个组织的过程提供了一个单一的集成化框架,新的集成模型框架消除各个模型的不一致性,减少模型间的重复,增加透明度和理解,建立一个自动的、可扩展的框架,从而从整体上改进产品的质量和组织的效率。
K公司的目标是将其组织提升至第4级,即量化管理层次。
2.3 CMMI的能力等级
CMMI能力等级描述了组织对于过程域的能力,能力由相关的共性和特定实践组成,该过程域可以改进与其相关的组织流程。每一层都是持续过程改进的基础。
CMMI将能力等级分为6个等级:不完整级、已执行级、已管理级、已定义级、定量管理级和优化级。
2.4 CMMI的表达方式
根据所使用的领域(获取,服务,开发)的不同,它所包含的过程域将有所不同。过程域是CMMI模型的基本组织特征。表1列出了CMMI 1.3版本所定义的17个核心过程域。
表117个核心过程域
度量与分析组织过程定义组织过程焦点组织绩效管理组织过程绩效组织培训项目跟踪与监控项目计划过程域产品质量保证量化项目管理需求管理风险管理供应商协议管理2335432224232
3 基础过程管理过程域
3.1 组织过程定义
目的:建立和维护一组可用的过程资产。
步骤:创建组织过程资产:
(1)建立组织的标准过程。
(2)建立生命周期模型描述。
(3)制定裁剪标准和指导方针。
(4)建立组织的过程资产库。
(1)将每个标准过程分解为组成数个过程元素,以了解和描述过程所需的细节。每个过程元素涵盖一系列相关的活动。过程元素可能包含模板、片段、需要细化的抽象等内容。
(2)指定每个过程元素的关键属性。
(3)指定流程元素之间的关系。
(4)文档化组织标准的标准过程。
3.1.2 创建组织生命周期模型描述
—— 瀑布模型
图1 瀑布模型
—— 增量模型
图2 增量模型
—— 极限编程模型
这段时间里,老邓频繁地来现场勘查。当然,他每次都会开玩笑,要么是一瓶酒,要么是一斤糖或几斤盐。刚开始是丁主任主动送的,后来成了老邓主动要,而且每次都毫不含糊,好像根本没看见丁主任越来越哭丧的脸。
图3 极限编程模型
—— 快速原型模型
图4 快速原型模型
3.1.3 制定组织裁剪标准和指导方针
裁剪的目的就是为标准软件过程裁剪,提供框架和总体指导方针,进而利用现有的资源优化现有的流程。K公司拟定每月进行一次内部审核,当月如果遇到新的文档或有待解决的问题时,会根据审核报告进行项目改进计划,并结合裁剪准则进行裁剪。
表2 制定组织裁剪标准
3.1.4 创建组织过程资产库
组织过程资产库的集合主要包含:
(1)过程和过程元素的描述,例如各工作流程、流程中各元素的定义等。
(2)生命周期的描述,针对整个软件开发和维护生命周期的描述,例如,从何时开始,到何时结束,当中经过几次小版本和大版本的发布。
(3)过程裁剪的指导方针。
(4)过程相关的文档和数据。
3.2 组织级培训
组织级培训提供岗位所需的技能培训,并以此提高技术人员专业能力和工作技巧。许多开发人员甚至是管理人员没有意识到组织级培训的重要性和前瞻性。为了能够让开发人员整体上达到组织级别的需求,项目组应当定期地组织培训,分享工作经验成果,针对未来的前瞻技术进行基础的培训。
级培训分为:
(1)规章制度培训。在新员工入职时执行,包括公司的规章制度、安全须知、年假病假等。
(2)技术技能培训。针对程序员、测试人员等技术方面的培训,包括开发工具、开发环境等。
(3)开发流程培训。针对目前已有的开发模型,进行详细的流程方面的讲解和梳理。
(4)内部技术分享。针对新开发的功能和特性,相关开发人员应当进一步将开发经验分享出来,提高整体开发人员技术能力。
(5)其他类型的培训。例如项目管理方面的培训,技术文档写作方面的培训,针对工作各种可能运用到的技术,都可以组织培训提高相关人员的水平。
4 基础工程过程域
4.1 需求开发
在引入CMMI模型之前,K公司需求开发流程较为松散,也没有有效的监控措施,并不是所有的需求都进行了文档化,有的时候甚至是口头传输信息,对于某些含糊不清的地方,也没有尽可能地解释清楚,所以可能会导致开发人员的误解。加之,缺乏完整有效的审核机制,使构建的需求可能会无法满足客户的真实需求。
K公司拟定建立一套规范的流程对需求开发进行管理。需求开发主要是集中在项目,需求分析人员与客户或产品经理通过引导客户实际的具体的需求,完成《客户需求分析研究报告》,之后需求分析人员进一步细化需求,将所得到的具体需求文档化为《需求分析报告》,并保存起来以便于接下来的审核和整理。接下来《需求分析报告》交由专家进行审核,通过以后再与客户确认需求并签字。
K公司需求开发的流程如图5所示:
图5 需求开发流程
4.2 需求管理
随着K公司项目的开发进展,将会陆续收到各种需求,为了避免需求蔓延,首先必须制定适当的渠道以获得需求。需求提供者与需求分析人员共同进行需求分析,以确保对需求的正确理解。对于需求的管理需要有一套标准的规范,K公司拟定撰写《评估和接受需求的标准》。
在获得了项目各相关利益者的承诺后,将项目承诺的需求以及需求变更文档化。其次在发生需求变更的情况下,项目经理需要分析需求变更的影响,是否需要提供额外的控制手段,任何的需求变化都必须文档化。
对于需求的可追溯性,必须要提供一个可以追踪需求的系统,K公司拟定使用OpenALM进行需求的管理和追溯。对于各类需求需提供水平和垂直的关系表。尽可能将原始需求细化为最小的力度,这种双向的可追溯性有助于确定所有的原始需求已被完全处理,并且在较低层次的需求也可以追溯到一个有效的原始需求。
K公司的需求管理的流程如图6所示:
图6 需求管理流程
4.3 技术解决方案
通过从需求开发和需求管理中接收的产品和产品组件的需求,技术解决方案才得以开启。
项目启动后,产品经理需创建《产品概要设计》,产品组的研发人员针对《产品概要设计》进行详细设计,建立《详细设计》和《测试用例分析》等说明书,并且需要经过专家的审核,如不通过,需退回去重新修改,通过以后,产品正式进行开发流程。
专家必须包括已有相关经验的高级开发人员、专职的项目审核人员、项目经理等。
项目的测试人员根据《产品概要设计》进行测试用例的分析,与组内开发人员进行合作,制定出《测试用例分析报告》报告等,测试用例必须要涵盖所开发或更新模块的所有功能。
技术文档工程师根据《详细设计》撰写用户支持使用说明书,主要包含的内容包括产品的安装,升级,配置文档,各类接口文档,以及功能和特性文档的需求详述。针对临时发生的需求变更,需要重新进行技术方案的评审工作,并且得重新估算项目时间。
产品经理可以根据功能将产品拆分为数个组件的形式,以工作包的形式分发给各个开发组进行并行开发,以此提高开发效率。工作包主要包含了产品架构的描述、分配的需求、产品组件的描述、关键的产品特性、接口需求、测试标准(保证需求得以满足)、使用条件和场景等。
在项目开发周期内,项目经理需安排相关负责人(一般为产品经理)对需求进行跟踪,如遇到需求相关的问题,需及时登记《项目问题日志》,持续跟踪并将问题解决。
K公司的技术解决方案流程如图7所示:
图7 技术解决方案流程
4.4 确认验证
验证包括对产品和中间工作产品的验证,以对抗所有选定的需求,包括客户、产品和产品组件需求。验证本质上是一个渐进的过程,因为它发生在产品和工作产品的开发过程中,从对需求的验证开始,通过对不断变化的工作产品的验证,并最终对已完成的产品进行验证。
5 结语
本文针对K公司的软件开发项目,结合CMMI的管理体系,进行软件质量管理的优化。主要是基于CMMI中的两个基础过程域:过程管理过程域和工程过程域,进行流程和解决方案上的优化。通过聘请专家组对这些过程域的流程进行审核。通过建立标准过程,定义产品生命周期模型,制定项目剪裁标注,以及创建资产库(即文档),组织各类培训,使项目管理过程规模化和正规化。对于项目的需求开发和管理,通过技术解决方案和确认验证进行了进一步的流程优化以及责任分配,从项目开始至结尾进行了严格的把握,最终可以对于项目的质量产品了积极的影响。