APP下载

软件工程化实施中的问题与对策

2018-02-27王勇

电子技术与软件工程 2018年19期
关键词:软件工程

王勇

摘要

在调研航空制導武器系统软件开发现状的基础上,对软件工程化实施中的问题进行分析,并提出相应的对策与改进建议,期望提高软件工程化水平和软件产品质量。

【关键词】软件工程 软件质量 正向设计 软件过程改进 GJB5000A

软件在航空制导武器系统中的应用日益广泛,软件质量对系统成败的影响不断增加,因此软件工程化管理得到用户和系统承制单位的高度重视;用户在软件计价、软件贯标、软件定型和软件工程化检查等方面的要求不断提高,系统承制单位也根据产品研制的实际需要持续开展软件工程化管理工作。

为了进一步提高航空制导武器系统的软件工程化水平,不断提升软件产品质量,经过内部调研和同行交流,本文针对航空制导武器系统在软件工程化实施中的问题进行分析并提出相应的对策与改进建议。

1 软件工程化实施现状

系统承制单位结合GJB5000A的实施,通过标准本地化建立了比较完整的软件工程管理体系,从方针、过程、规范、模板等多个层次明确软件工程化要求。

在具体的型号研制过程中实施工程化管理:制定型号软件工程化大纲明确本型号的软件工程化要求;通过软件研制进展跟踪、软件工程专项审查、进场软件状态清查、外协软件管理等措施促进软件工程化要求的落地;通过分析、整改型号软件工程化实施过程中的问题,不断优化软件工程体系文件;通过“P-D-C-A”循环实施软件工程业务的持续改进。

2 主要问题与原因分析

经过持续改进,系统承制单位的软件工程化管理取得了一定成效,但在软件正向设计、软件文档质量、软件测试效果、算法设计管理等方面依然存在诸多有待解决的问题。

2.1 软件正向设计未有效开展

按照软件工程化要求,软件编码必须依照软件需求分析和软件设计的结果进行;但目前先编软件代码、后补设计文档的现象仍然普遍存在,软件研制没有按照先设计后验证的正向过程开展,而是通过编码调试、不断试错来明确需求完成设计。

究其原因,主要包括以下几点:

(1)系统级的正向设计未有效开展,系统分配给软件完成的功能不明确,软件研制缺少明确输入;

(2)型号线重结果、轻过程,关注软件交付而忽视软件研制过程;

(3)软件研制的人员“三分离”原则未落实,需求分析、软件设计、软件编码工作经常由同一个人完成,软件研制人员能够跳过分析设计环节直接编码随后再补相关文档;

(4)进度安排不合理,软件分析与设计的周期短、相关工作难以深入开展;五,软件重用不规范,借鉴其他型号进行软件研制时直接修改代码而忽略分析与设计环节。

2.2 软件文档质量普遍不高

软件文档记载了软件需求分析和软件设计的结果,是软件开发、软件测试以及软件升级维护的重要依据,是定型审查时重点关注的内容,但目前系统承制单位的软件文档质量普遍不高。软件内部测试和三方测试完成后,提出的文档问题在所有问题中比重最高,大约占到65%的比例。

软件需求和软件设计描述的不完整、不细致,严重影响软件产品质量和软件测试效果,并且在定型审查时需要花费大量精力完善软件文档;软件文档粗糙、软件产品文实不一致为将来的软件升级维护带来隐患。

软件文档质量不高的主要原因包括:

(1)型号线重代码、轻文档,更关注文档有无而忽视文档质量,对需求粒度、文档页数等相关指标不关注;

(2)软件研制人员兼顾代码编写、调试试验和文档编制,精力不足;

(3)评审把关不严格,集中表现为评审前未提前发放被评文档、一次性突击评审多个文档、评审未对照检查单有针对性开展。

2.3 软件内部测试效果不理想

软件测试部门开展了单元、部件、配置项以及系统级的软件内部测试,大幅提升了软件质量。但内部测试完成后,三方测试和定型测评机构依然能够提出较多问题,说明系统承制单位的软件内部测试效果仍有较大提升空间。

内部测试效果不理想的主要原因包括:

(1)测试人员的能力有待提高:测试人员多数为计算机相关专业,缺少武器系统和嵌入式软件的设计经验,对被测产品的设计原理认识不够深刻,对新的测试理念测试方法学习不及时;

(2)软件测试部门承担的测试项目多、测试类型多,测试人员的精力严重不足;

(3)型号线为软件测试提供的工作时间极短,测试时间不充分,测试工作难以全面深入开展。

2.4 算法设计管理不规范

目前,软件设计部门都有专门的算法设计人员负责算法研究,软件对算法的依赖性强,软件研制后期的更改多数与算法相关。但目前算法设计在产品研制流程中的定位不明确,算法设计报告缺少规范和模板并且未纳入技术状态管理,算法设计的思想在软件文档中难以充分体现,软件研制和软件测试人员对算法设计思想理解不透彻,并因此对软件质量和软件测试效果带来不利因素。

3 应对措施与改进建议

针对上述问题,建议在后续的软件工程化实施过程中,从如下几方面采取措施、逐步改进。

3.1 推进软件正向设计

3.1.1 在系统研制过程推行正向设计

建议在型号研制过程中推行基于模型的系统工程,提高武器系统的正向设计能力,为软件正向设计奠定基础。建议合理分配各阶段的研制周期,在方案阶段更多地通过数字样机开展系统需求分析和架构设计,明确系统功能、性能指标,明确系统架构和各组件的功能、性能、接口关系,确定由软件实现的功能以及不同软件之间的接口关系,扭转通过编码调试、不断试错来获取软件需求的研发模式,为软件正向设计创造有利条件。

3.1.2 大力推进GJB5000A三级全面贯标

GJB5000A三级过程文件规定了软件研制的流程规范,同时明确由软件质量保证人员对软件研制过程的规范性进行监督检查。通过全面贯彻GJB5000A三级标准,落实软件研制人员的“三分离”原则并合理分配软件研制时间,保障软件需求获取、软件需求分析和软件设计工作充分开展,促使软件研制人员按照标准规定的正向设计流程开展软件研制工作,提升软件产品质量。

3.1.3 不断充实软件重用库、规范软件重用

软件重用可以减少软件开发活动中的重复性工作,提高软件生产率,缩短软件研制周期。结合GJB5000A三级贯标,系统承制单位已建立了软件重用库及其管理规范,各软件研制部门应按要求对可重用模块的需求、设计、代码进行梳理,保证重用模块的要素完整;通过软件重用进行软件开发时,应按正向设计流程对需求、设计和代码进行完整地重用。

3.2 提升软件文档质量

应严格落实设计评审要求,通过提升评审质量提高软件文档质量。评审会应邀请同行专家参与,评审前应提前发放被评文档,评审必须对照检查单开展,应充分保障评审时间、杜绝一次性突击评审多份文档的现象,评审发现的问题应如实记录并逐一纠正,评审组长应严把评审质量关,软件质量保证人员应对评审的规范性和有效性进行监督检查。

3.3 提升软件测试效果

3.3.1 测试融入设计过程、提前开展可测性分析

结合GJB5000A貫标,以V模型为规范开展软件研制,将软件测试融入设计过程,将可测性分析、测试策划、测试用例设计工作与软件设计工作并行开展;将软件测试工作由原来的事后检验改为事前预防分析,提前发现软件需求和软件设计方案中的问题,提前开展测试策划和测试用例设计工作,尽早发现软件缺陷,缩短测试准备时间,提升测试效率和效果。

3.3.2 优化软件测试流程、提升团队测试效果

将软件单元、部件测试工作前移,由软件研制人员在编码完成后及时开展软件单元、部件测试,以便尽早发现和修改软件问题,并通过快速迭代减少出入库次数来降低后期发现问题时的纠正成本、缩短软件研制周期;软件测试部门在软件研制人员的单元、部件级自测试完成后,集中精力开展配置项和系统级测试,重点关注软件功能、软件架构、软件设计方面的深层问题。

3.3.3 优化人员知识结构、提升软件测试能力

通过开展专题培训,使软件研制部门的单元、部件测试人员充分掌握软件测试原理、测试方法和测试工具;通过人员轮岗、吸纳产品设计人员加入软件测试部门等方法,使配置项/系统测试人员进一步熟悉被测产品;组织测试人员对软件测试的新理论新方法进行跟踪学习,并与同行专家进行定期交流,不断提高软件测试能力;通过专家评审、抽查互检等方式对软件测试质量进行审查,促进测试能力与测试效果的提升。

3.4 规范算法设计管理

由各软件研制部门梳理产品研制流程,明确算法设计工作在产品研制流程中的定位,明确算法设计与软件研制的关系,明确算法设计报告的编写规范和模板样例,并将算法设计报告纳入技术状态控制;上述内容确定后,以企业标准的形式予以明确,在软件研制过程中予以落实。

建议由算法设计人员编写详细的算法设计报告,软件研制人员根据算法设计报告开展软件需求分析和软件设计工作,邀请算法设计人员参加软件文档评审,确保算法设计思想在软件文档中充分体现,保障软件代码质量和软件测试效果。

3.5 优化人力资源配置

为了推行正向设计、保证软件质量,在软件工程领域存在人员“三分离”原则,用户和有关机构反复强调“应将分析设计队伍与编程队伍分开、编程队伍与测试队伍分开”。但目前人员“三分离”原则在系统承制单位未有效落实,由一两个人完成整个软件研制的情况十分普遍,经调研人力不足是“三分离”原则未落实的主要原因。

此外,软件工程化要求的落地需要开展大量细致深入的工作,软件文档质量不高、软件测试效果不好、全面贯标实施困难等问题均与人力资源不足有重大关系。因此建议企业人力资源部门对软件从业人员现状进行调查分析,根据需要补充软件研制人员。

近几年,军工行业许多单位结合GJB5000A全面实施,将分散的软件研制人员集中管理,设立专门的软件需求分析、软件设计、软件编码和软件测试团队,在实现人员“三分离”、促进软件正向设计、推进软件工程化实施方面取得了良好的效果。

3.6 加强外协软件工程化管理

由于软件外协越来越多,加强对外协软件的工程化管理十分必要。型号线应全面梳理外协软件清单、明确管理对象,按要求选择通过GJB5000A评价、具备软件承制资格的外协单位,在签订外协合同时应在技术附件中明确软件工程化管理要求,必要时在技术附件中对外协单位提出软件三方测试要求,型号线应对外协软件技术协议进行审查,在软件研制过程中应定期开展外协软件的工程化检查,并参加任务书、需求等重要阶段的文档评审,在外协软件交付前型号线应组织软件验收审查,确保承制单位将软件工程化要求落在实处,确保外协软件质量满足需求。

4 结论

软件已经深入到人类生活的各个领域,软件的功能日益复杂和强大,软件失效所产生的影响也越来越大,在武器装备领域更是如此。航空制导武器系统在软件工程化实施过程中存在的诸多问题,应尽快设法解决,促进软件工程化水平和软件产品质量快速提高。

参考文献

[1]陈勇,周珩,李金凤.提高航空制导武器系统软件质量的分析[J].航空兵器,2011(02):30-31.CHEN Yong,ZHOU Heng,LI Jinfeng.Analysis ofImproving the Quality of Softwarein Air Guided Weapons.y[J].AeroWeaponry,2011(2):30-31.(in Chinese)

[2]宋志刚,张杰.弹载嵌入式系统设计技术[J].科学技术与工程,2008(13):3554-3555.SONG Zhigang,ZHANG Re.DesignMethod for Missile-borne EmbededSystem[J].Science Techno10Gy andEngineering,2008(13):3554-3555.(inChinese)

[3] Frederick P.Brooks.Jr.人月神话[M].北京:清华大学出版社,2007:110-112.Frederick P.Brooks.Jr.The MythicalMan-Month[M].TSINGHUA UNIVERSITYPRESS,2007:110-112.

[4]Pressman,R.S.[著],郑人杰等人[译].软件工程:实践者的研究方法[M].北京:机械工业出版社,2011:296-306.Pressman,R.S.Software EngineeringA Practitioner' s Approach.Beijing:China Machine Press,2011:296-306.

[5]何雪慧.如何以软件测试推动软件工程化[J].科技经济市场,2008(03):79-80.HE Xuehui.How to use softwaretest driven software engineering[J].Science&Techno10Gy Ecnony Market,2008(03):79-80.

猜你喜欢

软件工程
基于课程群的软件工程专业三位一体教学模式探索
高职软件工程课程改革研究
软件工程应用型课程建设与实践
应用瀑布模型的MOOC制作方法
融合APTECH体系的软件产业人才培养探究
关于如何创新和完善计算机软件工程管理的探讨