APP下载

嵌入式软件界面自动生成方法

2022-03-09赵昶宇胡平

科技与创新 2022年4期
关键词:嵌入式软件配置文件控件

赵昶宇,胡平

(1.天津津航计算技术研究所,天津 300308;2.海军工程大学舰船与海洋学院,湖北 武汉 430033)

简洁友好的用户界面是嵌入式系统的重要功能组成,通过用户界面接收系统输入的数据,并显示软件处理的结果。随着嵌入式系统复杂性的不断提高,对系统人机交互界面提出了越来越高的要求。一般来讲,嵌入式软件系统中的人机界面设计占据大约50%的代码量,软件系统的执行时间有近50%的时间在执行人机界面。从某种程度上说,人机界面设计已成为嵌入式软件系统开发中最耗时、最困难的技术之一。传统的人机界面的设计方法存在较多缺陷:①由于界面开发和程序设计语言、开发平台之间存在紧耦合性,同样的软件功能使用不同的程序设计语言、在不同的平台下运行,软件开发的代码量存在不小的差异和改动;②如果界面的控件元素较多,仅对这些控件元素进行布局和生成就会耗费大量的时间和精力,且后期一个小小的改动都会使人机界面的维护工作量巨大。

如何花费最少的人力财力,并且在最短的时间内开发出满足用户不断变化需求的能够独立于各种界面设计工具的图形化人机界面,已经成为嵌入式软件系统需要亟待解决的问题。为了解决和改进当前嵌入式软件系统人机界面设计存在的代码灵活性、可移植性和维护性差以及耗时耗力等问题,很有必要开发设计一种基于界面控件自动生成和布局的通用模式。传统的界面开发工具在界面设计和功能代码之间仍然存在着必要的耦合关系,本文为实现嵌入式软件界面的可配置管理和自动生成,提出一种基于XML 技术的界面生成和管理方法,利用XML 构建界面配置文件和界面元素,根据用户需求自动生成嵌入式软件界面。

1 基于XML 的界面管理和生成技术

可扩展标记语言XML ( Extensible Markup Language)是一种面向Internet 应用的可跨平台的、依赖于内容的通用语言规范,它是处理分布式结构信息的有效工具,学术界将其作为未来网络发展的技术基石。

XML 语言是一种纯文本的文件格式,XML 文档由XML 元素构成,包括开始标签、结束标签以及2个标签之间的元素内容。XML 中可以实现元素中再嵌套别的元素,XML 文档的对象还包括处理指令、根元素、子元素、属性以及注释。虽然XML 文档占用的存储空间比二进制文档要多,但是由于XML 语言通常采用简单的标记用来描述数据,使其可以在任何应用程序中方便地进行数据存储和传输,它已经成为目前进行数据交换的唯一公共语言。XML 语言的这种简单的结构特性使其可以与各种操作系统下生成的数据进行结合,通过加载并分析XML 数据文件,输出XML 格式的结果[1]。

在XML 文档中,用户不可随意定义标记,必须按照特定的语法规则,并根据需要来定义标记。在XML文档中按照语法规则编写的文档结构必须是完整的,这样才能保证XML 处理器或者浏览器能够正确读取并解析文档的内容。XML 文档的基本规则包括以下几点:①文档必须以XML 声明,所有标记必须配对,不能省去任何结束标记,且XML 文档必须包含在一个单一元素中;②XML 元素是XML 文档中出现的标签,一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套;③XML 文档的属性必须有值,且值必须用引号括起来,元素中的属性不允许重复;④处理指令是为XML 解析器提供信息,使其能够正确解析元素内容,它是为使用一段特殊代码而设计的标记;⑤XML 文档中有且只有一个根元素,其他元素都是该根元素的子元素或孙元素,XML 元素是对大小写敏感的;⑥对于XML 元素中出现的所有空格和换行,XML 解析程序都会当作元素内容进行处理。

基于XML 语言的嵌入式软件界面描述文件,不仅需要考虑到利用其能够自动生成软件界面的特点,还需要关注界面元素易于修改和维护的情形。通常来讲,嵌入式软件的界面描述文件一般包含以下内容:①定义软件界面的框架结构;②定义和描述字段的属性信息;③描述界面元素(各种控件)的上下文内容;④描述界面元素的嵌套层次关系。

嵌入式软件人机界面上的控件类型一般分为通用容器类控件和基本类型控件,通用容器类控件一般包括选项卡面板、滚动面板和分割式面板,基本类控件包括按钮类、静态文本类、文本编辑框类、组合框、列表框、单选框以及复选框等。通用容器类控件的XML 描述见表1,基本类型控件的XML 描述见表2。

表1 通用容器类控件的XML 描述

表2 基本类型控件的XML 描述

2 嵌入式软件界面自动生成模型的建立

为实现软件界面设计和任务功能设计的分离,提出一种基于XML 的界面动态生成技术。该方法利用XML 描述用户界面并进行持久存储,通过读取并解析XML 配置文件的表示层信息,在运行时生成界面元素,使系统每次启动时都按XML 配置文件提供的信息来显示界面,无需重新编译和连接,实现了任意交互界面的动态创建,为最终用户提供了灵活的界面维护修改功能。嵌入式软件的界面自动生成模型共分为3层设计:界面表示层、逻辑处理层和数据存储层。自动生成模型见图1[2]。

图1 嵌入式软件界面自动生成模型

界面表示层位于自动生成模型的最上层,主要完成将界面控件对象描述信息(控件对象的属性值)存储到XML 文件中,并通过XML API 解析软件界面配置文件信息。逻辑处理层位于自动生成模型的中间位置,它是软件界面自动生成的核心层,用于完成和界面表示层、数据存储层的交互工作。它不仅可以获取软件界面控件对象的具体描述信息,还能获取界面自动生成时依赖的界面元素数据。

数据存储层位于自动生成模型的最下层,它用于存储界面元素数据信息,主要包括界面控件的相关信息、字段类型和约束条件等内容。通过访问数据库接口,完成数据存储层和逻辑处理层的数据信息交互。

虽然界面表示层、逻辑处理层和数据存储层在逻辑结构上是相互独立的,但它们之间又存在着数据交互。该嵌入式软件界面自动生成模型将界面控件对象的描述信息与代码实现分离,利用XML 文档技术实现了从界面随意配置到界面的自动生成[3]。该模型具有以下几个特点:①由于XML 技术不仅支持多种开发工具,而且具有与使用语言无关的特性,软件设计人员只需关注界面控件对象的描述信息和描述方式,无需考虑开发工具的差异性,极大地提高了界面控件设计的通用性;②当用户对嵌入式软件界面的使用需求发生改变时,无需修改程序代码,只需根据用户需求修改界面定制配置文件即可。该模型不仅满足用户不断变化的需求,还支持用户跨平台执行界面程序,具有良好的可扩展性;③通过界面表示层、逻辑处理层和数据存储层实现了软件界面的外在形式、界面元素信息和界面数据逻辑处理的层次化模型的建立,并在软件界面运行时可通过动态修改资源配置文件的方式实现界面的多样化显示。

3 嵌入式软件界面自动生成流程和算法

嵌入式软件的界面自动生成技术由XML 文档(存储界面描述信息)、界面管理组件、界面生成组件、界面定制工具和编程语言组件库等组成。首先通过解析XML 文档,获取界面描述对象的具体信息,然后通过调用编程语言组件库完成组件的构建工作,并为相关组件设置事件监听类,最终实现了用户界面的自动生成。

嵌入式软件界面管理组件根据界面配置文件中相关文件路径以及对应的界面信息,获取到界面描述对象,并创建当前界面配置信息,同时界面配置组件将界面描述对象信息返回给界面管理组件;如果用户曾经定制过界面,则界面管理组件通过调用定制后的界面配置信息,创建定制后的界面描述对象,然后由界面定制组件将定制后的界面描述对象返回给界面管理组件;界面管理组件通过递归调用界面动态生成组件,获取界面上所有的表示信息,完成了最终的页面样式;最后界面管理组件完成了动态生成界面的加载,并在界面上显示出来。嵌入式软件界面动态生成的UML时序图见图2。

图2 嵌入式软件界面自动生成时序图

嵌入式软件界面的自动生成算法步骤如下。

步骤1:采用XML Schema 工具验证界面配置文件的内容合法性,若内容合法,利用XML API 解析配置文件内容,生成对应的内存数据,执行步骤2;若内容不合法,算法结束。

步骤2:通过XML API 将步骤1 生成的内存数据翻译成格式化文本,完成界面配置文件的更新操作,然后通过数据存取类接口读写数据存储层中的界面数据信息,并存储在自定义数据结构中。

步骤3:加载上述2 步获取的数据信息,循环生成界面元素,若生成界面元素结束,则转向步骤7,否则继续执行步骤4。

步骤4:通过遍历所有类型的控件节点,检查该控件节点是否存在,若存在,则根据用户的不同操作得到控件的主键值,通过XML 配置文件读取界面表示层信息,执行步骤5;若不存在,执行步骤6。

步骤5:加载每个控件节点的属性数据,判断每个控件节点下是否存在相应的事件节点,若存在,则判断该事件类型,并加载该节点相应事件,执行步骤6;若不存在,执行步骤7。

步骤6:自动生成软件界面并显示所有控件。

步骤7:判断界面配置文件是否读取结束,若到达文件尾,则算法结束,否则,转向步骤3。

4 结束语

本文提出了一种嵌入式软件界面的自动生成方法,建立了相应模型,并阐述了该方法的技术实现原理。该方法一方面极大降低了软件开发人员的工作量,更重要的是使得界面生成代码具有良好的可移植性和可维护性,大大提高了软件代码的重用率和代码稳定性。

猜你喜欢

嵌入式软件配置文件控件
掌握颜色查找表的魔力
使用“填表单”微信小程序 统计信息很方便
从Windows 10中删除所有网络配置文件
基于.net的用户定义验证控件的应用分析
用软件处理Windows沙盒配置文件
互不干涉混用Chromium Edge
浅析嵌入式软件技术的现状与发展动向
基于模型检查的嵌入式软件构件化分析与验证
嵌入式软件在计算机软件开发过程中的运用
利用VF6.0的Timer控件实现动画效果