首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

基于EPF的JAVA代码生成工具 

申请/专利权人:大连理工大学

申请日:2022-03-30

公开(公告)日:2024-06-28

公开(公告)号:CN114780071B

主分类号:G06F8/30

分类号:G06F8/30;G06F8/35

优先权:

专利状态码:有效-授权

法律状态:2024.06.28#授权;2022.08.09#实质审查的生效;2022.07.22#公开

摘要:本发明属于软件开发领域,公开了一种基于EPF的JAVA代码生成工具。该JAVA代码生成工具基于事件处理表格、支持并发建模、支持生成并发代码的JAVA代码生成工具,其中包含一种形式化建模工具EPF及一种用于自动生成JAVA代码的算法;本发明在保留软件形式化语义的同时,提供了简洁易懂的建模工具;支持并发建模并生成多线程JAVA代码;可以显式地表示出软件设计缺陷;可以方便地进行形式化验证;包含了多种逻辑判断单元以适应复杂的设计需求;自动生成代码可以提高代码质量、减少工作人员的工作量;模型与代码解耦,降低了软件迭代的成本。

主权项:1.一种基于EPF的JAVA代码生成工具,其特征在于,该JAVA代码生成工具基于事件处理表格、支持并发建模、支持生成并发代码的JAVA代码生成工具,其中包含一种形式化建模工具EPF及一种用于自动生成JAVA代码的算法;一EPF是一种形式化建模工具,前端为表格或XML文件,后端具有形式化定义;在EPF中,行表示软件中存在的状态,列表示软件中将要发生的事件;行列交叉单元表示在某一状态下,当某一事件发生时,软件需要进行的处理;处理包含两部分内容:一是正常的事务处理;二是软件状态的转移;1EPF的形式化定义,用四元组的形式来定义:EPF=State,Event,Cell,ConcurrentFlag1其中,State=SubStateList,ActiveAction,inActiveAction,PreAction,PostAction是系统状态的集合;其中SubStateList表示子状态集合,ActiveAction表示激活行为,inActiveAction表示休眠行为,PreAction表示前置行为,PostAction表示后置行为;Event=Eventout∪Eventin是系统外部事件与系统内部事件的集合,外部事件由用户通过请求产生,内部事件是运行中由模型发起的事件,使用函数event事件名,表格编号产生;Cell∈{一般单元,忽略单元,错误单元,子表格}是系统操作的集合;ConcurrentFlag∈{true,false}是并发状态的标识位;该定义表示系统在State状态下,当发生了Event事件时,ConcurrentFlag的并发状态下做出Cell内声明的操作;EPF中规定Cell有四种情况,即一般单元、忽略单元、错误单元和子表格;其中:一般单元由目标状态NextState和函数列表FunctionList组成,表示系统执行过列表中函数后,跳转到目标状态;定义如下所示:Normal=NextState,FunctionList2忽略单元表示系统在该情况下不做出任何反应;错误单元表示系统中不应当存在的情况;子表格表示此时跳转至子EPF继续执行;2EPF提供层次化设计2.1状态的层次化:状态与状态之间设置为排他关系、语义关系、并列关系;2.2事件的层次化:事件与事件之间设置为排他关系、语义关系、并列关系;排他关系:即一般的关系;若两个主体为排他关系,则在一个时刻仅有一个主体处于激活状态;语义关系:即父子关系;父实体并不具备实际意义,通过子实体来决定做出的反应;并列关系:即同一等级下,兄弟实体的关系;2.3EPF的层次化:每一个单元被设置为一个子EPF表格,当系统执行至该处时,跳转到子EPF继续执行,表格之间通过声明共享变量来传递数据;EPF在状态的层次间嵌入if…else…和switch…case…逻辑判断式,用来对高层次状态进行进一步细分,是对公共判断逻辑的抽象;EPF将公共行为进行抽象,包含前置行为pre-action和后置行为post-action;当某状态具备公共行为时,不论该状态下发生何种事件,若存在pre-action时,均首先执行前置行为;若存在post-action时,在执行了单元格中规定的行为后,均执行后置行为;EPF可为状态设置激活行为active-action和休眠行为inactive-action;激活行为在状态由休眠态转为激活态时发生;休眠行为在状态由激活态转为休眠态时发生;与pre-action和post-action不同的是,pre-actionpost-action的发生不要求状态的状态发生改变;3EPF支持并发建模通过层次化设计将状态划分为不同的状态簇,在并发状态下,每一个状态簇中,总是有一个状态处于激活状态;当系统中某一事件发生时,会给每一个激活状态下的单元创建新的线程去执行函数并在运行结束后销毁当前线程;EPF支持并发状态下的多线程事务,EPF声明并列关系的多个状态簇,当一个事件发生时,如果系统中有多个状态均处于激活状态,EPF将创建多个线程并发处理;4使用XML文件来声明EPF,标签定义如下:4.1表格根标签:使用Epf及Epf来表示,其中包含一个属性id表示表格编号;4.2状态标签:使用StateState来表示,其中包含6个属性如下:·name:表示状态名;·concurrent_flag:表示当前操作单元是否处于并发状态,默认为false;·active_action_list:表示激活行为函数列表,使用分号隔开;·inactive_action_list:表示休眠行为函数列表,使用分号隔开;·pre_action_list:表示前置行为函数列表,使用分号隔开;·post_action_list:表示后置行为函数列表,使用分号隔开;4.3事件标签:使用Event表示,其中包含属性name,表示事件名称;4.4单元标签:使用Cell表示,其中属性如下:·normal:表示当前操作单元是否为一般单元,默认为false;·ignore:表示当前操作单元是否为忽略单元,默认为false;·error:表示当前操作单元是否为错误单元,默认为false;·next_state:表示目标状态,当且仅当normal属性为true时生效;·function_list:表示函数列表,函数名之间使用分号隔开,当且仅当normal属性为true时生效,·sub_form_id:表示当前操作单元跳转到的子表格id,当且仅当normal、ignore、error属性均为false时生效;4.5分支逻辑标签:使用IfIfElseElse表示,其中If标签包含condition属性,表示逻辑判断条件;4.6选择逻辑标签:使用SwitchSwitchCaseCase表示,其中Switch标签包含Var属性,表示分支逻辑变量;二代码自动生成算法,算法首先按行读取XML文件,每当遇见左标签时,将标签入栈,并将如下给出的Java代码映射表M中对应的代码串拼接至目标代码串后;每当遇见右标签时,将栈顶标签出栈并判断二者是否匹配;若匹配,则从M中取出对应的代码串拼接之目标代码串后;若不匹配则文件语法有误,不予生成代码;当ConcurrentFlag为真时,新建线程执行任务。

全文数据:

权利要求:

百度查询: 大连理工大学 基于EPF的JAVA代码生成工具

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。