李俊君 刘永亮 于德安 常海昕 杜诗睿
关键词:树状指标体系;效能评估;建模工具; 麒麟操作系统;达梦数据库
中图分类号:TP317.1 文献标识码:A
文章编号:1009-3044(2024)03-0097-03
0 引言
效能指解决方案的能力满足问题需求的状况,效能指标指判断解决方案的能力是否满足问题需求的衡量标准[1],效能评估则是基于效能指标来预计、检验武器装备实现作战任务目标的效果[2]。传统效能评估软件多从效能评估算法开发方面创新,较少对效能评估流程进行创新,李彬等设计的基于Web的效能评估仿真架构对此问题做了探索[3],但其架构前端采用的流程图设计类库Raphaeld功能简单,且最近的版本发布日期仍停留在2019年8月①,架构后端使用的spring 虽然是轻量级框架,但相对于一些其他的框架,却稍显臃肿[4]。马佳楠等[5] 将B/S(浏览器- 服务器,Browser-Server) 架构应用于航天测控领域的效能评估系统开发,实践证明通过有效设计此架构可以满足航天测控网灵活的效能评估需求。
1 架构设计
构建工具运行于银河麒麟操作系统,使用达梦8 作为存储数据库,架构分为三层, 分别是数据层、服务层以及应用层, 如图1所示。数据层主要包括效能评估指标数据, 是指标体系构建所需及产生的相关数据资源集合, 通过服务层接口向应用层提供统一数据访问和存储服务;服务层包括指标管理服务, 数据管理服务, 通过模块化机制实现了系统运行共性服务;应用层主要包括指标体系可视化构建、指标管理、数据导入导出, 是面向用户的接口, 通过用户交互界面完成树状效能评估指标构建流程。
构建工具技术栈后端选用基于Go 语言开发的Zorm和Gin,Go是Google开发的一款开源编程语言,开发环境支持Windows、macOS及基于Linux内核开发的国产操作系统[6],目前国产操作系统所支持的芯片[7-12]如鲲鹏、飞腾、RSIC-V、海光,龙芯、海思麒麟、兆芯,其指令集架构大都被Go的编译器支持(见表1) ,在中美贸易摩擦、国产芯片崛起的大背景下,更是可以作为除Java外的另一种国产CPU平台应用开发语言[13]。Zorm 就是一款使用Go 语言开发的国产轻量ORM库(Object Relationl Mapping,对象关系映射),支持众多国产数据库,包括达梦、金仓、神通、南通、TDengine,也支持市面上常见的数据库类型如:mysql、postgresql、oracle、mssql、sqlite、db2、clickhouse等②,Gin 也是Go语言开发的Web框架。具有运行速度快,对日志、权限等中间件的良好支持的优点;其路由分组功能可以让开发人员更好地管理路由。Gin非常灵活,开发过程中可以自行设计框架结构,基本结构是经典的MVC(Model-View-Controller)模型[14]。
构建工具技术栈前端基于GoJS与Vue.js框架开发,GoJS是Northwoods软件公司出品的一款基于Web 的图形组件库[15],通过可自定义的模板和布局构建交互式图表和复杂的可视化图表,它可在任何能够执行JavsScript 的环境中运行,包括主流开发框架React,Angular, Vue;跨平台桌面应用开发工具Electron;各主流浏览器及非浏览器环境Node.js,该图形库已经在GitHub上发布了232个版本,最新版本更新于2023年8 月③。Vue.js 则是一款国产的MVVM(Model-View-ViewModel) 前端开发框架,通过数据与界面层进行双向绑定,使得数据更新和界面展现能够逻辑分离[16]。
2 关键技术实现
构建工具采用B/S架构, 用户通过浏览器访问指标构建系统,前端提供面向用户的人机交互界面,实现指标管理、指标体系可视化编辑,数据通过http协议与后端Gin框架开发的API(Application Program In?terface,应用程序接口)通信实现对达梦数据库中指标体系数据的写入与读取。
2.1 指标设计
指标设计是整套系统的核心,对指标的属性进行描述如表2所示,指标在指标表中存储,用户对应不同评估需求从指标表中选择指标构建对应结构的指标体系,指标体系属性描述如表3所示,指标体系中各节点关系描述模型如表4所示,此处将指标编号与节点编号分字段记录,是希望同一个指标可以在同一指标体系中复用,延续复制-分配的方式在模型图转化过程中的应用思路[17],绑定计算模型,最终构成一套可用的指标体系,系统可用于构建树状效能指标评估体系。
2.2 指标可视化编辑
系统中的指标体系可视化编辑,选用了GoJS提供的TreeModel模型,它通过服务层提供的指标服务获得数据库中的指标数据与指标关系数据,转化成TreeModel模型使用的节点与连线数据生成可与用户交互的指标体系图,可用于对效能评估各类指标进行建模, 对指标构建提升的可视化和便捷性,满足对指标体系进行动态建模, 例如对某仿真系统中火力毁伤效能的指标体系构建结果如图2所示。该模块主要功能包括以下几点:
1) 体系分类, 实现对指标体系的分类建模功能。
2) 动态建模, 实现对指标体系的动态可视化分解与图元化建模功能。
3) 关系建模, 实现对指标间的关联关系进行建模。
4) 模型保存, 实现对指标体系的保存及数据导出。
2.3 指标体系数据导出
树状指标体系构建完成后,可以通过服务层的数据导出服务将数据库中存储的指标体系数据输出各类格式的数据,这个功能的设计依赖于Go提供的结构体标签功能,它可以在服务层通过Go定义的结构体数据添加元数据信息来生成多种格式的数据,包括json、xml、yaml,图2中火力毁伤效能指标体系节点数据信息如表5所示,而图3是将节点数据以json格式导出的效果。
2.4 指标体系数据导入合法性检测
對于已有的指标体系结构,也可以通过构造符合指标关系描述模型的数据通过服务层的导入服务将数据导入到指标体系中,对于导入数据的检测算法包括根节点唯一性检测、父节点唯一性检测、环状结构检测,所用伪算法如下所示:
输入:数组,指标体系节点关系数据 nodeArr。
输出:布尔值, 指标体系数据是否能够合法导入。
rootArr = nodeArr. filter(node => node. parent == 空)// 筛选根节点
if (rootArr.length != 1) return false // 根节点唯一性检测
foreach (item in nodeArr)
parentArr = nodeArr. filter(node => node. key ==item.parent) // 取得父节点
if (parentArr.length != 1) return false // 只能有一个父节点
linkArr = getChildrenRecursive(item) // 递归取得路径上子孙节点
linkUniArr = unique(linkArr) // 路径数组去重
if linkUniArr.length != linkArr.length return false // 路径有环
endforeach
3 结束语
针对树状效能评估指标体系建模问题, 设计了一种可在银河麒麟操作系统下运行的效能评估指标体系建模工具,选用的架构方案和技术选型理论上可在多种国产CPU平台上迁移实现,但限于现有软硬件使用场景这一点有待后续验证, 目前已经完成了原型系统开发并应用于某仿真系统的效能评估模块。通过实际使用表明,基于此工具构建的树状效能评估体系, 可满足不同应用效能评估需求的快速响应,提高了效能评估指标体系构建的通用性、扩展性,为后续在效能评估模块中集成评估算法模型提供了数据支撑。
【通联编辑:梁书】