面向船舶总体性能预报APP研制的GJB 5000A应用方案
2020-08-05韦喜忠金建海王墨伟
韦喜忠,金建海,王墨伟,赵 峰
(中国船舶科学研究中心,江苏无锡 214082)
0 引言
随着计算机性能的快速提升和计算科学的不断发展,以物理规律为基础、计算科学为核心的船舶总体性能预报软件,正高密度融入船舶(包括舰船、潜艇等)的研发设计[1-5]。近年来随着应用的推广,这些性能预报软件开始趋向APP化:即面向一定的应用领域、基于一定的数学模型、融合专家知识形成可量化的并可工程化应用的性能预报结果[6-7]。通过对船舶总体性能的体系化梳理并形成相应的 APP软件(或其组合)进行船舶总体性能预报、评价、优化的工作模式,具有周期短、成本低、效能高、可与设计无缝高效融合等优点[8],它将与现有的物理试验研究体系一起,构成船舶总体性能研究的两大台柱,客观上推动我国船舶总体性能研发模式的变革。其中APP软件的质量和可靠性是这一新的船舶总体性能研发模式能否成功的前提和基础。
近年来,GJB 5000A—2008《军用软件研制能力成熟度模型》在众多软件研发单位得到了广泛地应用,其思想在许多商业软件开发上也得到了很好的体现,显著提升了软件开发的质量和可靠性。
作为国内外卓越软件企业的经验汇聚而成的最佳实践,GJB 5000A提供了非常全面的软件研制过程精细化管控手段,来帮助软件开发团队提升质量及完成项目目标的可能性。然而GJB 5000A只规定了应该“做什么”,并没有指明具体“怎么做”,因此在操作执行时还需要制定具体的应用方案(即实施方案),而目前已有的应用方案基本上都是针对军用装备软件(特别是含固件的软件)。为此,本文针对船舶总体性能预报APP软件技术要求和特点,制定了相应的应用方案,用于规范这类软件的研制,同时也可为其他各类软件的开发提供参考。
1 船舶总体性能预报APP技术要求
在船舶全寿命技术责任链“研究-设计-验证-建造-检验-服役-维修改进”中,特别是在研究、设计和验证阶段,依托物理试验或者性能预报软件对船舶的水动力学、结构安全、振动噪声等总体性能进行预估是一项必不可少的重要环节,因此相关预报软件的研发与应用一直是船舶行业技术研究热点。尤其是近二十年来,借助于自主研发或商用软件二次开发等方式,在船舶总体性能研究、预报、评价以及优化等方面,取得了丰硕的成果,极大地丰富了以物理试验为主的工作内容。
但是这些总体性能预报软件还存在结果稳定性不高、特别是同一个软件应用还存在“因人因事”差异等问题,从而影响了其总体作用的发挥,难以形成体系化的总体性能研发模式。为此,基于多年的研发和应用经验,中国船舶科学研究中心提出了基于“属性细分、知识封装”思想的APP化方法:其核心思想是以物理规律为基础,通过数据挖掘和物理机理研究等方案,对应用域、数学模型、条件域(或参数设置)等影响预报结果的因素进行研究分析[9-10],并经大子样数据应用验证后,获取如何确定应用领域、数学模型、参数设置的“专家知识”,并将整个分析过程和这些“专家知识”融合形成独立的应用软件,即APP软件。使用这些经过“知识封装”的APP软件,不但可以大幅提高应用的鲁棒性和可靠性,还可以降低使用门槛,为推动我国船舶总体性能研发模式的变革创造可能。
综上,如图 1所示,船舶总体性能预报软件发展的新趋势——APP软件的研发,与之前的软件/程序相比,其最大不同点是把原来依赖于个人能力的预报分析过程中的知识“封装”进来,即要明确应用域、数学模型以及相应的条件域(参数设置)这3个核心环节的相关内容,以此来提高最终的鲁棒性和可靠性。因此,理清预报整体分析过程尤其是这3个环节的明确需求,并对它进行有效验证测试是软件 APP化开发的核心技术要求,非常适合采用GJB5000A的精细化管控思想。
图1 APP软件主要特点示意图
此外,从事船舶总体性能预报软件研发的人员,其主要工作往往以力学性能基础研究为主,软件工程化基础相对薄弱,主要表现在:
1)软件研制流程不明确。整个软件研制过程应该包含哪些阶段、各阶段工作任务及要求等不明确。
2)需求分析不充分。当前APP的应用场景、具体采取什么模型,以及哪些是外部输入,哪些是按照经验知识进行封装等不够清晰明确,导致后期在试用过程中经常有需求变更或需求蠕动。
3)测试不够全面。性能APP的测试,普通的专业测试人员,往往只能满足“纯软件”方面的验证,而实际效果怎么样,还需要相关性能专业研究人员进行专业确认。
2 GJB 5000A及实施原则简介
以CMMI(Capability Maturity Model Integration,即能力成熟度模型集成)V1.2为主要参考蓝本的GJB 5000A—2008《军用软件研制能力成熟度模型》,是国际软件开发过程最佳实践的凝练。它以 PDCA为指导思想,以实现精细化管理和单位最佳实践的传承为目标,既是评价组织(某个单位或团队)软件研制能力的主要标准,也是软件研制能力如何提升的重要参考和指导。
GJB 5000A的核心内容,或评价参考的主要内容如图2所示:软件研制能力成熟度分为5个等级,每一等级构成了前进中过程改进基础的一个层次,是实现下一个成熟度等级的基础;每个成熟度等级都包含了一组预先定义的、改进组织整体绩效的过程域;根据是否达到与每组预定过程域相关的专用目标和共用目标(必需部件)来判定是否满足相应的成熟度等级,而专用目标和共用目标是否能够达到又是以其下一层次的专用实践、共用实践等期望部件和其他资料性部件的实现情况作为评价与改进的依据[11]。
图2 GJB5000A框架模型示意图
其中二级(已管理级)的核心内容(提升重点)如研制流程规范性、工作计划性、研制阶段性、需求控制与管理等,以及三级(已定义级)的部分核心内容(提升重点)如严格规范工程过程活动/制品等,特别契合本文中APP软件研发过程监控的重点和目前存在的主要问题。为此,本文选择GJB 5000A作为指导思想,制定创新性的应用方案,用于指导船舶总体性能预报APP软件开发活动的实施。
在GJB 5000A实施过程中,为了取得更高的组织效益并防止出现“两层皮”现象,需要结合组织/项目的目标要求[12-13],以最有效/最简为总原则,对目标和实践进行本地化。具体而言,相关的专用目标与共用目标是每项工作的分目标和指导思想;而作为期望部件的专用实践与共用实践,则应该给出符合组织特色、有效且尽量简单的过程活动描述,用以满足相应的专用目标与共用目标。特别是当对应的目标正好与目前软件开发过程中存在的问题相呼应时,更应该据此进行针对性强化,这也是 GJB 5000A在实施过程不断持续改进的指导原则[14]。
目前GJB 5000A实施的应用方案,主要是针对军用装备软件(特别是含固件的软件),而船舶总体性能预报软件尤其是APP软件与这些软件的差异较大,因此有必要制定专门的应用方案,以确保研发质量与效益并防止出现“两层皮”现象。
3 基于GJB 5000A的APP研发方案
为了满足船舶总体性能预报软件APP化的技术要求,本文以GJB 5000A的核心内容为指导,基于多年的船舶总体性能预报软件应用经验和APP化特点,制定了专门的APP软件研发生命周期及开发过程精准管控方案[15],用于指导该类软件的研发。
3.1 制定APP研发生命周期
为解决软件研制流程不明确的问题,首先需要针对其技术特点设定生命周期模型,并根据技术状态变化设定不同的工作阶段。
一般而言,经船舶总体性能体系化梳理后确定要开发的APP软件,其需求应该已经比较明确,所以采用最经典的瀑布模型是合适的。其次,此类APP一般以计算为主要特征,大量的复杂计算特别容易“犯错”,同时为了解决以往测试不够全面等问题,特吸收V模型在开发阶段就引入验证的优点[16]。再者参考GJB 2786A—2009《军用软件开发通用要求》等相关国军标要求,依据APP化软件研发过程中“软件模型”技术成熟度的演变、以及团队人员专业分工的不同,最终制定了如图3所示的APP软件研发生命周期。
图3 船舶总体性能预报APP软件研制生命周期
图3中,整个生命周期划分为5个阶段。
1)APP需求整理与策划:该阶段主要工作是由船舶总体性能研究人员(简称APP项目发起人)提出软件研制需求,然后委托给软件开发组并由他们给出开发计划;同时吸收V模型加强验证的思想,在任务书中即给出APP最后确认(验收测试)的初步方案。
2)软件需求分析:由软件开发组按照软件研制任务书的要求,从软件具体实现角度,定义和记录每项需求得以满足所使用的“软件”方法,形成详细的软件需求规格说明;同时给出软件配置项测试(合格性测试)的初步方案。
3)软件设计与实现:由软件开发组针对软件需求,进行概要设计、详细设计并开展代码开发实现;同时做好代码自测试等工作。
4)软件合格性测试:由独立于软件开发组的其他软件测试人员,对照软件需求规格说明,开展软件验证测试工作。
5)APP需求确认与验收交付:由独立的船舶总体性能研究同行,协同APP任务提出者一起,完成任务书中提出的功能/性能方面的确认测试,说明该APP确实能在船舶总体性能预报中起到期望的作用。
3.2 建立开发过程精准管控方案
GJB 5000A提供的需求管理、项目策划、项目监控、测量与分析、配置管理、过程和产品质量保证等过程域,对船舶总体性能预报软件APP软件的研发,尤其是目前主要问题的改进以及三大核心环节的管控,均具有很好的指导意义。经研究,综合其相关的专用目标、共用目标以及专用实践、共用实践,在整个APP研发生命周期内,建立了精准管控方案,主要包括以下5个方面。
1)参考需求管理过程域的应用方案
(1)由APP项目发起人(船舶总体性能分析研究人员)按照专门的任务书模板提出并整理需求,然后与软件开发人员、测试人员以及船舶总体性能分析研究其他人员一起对每条需求进行理解并确认;
(2)整个开发过程如果有需求变更,则需要分析影响域并获得团队(变更控制委员会,负责人为APP发起人)同意;
(3)对任务书、软件需求、软件设计、测试计划和报告[17]以及关键代码都进行技术评审,通过需求跟踪矩阵来确保每条需求的可追踪性。
2)参考项目策划过程域的应用方案
(1)软件研制任务书确定之后,在本文制定的APP研发生命周期基础上,对APP开发过程进行WBS分解(可近细远粗),并进行工作产品规模、工作量等估计;
(2)在估计的基础上,结合任务要求制定开发进度,并将APP开发关键环节(需求分析、测试和验收)设置为里程碑节点;
(3)识别可能存在的风险,如哪些需求可能不明确、如何有效验证或测试预报的合理性等;
(4)结合APP开发目标,确定工作量、进度、需求变更、缺陷等测量项;
(5)最后依据推荐的模板将以上内容编制成开发计划,以及附录的详细WBS实施计划。并在执行过程中随时更新WBS实施计划;而开发计划只在进度超过阈值时更新。
3)参考项目监控、测量与分析过程域的应用方案
(1)在整个开发期间,开发团队每个成员按照分配的WBS任务包进行开发工作,记录完成任务包的工作量、进度,以及可能有的规模(如文档或代码)、问题(如测试任务)、需求变更等,如存在困难则需要尽早作为问题(含风险)提出来,并更新软件问题跟踪表。
(2)APP开发负责人定期(如双周)并在阶段工作/里程碑节点完成时,对WBS任务包和记录的测量项进行数据采集,获得当前实际执行情况,并与计划进行比较,当测量项超出阈值时则应作为一个问题,需分析原因并及时采取纠正措施,通知受到影响的团队成员和发起人。
4)参考配置管理过程域的应用方案
(1)经过技术评审后的文档和测试通过之后的代码,需纳入受控库统一管控;
(2)通过合格性测试和/或确认测试的,则应该进入产品库;
(3)2个库中的文件(即配置项)的存取改,均需要获得该APP项目发起人的同意并有技术状态备注。
5)参考过程和产品质量保证过程域的应用方案
SQA人员对总体开发流程、关键控制点(需求提出、分析、测试)的活动和工作产品(技术文档与部分代码)进行质量审查,对存在的主要不符合项进行督促整改,促使开发人员对整个应用方案的理解与执行能越来越到位。
4 方案应用效果
选择10个开发周期为一年(计划)的一批APP研制项目作为试验对象[15],并分为 2组:第一组 5个试点APP按照本文的GJB5000A应用方案进行研制,第二组5个APP继续沿用平时的科研模式,未按照本文应用方案进行研制(两组的专业属性、开发语言、技术难度和规模等因素比较接近)。
之后,由独立的软件测试组对这批APP软件进行合格性测试(预验收)工作,两组APP发现的问题对比情况如表1所示。
表1 两种不同开发模式下APP软件的效果对比
表1中,问题按照来源分为文档问题和代码问题;按照级别分为严重、一般和轻微(“致命”级别问题不存在,故省略)。其中严重问题是指APP软件无法正常运行或无法正常预报性能;一般问题是指该APP对个别船舶总体性能指标预报不准确,或鲁棒性还存在较大不足;轻微问题是指该APP在条件域内所有性能指标预报都准确,但是友好性或鲁棒性不足,如输入参数有误时没有提示信息或信息不够准确清晰。
经过软件测试组测试,按照本文应用方案进行研制的第一组5个试点APP,共发现15个问题。其中13个轻微问题普遍都是个别参数错误时没有提示信息;2个一般问题是输入参数超过条件域(越界)时,计算结果不符合期望值。
而未按照本文方案的第二组5个APP,共发现了53个问题。其中有1个APP一旦改变推荐的输入参数,软件崩溃,或者给出的结果仍然是一样的,且没有相应的文档支撑,是一个严重问题;32个一般问题,普遍体现在输入边界不清晰(未做充分需求分析),测试者在随意改变输入参数时,特别是在逼近条件域边界(需开发者口头判断是否超出条件域)时,计算结果明显不合理、没有结果输出甚至软件直接崩溃;另外还有20个轻微问题。特别地需指出的是,这些APP的文档也普遍薄弱,很多APP没有对应用域、相应的条件域(参数设置)做出说明,大部分只给出了简单的数学模型并缺少必要的需求分析,在开发人员自测试的时候也无法进行边界测试(因为条件域不清晰,不知道边界在哪),因此软件质量普遍比较低下。
此外,在完成第一轮合格性测试并提出整改要求之后,第一组5个试点APP在后期验收测试中全部一次性通过,而第二组5个APP,在后期经过多次回归测试之后,才勉强通过,且在总体进度方面(验收通过)平均延迟了3个月(25%)左右。
可见,采用本文应用方案进行研制过程管控的APP软件,能较好地体现出其应用域、数学模型、相应的条件域(参数设置)等体现专家知识密集的特点,能大幅提高软件质量、控制研发进度,大幅提升APP软件按时高质量完成的成功率。
5 结论
本文研究了船舶总体性能 APP软件在其应用域、数学模型以及参数设置等环节专业知识密集、逻辑复杂特点,并针对开发过程中存在的流程不规范、需求分析不充分等问题,参考GJB 5000A核心思想,研究制定了相应的软件开发流程和过程精准管控方案,为APP软件的规范化开发提供了依据,通过试点项目表明其可以大大提高软件质量和可靠性,有效控制开发进度,可为船舶领域性能预报APP软件的设计开发提供指导,同时也可为其他复杂软件研发提供参考。
6 致谢
船舶总体性能预报APP研发是一项开创性的工作,本文的完成得到了中国船舶科学研究中心何春荣所长的亲自关心与指点。相关工作涉及到了大部分研发部门、部分机关部门以及单位SEPG组主要成员,因此在这里特对相关人员表示感谢,如质量安全处的彭超、技术基础部的许哲、软件工程中心的孙佳新、新兴技术室的陈奕宏、陈伟政、查建波、陈卓等。