基于GJB 5000A的控制系统软件过程管理方法

2022-01-08 11:37刘二平马帅明
船舶标准化工程师 2021年6期

刘二平,马帅明,刘 涛

(1. 海军驻邯郸地区军事代表室,河北邯郸 056000;2. 邯郸净化设备研究所,河北邯郸 056011)

0 引言

近年来,随着新型机电设备集成度和复杂度的快速提高,其软件规模和关键等级相应提升,对软件质量和可靠性指标的要求也更加严格。控制系统软件作为机电一体化设备的重要组成部分,较高的质量和可靠性是设备创新及研制成功的前提和基础。近年来,设备使用方对软件过程管理的要求愈发严格和规范。对于一些软硬件集成的设备,控制系统软件承担着设备的数据采集、逻辑运算、状态显示以及故障报警等多项重要任务。在检验和交付阶段,软硬件集成设备更是对软件系统的功能、性能和接口等指标有着较为严格的测试,这无形中对软件开发方的过程管理水平提出了更高的要求。

在过去,开发者在软件编制过程中往往只重视软件功能的实现,缺乏对软件健壮性、鲁棒性以及容错性的理解和重视。在软件设计和实现过程中,往往会忽视对过程的优化和管理,导致软件运行效率低、可靠性差。有些单位缺乏有效的管理,未及时更新软件版本导致设备无法正常运行。近年来,GJB 5000A—2008《军用软件研制能力成熟度模型》在计算机软件领域有着广泛的应用,以此标准开发的软件产品显著提升了软件的质量和可靠性。然而,该标准只是对开发者和管理者提出一些规则和纲领性的要求,并没有明确不同类型软件的具体实现步骤。因此,在操作执行时各组织需根据项目的具体特征制定差异化的解决方案。

本文结合机电一体化设备控制系统的软件工程化实践经验,在软件项目执行过程中以实际需求为出发点开展大量的本地化执行工作,并在满足GJB 5000A要求的同时对不同类型软件项目进行了定制化开发。以提升软件工程能力和项目管理能力为目标,确保在质量稳定、可靠的前提下按进度交付软件产品。

1 GJB 5000A的过程管理要素

GJB 5000A将组织的软件研制能力成熟度分为初始级、已管理级、已定义级、已定量管理级和优化级5个等级,见图1。本文将重点介绍二级软件项目的过程管理方法。

图1 GJB 5000A软件研制能力成熟度等级

GJB 5000A每个成熟度等级包含若干个过程域,共同形成了软件过程管理能力。在GJB 5000A二级实施要求中,项目管理类过程域包括项目策划、项目监控和供方协议管理3个部分;工程类过程域为需求管理过程域;支持类过程域包括配置管理、过程和产品质量保证、测量与分析3个部分。结合项目实际,本文主要对项目管理类过程域和支持类过程域进行详细介绍。

1.1 项目策划过程域

项目策划过程域的主要工作是根据项目需求制定相应的计划,并在制定计划前完成项目生命周期模型的确定、项目规模估计、工作量估计、相关的项目资源需求及进度表编制等工作。其中,对于项目执行过程中的数据管理、利益相关方参与情况以及运行中可能遇到的风险等因素均需提前编制相关计划。计划编制完成后,项目组应组织同行专家对计划文档进行评审并获得对计划的承诺。在后续的项目执行过程中,项目组应积极协调和落实项目计划,软件项目负责人可以通过定期跟踪、阶段跟踪、定期例会等方式对计划的落实情况进行监督。当工作量和进度等与项目实际执行情况存在显著偏差时,应对项目工作量和进度等进行维护,以便使计划得到有效实施。

1.2 项目监控过程域

项目监控过程域的主要工作是要准确、及时地对项目的规模、工作量、进度、数据管理情况、利益相关方参与情况、项目资源使用情况、项目风险以及项目问题管理等情况进行有效监控。由于不同管理阶段需监控的内容及形式均不相同,在项目执行初期应根据实际需求制定项目监控计划,并经专家评审一致通过。在后续的执行过程中,项目监控人员应严格按计划落实。一般来说,项目组相关人员应适时地开展双周、月、阶段跟踪和监控(可根据具体的项目周期确定跟踪频次),当实际情况偏离计划时,应采取纠正措施,直至问题得到解决。若实际情况偏离计划较为严重,且会对关键节点的评审造成影响时,项目组应考虑按流程进行项目变更。

1.3 需求管理过程域

需求管理过程域的主要工作是在项目初期针对需求问题充分与用户沟通,项目组应基于自身的能力实现情况明确软件需方提出的任务。双方达成一致后应制定需求管理计划,并在软件开发过程中通过需求跟踪矩阵、需求状态确认表等方法对需求的完成情况实时进行正反双向跟踪,以保证前期需求与后续功能实现的统一性。当需求计划与产品的功能实现不一致时,及时启动纠正措施。此外,当采用瀑布式生命周期模型进行软件过程管理时,需求变更会对项目的进度和成本产生一定程度的影响,但仍应积极推进,并通过一套严格的变更机制来确保变更后软件项目的质量。

1.4 测量与分析过程域

测量与分析过程域的主要工作是通过项目测量分析人员定时对项目执行过程中产生的大量数据进行跟踪和测量。测量项主要包括进度、工作量、人均生产率、规模、项目质量和项目评审情况等。项目组在建设初期应建立和维护测量目标,使它们与已标识的信息要求和组织目标相一致,并对测量项、分析技术、数据采集、数据存储、报告和反馈的机制进行规定。当前,数字化产业快速发展,数据作为一种重要的生产资源,对其进行合理地分析和处理可提供更加丰富和完善的项目信息。测量人员在软件开发和管理过程中获得的大量、多种类的数据,将为软件过程的不断改进和开发过程的不断完善提供科学依据。

1.5 配置管理过程域

配置管理过程域的主要工作是通过配置管理人员对软件项目执行过程中产生的相关配置项进行受控管理,并根据需要完成项目的变更、出库、配置审查以及配置状态记录等。软件项目开始执行前应成立软件配置控制委员会,建立适合于分级控制的配置管理机构并配置管理库和相关的管理规则。在软件配置管理计划中应标识需交付的软件产品、内部工作产品、软件开发工具和环境资源以及需采购的产品等,并实施适合等级控制的配置管理。配置管理员还需对处于配置管理之下的工作产品的更改进行跟踪和控制,并记录配置状态,进行配置审核,建立和维护基线的完整性。

1.6 过程和产品质量保证过程域

过程和产品质量保证过程域的主要工作是通过项目质量保证人员依照项目启动会议纪要和适用的过程说明、标准与规程制定质量保证计划,并按照该计划进行过程和产品评价。过程和产品质量保证过程域的目的是保障软件研发过程的规范性以及产品的质量。质量保证人员应客观地跟踪和交流不符合项,确保问题得到解决,从而为项目组成员和管理者提供项目全生命周期的过程和相关工作产品的实施情况,以支持高质量产品和服务的交付。质量保证人员应独立于项目组,并具备向包括最高管理者在内的不同层次的管理者直接报告项目问题的权利。

2 软件过程管理本地化

2.1 体系结构制定

为落实GJB 5000A的核心思想,本文依据图2的体系结构组成制定了适合不同类型项目的体系文件。

图2 体系结构组成图

第1层为总方针,该层规定并明确了软件过程的改进方针、组织机构、角色职责、保障资源和验证要求;第2层为过程模型,规定了软件开发过程,根据实际情况以完全瀑布模型为基础制定项目的生命周期模型;第3层为过程支持元素,包括方法、模板、指南、规程、标准、培训以及工具等。结合项目实际,该层的支持元素主要包括软件评审规程、软件过程改进体系文件编制规定、软件测试规程、风险管理规程、软件估计规程、软件估计指南、数据采集和测量分析规程、变更控制规范、数据管理规程、三库管理规范以及不符合项处理规程;第4层为根据项目实际特点所执行的本地化操作,这里主要包括构建简化版生命周期模型、在项目估计时根据梯形图类编程语言设置与C语言间转换关系、显示类编程软件规模估计、引入功能点算法进行项目估计、根据项目实际需要对单元测试说明和单元测试计划进行合并、合并软件设计和软件实现阶段的相关工作等。

2.2 简化版生命周期模型

典型的瀑布型生命周期模型包括问题的定义及规划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段。本文结合机电一体化设备控制系统软件实际需求研究制定了简化版生命周期模型(见图3)。

简化模型适用于功能简单、开发周期短项目的软件开发过程。在该模型中,省略了配置项测试过程并利用软件自测试代替单元测试过程,保留了软件验收测试。从图3可看出,在本模型中,配置管理过程域、过程和产品质量保证过程域以及测量分析过程域始终贯穿在整个项目的生命周期活动中。相应的,项目策划和项目监控过程域在项目结项时同时结束,不持续跟踪到下一个软件维护阶段。此外,本模型中项目评审采用专家和同行评审的方式来对不同阶段产生的工作产品在技术和质量层面进行把关。本模型可为小型、短周期项目提供参考实践,使软件开发过程更易控制和管理。

图3 简化版生命周期模型

2.3 其他本地化操作

在实际执行过程中,为使GJB 5000A标准切实“落地”,采取的其他本地化操作包括3点:

1)为满足不同类型软件的过程管理,综合考虑软件规模、开发语言、项目周期以及人员配置等因素,并根据每种因素分配不同的影响系数进行数值评估,从而确定对相关过程域的合并或裁减。

2)为满足不同用户需求,在规模估计阶段将功能点估计方法引入到自动化类嵌入式软件中,大大提高了软件估计的准确度,为项目成本估算和进度计划的制定提供可靠依据。

3)针对显示类编程软件中图文控件无法进行规模估计的问题,基于实践经验建立常用控件与C语言间等比换算系数表,采用间接估算的方式保障项目工作量预估的准确性,为项目进度计划的制定及成本估计提供科学依据。

3 结论

本文详细介绍了二级软件管理过程中每个过程域的具体工作,通过各过程域的相互协调使得软件管理工作能够顺利开展。根据实际项目的需求特征、开发语言、运行平台和项目周期等特点,以 GJB 5000A为核心思想研究制定了相应的软件开发流程和过程精准管控方案,可为本单位今后软件项目的规范化开发提供基础。本文所提方案可有效提高软件生产率、降低开发成本、提高产品质量。