单文金 张 政 卞德志 胡昌平 胡翔宇
1(中国船舶集团有限公司第七一六研究所 江苏 连云港 222006) 2(中船重工信息科技有限公司 江苏 连云港 222006) 3(哈尔滨工程大学 黑龙江 哈尔滨 150001)
当前,《中国制造2025》已上升为国家战略,是建设中国为制造强国的三个十年战略中第一个十年的行动纲领[1]。船舶工业是《中国制造2025》中提出的十个重点行业之一,但是我国船舶领域企业信息化建设水平整体偏低,企业信息化建设需求急迫。在软件规模不断扩大、软件复杂性不断提高的信息化建设需求下,如何在提高软件质量的同时,缩短软件建设周期,保证软件稳定性、维护性、可拓展性成为一个急需解决的难题。要解决这个难题,信息化建设企业必须具备快速支撑软件上线实施的能力。企业在快速软件建设时通常会面临以下几个问题:
1) 软件开发周期短,稳定性需求高:随着当前信息化建设环境存在更高的需求急迫性,对于软件的交付周期、软件的稳定性有着更高的期望。
2) 技术人员水平要求高:基于交付快速化、业务复杂化、性能稳定化等需求,对于开发人员的技术水平能力要求不断拔高。
3) 开发性价比低,大量的代码重复建设造成了资源浪费:在实际的软件开发中,在页面端,存在大量的类似页面,页面布局和处理逻辑比较固定[2]。在服务端,基于面向对象的开发模式,每个对象的基础服务代码运行模式一致,从而带来大量的重复代码开发。
由此,行业内需要一种可以快速可视化完成开发软件的平台来解决上述问题。目前市面上软件可视化开发平台大多专注于页面设计,缺少页面对应服务的设计构建,从而无法实现软件页面、服务整体结构的开发。国外此类平台主要代表作品有微软的PowerApps[3],是一种基于主题的轻业务应用构建工具,PowerApps提供的功能虽然强大,但是在使用中会出现以下几个问题:(1) 对微软家族产品依赖性强,需要Office 365产品组件的支持。(2) 服务端由微软云提供,如果自己搭建服务端,价格昂贵。(3) 软件客户端运行环境在Office下,平台移植性差。国内此类平台主要代表作品有起步科技的牛道云,是一套基于云服务器的在线开发平台。牛道云提供在线模板库依赖引入开发,在制作网站、移动App方面具有较强的优势,但在企业软件开发方面具有以下几个缺点:(1) 侧重于互联网应用场景开发,偏移动App设计风格。(2) 平台价格授权按软件收费,成本会很高。(3) 业务场景比较固定,拓展性弱,无法适应船舶领域内定制化需求。
针对当前船舶领域信息化建设需求急迫、软件体量小而数量多的特殊性,市面常见的开发平台所依赖的底层技术和支持的场景并不适用于船舶领域的信息化软件快速构建的特殊性需求。基于此,本文提出一种软件可视化快速开发平台,该平台在船舶行业内具有创先性。通过该平台开发人员可以在线进行软件的整体的构建,以业务模型为构建基础,进而进行整体软件的在线开发,可以极大缩减代码甚至可以实现无代码构建完整的应用软件,缩短软件开发周期,降低软件开发门槛。并且已构建的软件创建的业务模型可以导入平台模型库,在其他软件构建时可以进行复用,避免重复的模型建设,提高软件开发效率。
软件可视化快速开发平台是一种基于页面可视化配置引擎式快速构建软件的平台,其总体架构如图1所示。自定义组件库是平台的基础,对象模型设计器、接口设计器、页面设计器、执行引擎是平台的核心组件,基于设计器完成模型、接口、页面的设计,通过运行执行引擎完成模型解析、服务构建、建表更新表、页面编译等操作。
1) 自定义组件库:自定义组件库提供大量开包即用的封装组件以及设计器、引擎的底层实现,是平台实现快速开发的基础。
2) 对象模型设计器:提供开发人员可视化方式实现构建对象模型,对象模型是接口设计、页面设计的信息来源,是构建服务、表的基础。
3) 接口设计器:提供开发人员可视化方式实现开发接口,通过设计器配置工具进行接口信息、接口输入输出格式维护,并提供接口文档在线生成查看的功能。
4) 页面设计器:提供开发人员可视化完成页面设计,设计器可以通过配置方式进行页面布局,拖拽方式进行控件添加,并提供即时预览页面的功能。
5) 执行引擎:编译页面设计器设计页面,生成可供直接修改使用的页面元素文件。解析对象模型结构,构建对象模块服务与数据库表。
可以看出,自定义组件库为设计器和执行引擎的运行提供了下层的支撑。对象模型设计器提供对象模型在线设计并最终生成对象模型,对象模型是后续接口设计、页面设计的元数据。接口设计器基于对象模型通过可视化配置形式生成接口,接口是页面和服务端进行通信的通道。页面设计器基于之前设计的对象模型、接口进行页面可视化设计,配置表单字段与对象模型的映射,表单事件与接口的映射,以此来达到页面功能的实现。
开发人员通过设计页面进行可视化对象模型设计,定义模型描述、模型字段、模型字段定义信息,生成模型元数据,运行执行引擎将模型元数据构建为对象模型。执行平台自定义组件模型数据库转换器[4]将对象模型装换为多数据库识别的数据库执行语句,执行代码生成器组件可以依托对象模型生成对象服务代码。对象模型设计器架构如图2所示。
1) 模型元数据:模型设计信息的信息对象,按层级存放整个模型属性信息。
2) 对象模型:业务对象的完整信息集合,是数据库表和对象服务的生成基准,也是接口设计、页面设计的基础元素。
3) 模型数据库转换器:平台自定义组件,封装了模型数据库转换的处理逻辑,可以将对象模型转换成数据库执行语句,支持包括Oracle、MySQL、达梦、MSSQL等14种数据库。
4) 代码生成器:平台自定义组件,封装了代码生成逻辑,以对象模型为原型,生成对象基础服务代码。
对象模型设计器页面如图3所示。顶部是软件选择框、数据库更新文件生成按钮、服务端代码生成按钮。中间左侧是对象模型设计定义,中间右侧是对象模型属性设计定义。开发者可以在线进行模型及模型属性定义,模型设计完毕后,可以依托模型生成数据库更新文件和服务端代码。
开发人员通过设计页面进行可视化接口设计,引入对象模型,定义接口信息,配置接口输入输出参数,最终生成接口[5]。文档生成器通过接口的定义及配置生成接口说明文档[6]。接口设计器的设计架构如图4所示。
1) 对象服务:基于对象模型生成的后端服务,提供对象模型结构数据查询、保存、更新、删除服务。
2) 文档生成器:基于设计后接口定义及配置信息,文档生成器可以生成接口说明文档并提供在线接口文档的查阅及接口测试。
接口设计器页面如图5所示。顶部是软件选择框、接口文档生成按钮。中间左侧是接口设计定义,右侧是接口输入、输出参数配置页面。开发人员在线进行新建、选择对象模型,配置输入、输出参数即可完成接口的开发,依托生成的接口,可以生成接口文档。
页面设计器是页面可视化设计工具,开发人员可以在线页面布局[7],通过拖拽控件的方式就能满足页面设想,并可以即时预览页面,其整体架构如图6所示。
1) 视窗:设计页面的容器[8],引入对象模型、接口,配置页面属性,定义页面事件。
2) 页面布局器:页面设计的核心组件,通过拖拽式页面布局、组件添加进行页面设计[9],页面设计后即可即时预览,还提供通过在线编辑页面代码修改自定义样式。
3) 前端自定义组件库:前端自定义组件库封装了大量的前端页面组件,除了常用的表格、表单、附件等组件,还提供统计图表如饼图、柱状图、仪表盘、树图等自定义封装组件,做到拿来即用。
4) 代码生成器:通过代码生成器可以将在线设计的页面生成可编辑的页面代码以及布局器页面数据对象,开发者可以在线直接编译生成的HTML、JS代码来进行自定义的样式调整以及逻辑开发。
页面设计器界面如图7所示,左侧是组件选择面板、布局对象结构面板,中间是设计界面、预览界面、HTML源码面板、JS源码面板,右侧是属性配置面板。开发者可以全程在线进行设计,还可以将设计界面源码下载到本地开发环境中进行编译开发。
执行引擎一方面支撑各个设计器中配置工具的运行,另一方面要支撑设计模型的运行[10]。执行引擎提供的主要功能如下:
1) 模型解析:软件运行期间,当用户发起页面请求后,首先会将设计后的请求页面解析成浏览器识别的HTML页面,接着会将页面调用的对象模型解析成对象服务识别的类对象。
2) 服务生成:在模型设计期,可以基于对象模型生成即时可用的在线对象模型服务,可以提供在线访问测试的功能。
3) 数据库操作:基于设计期间生成的数据库执行语句,可以实现在线数据库建库、建表、更新表的操作。对象模型更新后会比对当前数据库结构生成差异执行语句文件,通过执行语句更新数据库表结构,记录执行语句,并提供后期回溯、切换数据库的功能。
目前,基于开发平台开发的中船军工建设项目管控系统、中船固定资产投资管理系统、中船产品质量信息系统、某大型船厂智能管家系统等项目已上线运行,在开发平台支撑下,软件平均节省70%的开发工作量,节省约40%的人力成本,大幅提高了开发效率,有效降低了人力成本。
以军工建设项目管控系统为例,全体共计97个菜单功能,其中21个菜单功能实现无代码开发,56个菜单功能代码开发量在10%以内,13个菜单功能代码开发量在20%以内,4个菜单功能代码开发量在30%以内,仅3个菜单功能代码开发量超过30%,整体节省约75%的开发工作量,其上线运行软件页面如图8所示。
软件可视化快速开发平台是一种基于页面可视化配置设计的引擎式开发平台,该平台在行业领域内具有创新性。平台通过封装的组件调用、可视化的配置设计、引擎式的解析编译,可以让普通技术水平的开发人员经过简单的培训后即可进行快速的软件开发,降低了开发成本,提高了开发效率。在下一步的工作中,一方面将继续优化模型构造能力以及模型适用范围,另一方面将通过梳理业务形成应用领域内可共享的业务模型库,进一步提升平台的可用性、丰富性。