当前位置:无忧公文网 >范文大全 > 简历模板 > 基于模板的管理信息系统代码自动生成

基于模板的管理信息系统代码自动生成

时间:2022-03-19 09:27:31 浏览次数:

摘要:随着软件开发技术的不断发展,人们在管理信息系统的开发过程中总结出越来越多重复性的工作。这些重复性的工作增加了开发人员重复性编码的工作量,延长了市场需求响应时间,提高了开发成本等,同时在团队开发过程中,由于队员之间的代码编写能力参差不齐,编码风格不统一,代码的质量和可维护性得不到保证。从管理系统系统的应用角度分析,设计并实现了一种基于模板的管理信息系统代码生成方法。该方法通过提炼公共模块用作模板定制,构建一种基于Rete算法的代码自动生成引擎,能够快速生成统一编码风格的代码,提高系统开发效益和质量。该方法在“进销存”管理信息系统开发中得到了应用,并取得了良好的代码自动生成效果。

Abstract: With the continuous development of software development technology, people have summarized more and more repetitive work in the development process of management information systems. These repetitive tasks increase the workload of developers" repetitive coding, prolong the response time of market demand, increase the development cost, etc., and in the process of team development, because the code writing ability between the players is uneven, the coding style is not uniform, and the quality and maintainability of the code cannot be guaranteed. From the perspective of the application system of management system, a template-based management information system code generation method is designed and implemented. The method uses the refinement common module as template customization to build an automatic code generation engine based on Rete algorithm, which can quickly generate code of unified coding style and improve system development efficiency and quality. This method has been applied in the development of the "invoicing" management information system, and has achieved good automatic code generation.

关键词:模板;Rete算法;代码自动生成;管理信息系统

Key words: template;Rete algorithm;automatic code generation;management information system

中图分类号:0TP311.5 文献标识码:A 文章编号:1006-4311(2018)32-0213-04

0 引言

随着信息时代的不断深入,管理信息系统的种类越来越多,需求量越来越大。因此,能否在确保软件质量的前提下,提高软件开发效率,以快速响应市场需求是软件企业重点考虑的问题。虽然现有的软件开发大部分都有建模过程,如瀑布模型、喷泉模型、螺旋模型及渐增式模型等,但此时的系统建模主要针对开发初期对系统的分析和设计,后期的实现仍然需要开发人员手动编写代码,这样并没有在真正意义上提高软件开发的效率。另外,许多开发人员在软件开发的初期使用UML或其他建模语言来描述软件开发项目的流程,开发前期就会产生大量的文档和设计模型,然而这些文档和模型仅仅存在于设计阶段,当进入实现阶段时,既有文档和设计模型的价值得不到应有的体现。随着编码阶段的继续进行,系统不断地被修改而我们修改的仅仅只是代码,代码与文档及设计模型之间的关联将变的脆弱,也就是说设计与实现脱节,不利于系统的维护和开发效率的提高。

针对传统的软件开发周期长、软件设计与实现脱节和软件代码重用性差等问题,通过对管理信息系统的应用分析研究发现:尽管当前管理信息系统种类繁多,但是仍然是以数据的增加、修改、删除和查找的功能实现为主,不同的管理信息之间主要以业务流程和界面风格的不同进行区分。本文基本模板的管理信息系统代码自动生成研究,对提高软件抽象层次将管理信息系统开发从日益复杂的技术和层出不穷的框架中解放出来,加快信息管理系统快速成型,进而解决代码重用性问题,提高软件开发效率和质量等具有重要的意义。

1 代码自动生成设计

1.1 代码自动生成基本原理

管理信息系统的操作是对数据的操作,被操作数据主要数据库表或实体对象。其开发过程是操作实现的程序页面新建、叠加的过程,并且程序页面的数量是有限集合。根据有限状态自动机理论,管理信息系統代码生成过程可用一个M=(P,D,O,δ,p0)五元组表示,其中:

P表示页面的有限集合,

D是数据的有限集合,

O是操作的有限集合,

p0∈P是初始状态,即未开始生成目标源代码状态。

依据上述对管理信息系统代码自动生成过程的抽象定义,可设计一种代码自动生成工具按照下面的方式:假设处于未生代码初始状态,当代码引擎接受操作输入指令时,代码引擎结合页面生成规则(即代码模板)完成移动函数的变换,即可完成目标源代码的生成,并进入下一个状态,即δ(pn-1,d,o)=pn(n∈N*)。

1.2 自动生成代码的模型设计

根据代码生成基本原理,本文通过构建数据模型作代码生成过程的输入,为实现代码自动生成提供必要的参数信息。同时为了更好地实现软件复用,将管理信息系统代码结构相似或公共部分进行分析研究,以完成代码模板的定制,并将代码模板作为代码生成的输入。模板引擎接收到模板文件和数据模型输入后,通过对数据模型和模板的解析形式,以实现目标源代码的输出。代码生成的模型如图1所示。

2 代码自动生成实现

2.1 代码模板定制

模板是最终生成的代码原型[1]。根据代码的组成形式,可分为静态对象和动态对象。静态对象是指代码生成过程中无需改变直接输出的部分。该对象通常是经过了严格测试的目标源代码。动态对象是需要引入特殊的动态标签,通过变量或函数的方式进行定制。在模板引擎驱动下进行模板解析时,该对象需要借助数据模型来完成动态对象到目标源代码的动态转化。

代码模板定制通常需要结合信息管理系统所采用的开发架构或语言规范进行具体定制,以确保最终生成的目标代码具有高可用性和可维护性。本文选用基于J2EE的MVC管理信息系统开发规范,对管理信息系统的代码模板定制进行具体介绍。MVC框架可分为表示层、业务逻辑层、数据持久层和领域模块层。其具有可复用性较好、维护方便和搭建结构清晰等特点,有利于分开管理数据和模板。根据MVC框架各个分层特点,本研究需要设计四种類型模板用于生成J2EE各层的目标源代码。代码自动生成的模板定义如表1所示。

2.2 基于XML的数据模型定制

数据模型主要是对管理信息系统的所需的实体对象数据和功能操作信息进行定义的记录文件,需要用于更替模板文件中的动态部分,从而生成目标源代码。本文采用XML文件的格式对的数据模型进行定制。之所以选用XML文件的格式进行数据模型定制,是由XML文件的特点所决定的。XML是一种简单、可扩展性强、与平台无关并被广泛使用的标记语言,既方便对关系实体对象数据和功能操作信息记录与维护,也有利于模板引擎对该类型文件进行解析。

基于XML的数据模型不仅能够为生成目标源代码提供较为完备的必需信息,而且还是一份完整的维护文档。当用户需求发生改变时,只需要对数据模型文件做出相应修改或调整后,重新生成目标源代码即可,无需在目标源代码的基础上进行修改。定义的格式如下所示。

其中:

①key、property和method可以为多个或一个。

②method的类型是操作的有限集合选项,主要包括关系数据、校验数据和无关数据操作大三类,关系数据操作即对数据库的数据增加(insert)、修改(update)、删除(delete)和查询(search)。校验数据操作是对指定的数据进行验证(check)。无关数据操作用于生成虚拟访问路径(virtual),以实现真实路径隐藏和页面跳转。

2.3 基于Rete算法的模板引擎

Rete算法是Forgy针对产生式推理引擎效率低下问题提出的一种解决方法[2]。目前大部分规则推理引擎都使用Rete算法作为核心推理算法,如POS、CLIPS等都是基于Rete算法实现的[3]。它的基本思想是根据内容动态建立Rete匹配网络,充分利用规则系统中的时间冗余性(Temporal redundancy)和结构相似性(structural similarity)两个特性,保存过去所有匹配过程留下的信息,以牺牲空间代价换取系统模式的匹配效率。Rete规则网络中有主要有4类节点:根节点(root)、类型节点(typenode)、alpha节点、beta节点。根节点是构建Rete网络的入口,可以让所有的事实通过。类型节点用于存储各种类型的事实。alpha和beta节点分别用于单个事件的属性测试和多个事件之间的条件绑定测试。

本文以数据模型的method目标源代码生成例(x1,x2,x3,x4,x5,x6分别对应insert、update、delete、search、validate和virtual),建立的局部基于Rete算法的模板引擎推理网络(如图2所示),其中:

X1:生成类型为“增加”的数据操作方法目标源代码,对应节点类型为U;

X2:生成类型为“修改”的数据操作方法目标源代码,对应节点类型为U;

X3:生成类型为“删除”的数据操作方法目标源代码,对应节点类型为U;

X4:生成类型为“查询”的数据操作方法目标源代码,对应节点类型为U;

X5:生成类型为“校验”的数据操作方法目标源代码,对应节点类型为C;

X6:生成类型为“虚拟路径访问”的数据操作方法目标源代码,对应节点类型为V。

如图2所示,在进行目标源代码生成规则推理时,事实数据(Facts)为待推理的模板文件数据。其采用三元组(对象、属性、值)的方式进行描述。例如生成用户实体对象的数据修改方法可描述为(Users实体对象,Method,update)。基于Rete算法的模板引擎实现伪代码描述如下:

算法输入:管理信息系统实体数据三元组列表 Facts= {Fa1,Fa2,…,Fan};

算法输出:代码生成模型匹配到的规则 Ru,R={?覫,Ru1,Ru2,…,Run};

Rete Match(Facts)

1. Result to ?覫 //匹配结果初始化

2. Get Next Rule(Nets)to rule //从Nets中逐个取出规则模式

3. WHILE rule IS NOT NULL //判断当前检测模式是否存在所对应的AlphaNode中

4. rule is TRUE //当前检测模式存在标识

5. FOR pattern in rule.patterns //构建Beta网络中的JoinNode

6. Pattern is FALSE //Beta网络节点处理完毕状态标识

7. FOR fact in rule.Facts //處理待推理的实体数据

8. match(fact,pattern)to Pattern

9. IF Pattern is TRUE BREAK;//跳出当前FOR循环,重复步骤5

10. END FOR

11. IF Pattern is FALSE

12. Rule is FALSE //当前检测模式处理完毕标识

13. BREAK;

14. END IF

15. END FOR

16. Get Next Rule(Nets)to rule

17. RETURN rule; //返回匹配到的规则

3 代码自动生成的应用与效果分析

本文以完成生产部署的“进销存”管理信息系统为实例,分别对使用本代码自动生成工具生成代码和最终发布代码进行统计分析,以完成对该工具产生的作用与效果说明。使用代码生成工具生成的代码是指为有修改过的原始生成代码,而最终发布代码是指系统正式投入使用时所有的代码。为了获得代码相关统计数据,本文使用SourceCounter源代码统计工具对本代码自动生成工具所生成的代码和最终发布的代码进行数据统计。在使用SourceCounter统计前,设定编码生产率为每个月4000行/每人,一个月工作天数为20天/每人,每个月的成本为10000元/每人。根据该统计工具统计后得到的结果并对结果进行相应分析得出了如表2所示。

从表2可得知:该管理信息系统开发的代码生成比例可达84.65%。假设以5个人组成的团队对该项目进行编码,在不使用该代码自动生成工具的情况下大概需要6个月才能完成,使用该代码自动生成工具后只需1个半月完成编码工作

4 结语

本文运用有限状态自动机理论对代码生成技术的基本原理进行了论述,并在此基础上设计了管理信息系统代码生成模型。该模型主要包括模板文件和代码生成引擎。然后提出并实现了一种基于XML的模板定制方法,构建一种了基于Rete算法的代码自动生成引擎。最终应用实例表明该代码生成技术能够完成大部分的代码编写工作,进而缩短系统的开发周期,降低开发难度。同时应用实例表明,该项代码生成技术设计的模板表现能力有限,对于复杂性的需求不能很好地完成高层次的抽象化公共模块提炼,代码自动生成比例达不到100%,后继还可以通过不断丰富模板自定义方式,使该项目技术能够完成更多的代码编写工作。

参考文献:

[1]吴步丹.基于模板的工作流应用系统代码自动生成[J].华中科技大学学报,2013(12):18.21.

[2]Forgy C L. Rete: a fast algorithm for the many pattern/mane object pattern match problem. Artificial Interlligence,1982,19(1):17-37.

[3]孙新,等.一种基于共享度模型的改进Rete算法[J].自动化学报,2017(43):1571-1579.

推荐访问: 自动生成 管理信息系统 模板 代码