周甄珍+王浩宇
摘要摘要:介绍GJB5000A三级的基本概念,并在此基础上阐述软件开发实施的重要过程,最后结合项目实践提出项目实施过程中普遍存在的问题及建议。
关键词关键词:GJB5000A;过程域;军用软件开发;软件项目管理
DOIDOI:10.11907/rjdk.161642
中图分类号:TP319文献标识码:A文章编号文章编号:16727800(2017)001013302
军用软件研制能力成熟度模型采用分级表示的方法,主要分为5个等级[2]:1级(或M1)为初始级,2级(或M2)为已管理级,3级(或ML3)为已定义级,4级(或ML4)为已定量管理级,5级(或ML5)为优化级。从软件开发过程看,成熟度1级的过程通常是随意、无序的;成熟度2级的项目已确保其过程按照方针进行策划并执行;在成熟度等级3,过程已经得到了很好的定义和理解,并采用标准、规程、工具和方法进行了描述。
标准包含22个过程域[3],按不同成熟度等级进行了分类,每个能力成熟度等级包含若干过程域。组织在提升成熟度等级的过程中,应使用相应成熟度等级中的过程域以及较低成熟度等级中的全部过程域,增量地实现几个过程域相关的专用目标和共用目标。其中成熟度等级2包括配置管理、测量与分析、项目监控、项目策划、过程和产品质量保证、需求管理、供方协议管理7个过程域,成熟度等级3则是在成熟度等级2的基础上增加了决策分析与决定、集成项目管理、组织过程定义、组织过程焦点、组织培训、产品集成、需求开发、风险管理、技术解决方案、确认、验证11个过程域。
2GJB5000A三级实施中的关键过程
2.1需求开发与管理
需求开发的目的是挖掘并分析顾客、产品和产品部件的需求。需求管理的目的是管理项目需求,并标识这些需求与项目的计划和工作产品之间的不一致性。具体实施步骤[4]如下:①将用户需求转换为软件系统需求,制定软件系统规范,并通过仿真或编码实现的方式确定软件的关键技术;②将软件系统需求分解给各个配置项,开展软件需求分析工作,并确定最终解决方案;③对软件需求实现方案进行详细设计;④依据软件设计进行代码的编写;⑤每个开发阶段都形成相应的文档,文档之间采用正逆向追溯表进行需求之间的追溯。
2.2软件项目管理
软件项目管理的目的是在项目的全生命周期内制定和维护项目活动计划并监控计划的执行,确保项目的有效运作。具体实施步骤如下:①建立项目已定义过程,完成项目的工作量和进度估计,完成软件项目计划,并保证各个计划之间的一致性;②依据阶段计划,在定期监控、月分析和里程碑阶段进行任务分配和监控,针对出现的问题和偏差采取纠正措施;③软件开发工作完成后,对软件开发的各项工作进行总结分析,并编寫软件开发总结报告。
2.3软件分包管理
软件分包管理的目的是保证项目按计划让分包方提交满足要求的产品。具体实施步骤如下:①拟制软件技术协议并签订合同,并明确与分包软件研制工作有关的实施要求;②按照分包合同及技术协议、分包管理计划的要求参与并管控分包合同及技术协议,以及分包管理计划的执行;③对分包方提交的产品进行验收,证明该产品能够满足软件技术协议的要求。
2.4软件质量保证
软件质量保证的目的是使员工和管理者对过程和相关的工作产品能有客观深入的了解。具体步骤如下:①开展软件质量保证策划工作,如制定《软件质量保证计划》;②在规定的过程评价时间点到达时,或相关事件发生时对过程活动进行评价,记录与计划、标准、过程、规程不符合之处;③在规定的工作产品评价时间点到达时对软件工作产品进行评价;④记录过程评价和工作产品评价中发现的问题,跟踪不符合项的关闭;⑤在项目规定的报告期内总结软件质量保证工作的开展情况。
2.5软件配置管理
软件配置管理[5]的目的是利用配置标识、配置控制、配置状态纪实和配置审核,建立和维护工作产品的完整性。具体实施步骤如下:①开展配置管理策划工作,如建立配置管理系统和制定《软件配置管理计划》;②控制工作产品的入库、出库和变更活动,变更应采取分级管理;③在各个阶段结束点开展基线审核,并建立基线;④在项目规定的报告期内总结软件配置管理工作的开展情况。
2.6软件过程改进
软件过程改进主要是站在组织层面,提高整个组织的软件过程改进能力。主要内容包括:①制定并维护年度软件过程改进工作计划;②制定并维护软件过程体系文件;③定期召开例会和按计划定期跟踪相关过程和产品,监督过程改进工作及项目组部署的过程资产的实施,并在出现偏差时采取适当的纠正措施;④定期在组织内开展内部评估,为下一轮过程改进工作作准备;⑤更新组织级测量数据与软件工作环境标准,对软件过程资产进行系统维护,对全年的软件过程改进工作进行分析和总结;⑥根据软件过程改进工作的活动、状态和结果组织管理评审,以便评价和掌握过程改进工作绩效,并形成相关决策事项,作为下轮过程改进工作的基础。
2.7重大决策过程
重大决策过程的目的是采用正式的评价过程分析重大问题或事项可能的决策,依据定义的评价准则和评价方法,选择一个尽可能满足多个利益相关方要求的解法,从而规避决策结果可能带来的重大风险。其中,主要要素包括评价准则、评价方法、参与评价人员和评价时间。组织人员确定重大决策问题的备选方案,或在需要时进一步明确重大决策事项;对评价结果做出决定,在必要时进行风险分析;对活动的结果作记录,记录形式可采用会议纪要、评审报告或独立的文档。
3GIB5000A三级实施过程中的常见问题与建议
(1)同行评审流于形式。同行评审被定义为“由软件工作产品生产者的同行遵循已定义的规程对产品进行的技术评审”[6],在目前的软件开发过程中,存在“重代码、轻文档”的现象,从而导致软件开发文档的质量普遍不高,因此需要相关领域的专家对文档质量进行把关。然而,目前大多数评审只是流于形式,而未能发现实质性问题,评审有效性不足。建议文档评审之前先交由同行专家进行文档审查;管理层需要给予同行评审提供支持,如资源、时间、培训和激励等;评审结果生成评审缺陷分析表,用于检测评审的有效性。
(2)对软件测试过程不够重视。目前软件开发过程中由于时间紧、前期项目计划未得到有效策划和跟踪,导致后续测试时间严重不足。软件测试是为了尽快、尽早地不断发现各种软件缺陷而开展的对软件及过程产品的验证和确认活动[3]。建议在项目初期安排好项目计划,项目除进行配置项测试和系统测试外,针对关键重要模块要开展单元和集成测试,测试文档要与开发文档形成追溯关系,保证功能与性能的一致性。
(3)变更控制不到位。与硬件相比,软件的变更更为频繁和难以控制。在软件开发过程中变更主要来自计划和需求,分为文档变更和代码变更。在目前的项目运行过程中,变更影响域分析很薄弱,过程中比较常见的现象是项目分派和计划、设计文档和代码之间对应不上。建议除了对变更进行分级控制外,应细化软件文档模板(增加正逆向追溯表),并加强对变更后文档的同行评审和联合评审。
4结语
GJB5000A作为软件开发的一个通用标准,其中的过程域既独立又相互融会贯通,而在推广实施过程中,要将标准中的要求转化成自身的体系要求,并结合实际情况不断进行改进与提升,最后达到规范开发过程、提高软件开发能力和保证软件产品质量的目标。
参考文献:
[1]GJB5000A2008军用软件研制能力成熟度模型[S].2008.
[2]冯听雷.GJB5000A从二级到三级的升级策略[J].价值工程,2012(5):7475.
[3]张万军,储善忠.基于CMMI的软件工程教程[M].北京:清华大学出版社,2008.
[4]倪亭.在软件研发与测试中推广GJB5000A[J].软件,2013(2):3135.
[5]董越.未雨绸缪:理解软件配 置管理[M].北京:电子工业出版社,2012.
[6]于波,姜艳.软件质量管理实践:软件缺陷预防、清楚、管理实用办法[M].北京:电子工业出版社,2008.
责任编辑(责任编辑:黄健)