APP下载

基于整体一致性的跨平台指标体系构建系统设计与实现

2021-11-15贺伟雄汪颖黄晓夏

现代计算机 2021年27期
关键词:跨平台一致性组件

贺伟雄,汪颖,黄晓夏

(武警部队研究院,北京 100012)

0 引言

指标作为一种可持续的评估工具,通过将复杂数据总结和浓缩为有意义的信息,可以方便地跟踪一个时间段的进展情况,并能帮助用户发现可能存在的问题和关联因素[1]。指标广泛用于各类研究报告,以确定政策方向并回应公众关切[2]。由于单一指标只能反映研究对象某方面的情况,难以捕捉多维现象,因此指标体系的使用频率越来越高[3]。一般来说,指标体系是汇聚各维度的指标并基于特定公式进行构建,因此能够更好地总结复杂现象,著名的指标体系包括联合国可持续发展目标[4]和千年生态系统评估报告[5]等。

在构建指标体系的过程中,指标项通常分为若干个层级,上层指标项依赖多个下层指标项,而下层指标项还需要通过数据项计算得到结果,指标项和数据项之间复杂的依赖关系,使得每一次修改都会引起指标联动,使得改动成本迅速增加。为了全面评价社会经济体的建设发展水平,需要构建数以千计的指标,极大地推高了构建与修改成本。因此,在构建大规模指标体系的过程中,如何使用软件自动化方法让指标自动联动,从而保证指标体系的一致性,是亟待解决的难题。目前学者们对指标体系的研究重点主要集中在如何构建某一领域的指标体系,例如网络舆情指标体系[6]、指挥信息系统指标体系[7]、城市生态文明建设指标体系[8]等,但很少涉及到指标体系的一致性问题。

针对以上问题,本文在分析指标体系通用结构的基础上,从数据关系一致性和文本语义一致性两方面提出指标体系整体一致性的概念。为构建实用的指标构建系统,分析系统功能需求,比较常用的跨平台技术,设计系统框架和数据库结构,并采用Electron和React.js结合实现跨平台指标体系构建系统的各个功能模块。

1 指标体系整体一致性定义

指标体系通常包括指标项和数据项两部分[9]。指标项由名称、释义、算法和所需数据等构成,数据则由数据项名称、来源、量纲、取值范围等构成。指标根据所处层级的不同分为一级指标、二级指标等,上层指标项依赖于下层指标项,所有的指标项都包含若干数据项,各组成部分的关系如图1所示,图中箭头表示依赖关系。

图1 指标体系结构图

在构建指标体系的过程中,为保证体系的科学性、可测性、导向性[6],需要经常修改指标项和数据项。例如,数据项如果难以获取,则需要删除该数据项。如此一来,所有使用该数据项的指标均不可用,并且所有依赖这些指标项的上级指标也要进行修改,以保证依赖的正确性。为了构建科学完备的指标体系,将指标体系“整体一致性”定义为:指标体系中所有指标项之间,以及指标项与数据项之间正确的依赖关系。

定义中所指的依赖关系包含两层意思:①数据关系一致性约束,即所有使用到的指标和数据必须都存在,不能存在已删除的数据项还被某一指标项使用的情况,并且同一指标和数据项在指标体系显示和使用时,它的名称、含义、计量单位等属性必须一致。②文本语义一致性约束,即所有指标和数据项修改前和修改后的含义要基本一致。因为如果含义完全改变,那么所有依赖这些项目的指标也会变得不可靠。

2 指标体系构建系统需求分析

2.1 功能性需求

指标体系构建系统需要完成的主要功能有两项,分别是数据项和指标项功能。

(1)数据项功能。主要完成数据的“CRUD”(Create/Retrieve/Update/Delete,即创建、读取、修改、删除),删除时激活数据关系一致性约束,修改时激活文本语义一致性约束。

(2)指标项功能。主要进行指标的“CRUD”,与数据项类似,删除和修改指标时都会激活一致性检查。由于指标体系设计完毕后,最终还要形成文档进行展示,因此指标项功能需要以Word的形式导出为指标文档。

2.2 非功能性需求

功能性需求只是系统的一部分。设计和实现系统时,还需要考虑用户体验、平台兼容性等非功能性需求。

(1)良好的用户体验。在设计用户界面时,需要把握最基本的“对齐”和“对比”原则。在此基础上,各界面组件的距离按照“亲密性”原则进行把握,即如果信息之间关联性越高,它们之间的距离就应该越接近,也越像一个视觉单元。同时,相似的功能尽量采用相同的元素、颜色、格式进行实现,以减少用户的学习成本[10]。

(2)跨平台兼容性。就目前桌面系统情况来看,微软的Windows受众最广,而国产操作系统都是基于Linux系统进行开发。考虑到很多指标体系的构建事关国民经济情况,在国产操作系统中使用的可能性很大,因此软件需要具备跨平台功能。

3 指标体系构建系统设计

3.1 技术选型

从需求分析可知,客户端软件需要跨平台运行。目前常用的跨平台软件方案主要有Qt框架(C++语言),Swing(Java语言)和Electron框架(Ja⁃vaScript语言)。比较而言,Qt框架生成的界面和业务逻辑耦合度太强,维护成本高;Swing原生的用户界面(user interface,UI)控件十分有限,难以开发用户友好的软件,而Electron采用HTML和CSS构建用户界面,可以与React.js等前端框架结合,实现用户界面和业务逻辑的分离,方便后期维护。考虑到指标体系构建系统的业务逻辑并不复杂,但其交互界面繁复、各类图表需动态生成,对前端展现要求很高。基于以上考虑,选用Electron和React.js技术相结合进行开发。

3.2 系统框架设计

系统的整体结构如图2所示,共分为视图UI层,业务逻辑层和数据持久化层。其中视图UI层使用前端框架React.js,该层运行在Electron内置的Chrome浏览器中;业务逻辑层则使用Node.js编写,负责转发页面请求,视图层和业务层封装成React.js组件(Component)进行通信;数据持久化层采用JavaScript实现的NeDB数据库,该数据库利用异步功能实现非阻塞式数据访问。在此基础上,系统还有三项通用模块,分别是一致性检查模块、文本相似度计算模块和指标文档导出模块,为所有业务提供支持。

图2 指标体系构建系统整体框架

3.3 数据库设计

由需求分析可知,系统核心功能主要是指标项和数据项,因此各需要一张数据表存储相关数据。由于指标项与数据项是多对多的关系,为了进行关联,还需要单独设计一张关联表。因此,核心数据表主要包括指标项表、数据项表和指标数据关系表。核心数据表之间的关联关系如图3所示。

图3 数据库实体联系图

4 指标体系构建系统实现

4.1 指标项功能实现

指标项和数据项实现的功能类似,都以CRUD为主。由于指标项属性较多,这里主要以指标项功能为例进行探讨。在设计UI时,首先实现下层组件,包括指标控制栏组件IndicatorCon⁃trol,数据表格组件IndicatorTable和指标表单组件IndicatorForm,每个组件都继承React.Component类,以支持JSX语法。JSX是一种JavaScript的语法扩展,与传统的JavaScript相比,它的语法简单,与HTML类似,更适合编写UI界面。下层组件完成后利用顶层的Indicator组件将所有组件进行组合,形成整个指标项页面,指标页面的JSX结构如代码段1所示。

代码段1指标页面的JSX结构

从代码段1中可以看出,通过JSX,可以把回调函数利用组件属性进行传递,例如re⁃freshTable就是一个刷新页面的回调函数。通过绑定回调函数,有利于反转控制逻辑,将所有的信息流汇集到Indicator组件统一进行控制,方便维护与扩展。

保存数据时,由于NeDB采用的是回调函数进行非阻塞式调用,为了避免进入“回调地狱”[11],将其包装为Promise实现,即返回值为Promise对象,该对象由resolve和reject两个回调函数构成,如果数据库查找操作时出现错误,则调用reject,反之则调用resolve。利用Async/Await关键字可以近似于同步方式使用数据库功能,提高代码质量。最终实现的页面样式如图4所示。

图4 指标项页面样式

4.2 文本相似度模块实现

文本相似度主要依据“词袋模型”[12]进行计算,主要依据不同文本中出现相同词的数量来计算相似度,相似度定义为:

其中,A和B分别代表需要计算相似度的文本分词以后的词语集合,size(∙)运算符代表计算集合大小,simA,B代表A和B的相似度。例如,考虑下面两个文本:

指标1:公众号是否开通支付功能

指标2:移动支付总笔数

分词之后,指标1的词语集合为{公众,号,是否,开通,支付,功能},size为6;指标2的词语集合为{移动,支付,总,笔,数},size为5。两者的交集为{支付},size为1,根据公式1可以计算相似度为0.19。

从文本相似度的定义可以看出,相似度计算核心功能在于文本分词。目前,Node.js提供了开源的中文分词模块node-segment,经过分词之后的文本可利用公式1计算相似度。系统在实现时,将其包装为TextUtil工具类以方便使用,并且采用单例设计模式以提高多次调用的性能。

4.3 一致性检查模块实现

系统采用“事件”驱动模式,用户在修改或删除指标数据项时会触发“一致性”检查。删除时,会查找所有依赖项,因为数据库中所有的依赖关系均存储在IndicatorRelation表中,因此只需要在该表中搜索相应所需数据Id,如果存在搜索结果,证明还有依赖,则不允许删除。修改时,需要调用文本相似度检查模块,如果相似度小于某个阈值,则提示与原有项目不一致,建议进行新增。

4.4 文档导出模块实现

指标体系构建完成后,需要将设计好的指标体系形成文档以方便说明和展示。系统主要实现了根据已有Word模板生成对应的指标文档,生成原理是高版本Word软件使用的.docx文件,其本质是一个zip格式的压缩包,文档内容和格式在压缩包中使用xml文件进行存储。因此,在已有.docx文件模板的基础上,只需要解析其中的XML文件并替换内部的文字即可形成所需要的文档。

5 结语

本文重点探讨了基于整体一致性的跨平台指标体系构建系统的设计与实现。根据对指标体系通用结构的分析,从数据关系和文本语义两方面定义了指标体系整体一致性概念。在此基础上,分析了指标体系构建系统需求,从技术选型、框架设计和数据库设计三个方面进行了详细设计,最后实现了系统功能,主要包括指标项功能和文本相似度、一致性检查和文档导出模块。从最终效果来看,无论是新增、修改还是删除,均能有效地保证体系的整体一致性,并通过可视化方法帮助研究人员更好地开发大规模指标体系。

猜你喜欢

跨平台一致性组件
商用车企业的3C零部件一致性管控新模式
Android系统上移动组件化应用框架设计
离散异构线性多智能体系统的输出一致性
商用车CCC认证一致性控制计划应用
一款游戏怎么挣到全平台的钱?
创建Vue组件npm包实战分析
智能机械臂
舰载雷达TR组件冲击计算方法分析
潜力双跨平台:进阶:谁将跨入下一个“十大”?
基于Paxos的分布式一致性算法的实现与优化