实现软件产品化的研究与实践

/ 2

实现软件产品化的研究与实践

夏宁,高家祺,权昕,赵彦荣,马鑫

兰州空间技术物理研究所,甘肃 兰州 730000

摘要:

随着信息技术的不断发展,关键技术和核心算法是一个企业立足与发展的根本,如何合理复用使其发挥更大的效用才是行之有效的方法。软件复用是解决软件危机、提高软件生产率和质量的有效方法,构件是实现软件复用的最主要的途径。

本文首先介绍了软件研制的现状,分析归纳出存在的问题,对内外部形势和差距进行分析,提出了软件产品化的需求,并对实现思路进行了梳理,明确了基于可复用产品、架构和构架设计,逐步实现软件复用。

关键词:软件复用、产品化、复用库、架构、构件


引言

软件复用是指重复使用“为了复用目的而设计的软件”的过程。相应地,可复用软件是指为了复用目的而设计的软件。软件复用能大大提高生产率,降低开发成本,缩减维护费用,其次在反复复用的过程中,许多BUG已被发现且解决,软件质量大大提高。

  1. 内外部形势分析

客户需求在应用领域、需求宽度、需求深度、变化频次上发生了持续性的变化。要求软件实现的功能增加了,业务过程复杂了,使用时间增长了,进一步导致需求变化的频率提高。在我所科研生产模式转型的大背景下,软件开发模式更需要从“作坊式”和“单打独斗式”的研发中跳出来,转向规范化与规模化生产。

  1. 当前存在的问题

软件的需求更动频繁,开发周期较长,用户不断更改通讯协议和显示要求,再加上人机工效学评价、分系统联试等方面的需求变化和要求,再加上设计文档更新、回归测试等,工作量巨大,研制工作持续近五年之久,导致开发成本巨大。

软件沿用复用率相对较低,嵌入式软件产品,要求与硬件、单机、甚至系统的匹配度相当高,而这类测试验证工作往往需要比软件开发更久的时间、更多的人力和资源。大量复用率较低的新研软件占用了大多数软件开发的资源和时间,却引入较多的质量问题。

  1. 软件产品化需求分析

目前我所软件管理是在GJB5000A基础上结合我所实际形成的,包括项目管理监控、质量保证、配置管理、风险控制等方面的内容,可为现有软件开发研制提供保障,但其基本思想是基于项目的管理方式,即针对不同的客户与需求,建立项目组,获取和开发用户需求,进行项目策划,实施项目监控,同时通过质量保证和配置管理、测量分析等一系列过程保证项目正常运行。

  1. 采取的方法

锁定“双一流”奋斗目标,筑牢“高质量、高效率、高效益”的发展基础,围绕嵌入式软件/FPGA关键技术和算法,紧密结合航天器软件高性能、高可靠性、高安全性特点,认真贯彻我所“创新驱动”和“全员创新”的工作要求,开展先进应用技术研究,提升研制队伍专业化能力,全面推动我所软件研制模型转型升级。

  1. 建设复用库

建立一个良好的软件复用库,是实现有价值的软件复用和产品化的必要条件。软件复用库包括“三库”,即“构件库”、“架构库”和“产品库”,而软件产品化开发模式,其工作重点在于复用库的建设、开发模式的转变,以及与之相适应的配套支持系统的完善。

复用库的建设应是系统的、多维度的迭代和增量过程。通过复用策划开展复用建设,通过复用需求审查开展复用模块开发,通过复用模块应用开展复用模块推广。梳理常用需求,进行飞行验证或建立模块试用机制,逐步进行推广应用。

    1. 软件构件库

软件构件是指应用系统中可以明确辨别的构成成分,包括源代码、需求规格说明、设计说明、测试用例和数据以及其他对开发活动有用的信息。一般指软件提供的一组规约化接口的、符合一定标准的、可替换的软件系统的程序模块。

从目前我所软件开发情况来看,在新项目的开发过程中逐步使用了包括1553B总线驱动模块、1553B总线通讯应用模块、CAN总线通讯模块、步进电机驱动模块、AD数据采集模块等等构件来支持开发活动。

    1. 软件架构库

软件架构包含了关于软件系统的重要决策,这些决策涉及到如何将软件系统分解成不同的部分、各部分之间的静态结构关系和动态交互关系,软件架构也包含了关于各部分应如何交互彼此相关的信息。

基于目前我所软件的历史积累和研制需求,我们选择了在七种平台下进行架构复用库的完善与丰富,分别为80C51应用平台架构、DSP VC33应用平台架构、DSP 6415应用平台架构、BM3803应用平台架构、FPGA架构平台架构、通用软件应用平台架构、移动软件应用平台架构。

    1. 软件产品库

根据软件系统需求的通用性特征,利用一系列单机产品应用软件间存在的诸多共性,使用相同生产工序,由一组共享资产来创建相似的产品系列,通过成熟平台实现软件的复用和扩展,完成现软件产品个性化、定制化的低成本快速生产,就产生了软件产品。

我所现有不少成熟单机产品,该类产品的软件只需要修改部分参数或少数功能就可以满足硬件产品需求,甚至少部分软件可以完全沿用。梳理整合该类型的软件并纳入复用产品库中,可极大地减少重复工作量,提高生产率。

  1. 转变开发模式

    1. 设置基于复用开发的组织结构

  • 构件开发者,构件或架构的开发与适应性修改。

  • 项目部署者,针对某具体项目将已有构件组合成更大的构件或部件,作为项目的基本部件,将项目基本部件放入选定的平台架构中,完成软件定制的要求。

  • 平台服务器供应商,提供服务器、操作系统和数据库等基本软件,提供开发工具、开发环境等公共设施服务。

    1. 完善支持快速解决方案的开发方法和实现手段

通常的软件开发方法由以下几个步骤:需求获取、需求分析、结构设计、详细设计、代码实现、测试和维护。基于软件复用架构设计过程如下图所示:

选取构件

分析

分析

设计

60dd346638b6e_html_a40429f23b6972b1.gif

单元测试

60dd346638b6e_html_a40429f23b6972b1.gif60dd346638b6e_html_a40429f23b6972b1.gif60dd346638b6e_html_a40429f23b6972b1.gif

构件合成



60dd346638b6e_html_c37e16589d999e9b.gif

集成测试


60dd346638b6e_html_164e68daa32eb5cf.gif60dd346638b6e_html_a40429f23b6972b1.gif

实现

面向构件设计



60dd346638b6e_html_164e68daa32eb5cf.gif60dd346638b6e_html_10a90faaf9d6e5cb.gif

系统测试

系统测试


60dd346638b6e_html_777c06cb049328f9.gif

集成测试




    1. 测试活动的优化

  • 提高测试用例的复用程度。在设计测试用例时通过配置输入参数、输出结果检查等方式,使得用例只需修改个别参数或设置就可以直接复用;

  • 加强仿真测试手段。复用软件的硬件平台往往非常相似,这类产品的仿真测试平台可重复使用。大力推广仿真测试平台的使用,减少了软件在测试时对硬件的伊奈,节省了工作时间,也节约了成本;

  • 提高软件健壮性测试水平。软件在复用过程中较为注重功能的实现,但在适应性修改或迭代的过程中往往容易忽视健壮性的提升,而加强健壮性测试可以弥补这一缺陷,使得软件质量进一步提升.


  1. 完善配套支持系统

    1. 完善软件管理流程。

确保每次对软件产品的使用和迭代升级均在规范要求下进行,并且具有完整、一致的数据包可供后续项目查阅和借鉴。

    1. 完善现有的复用规则。

对我所软件复用库的入库和复用规则进行优化完善,鼓励成熟构件、构架和产品纳入复用库,鼓励使用复用库资源,并将其纳入项目实施的检查内容。使得我所复用库内容可以覆盖绝大多数平台、绝大多数专业和绝大多数现有应用技术。

结束语

依据“选用成熟软件、FPGA架构,提高产品研制效率”的工作思路,我所持续开展基于面向对象嵌入式软件需求分析、设计的方法进行软件架构设计研究,针对FPGA开展适用于BM3803的外设内总线架构和适用于80C32的外设内总线架构,不断推进软件产品化进程。

[参考文献]

[1]五院宇航型号软件研制工作规定.第六号令.中国航天科技集团公司第五研究院,2017

[2]陈佳园. 在软件项目管理中实现产品化问题的研究.东南大学,2011

[3]冯毅.软件产品化工程方法研究.华中科技大学,2006

[4]李理.以客户需求为导向的产品化软件管理研究.复旦大学,2009

[5]杨芙清.以软件复用与软件构件技术.电子学报,1999


作者简介:

夏宁,兰州空间技术物理研究所质量技术处主管,长期从事软件体系管理工作。

地址:甘肃省兰州市飞雁街100号

邮编:730000

联系电话:13993180415

邮箱:124982327@qq.com

4