CN119668576B - 一种低代码软件开发系统 - Google Patents
一种低代码软件开发系统 Download PDFInfo
- Publication number
- CN119668576B CN119668576B CN202510187249.6A CN202510187249A CN119668576B CN 119668576 B CN119668576 B CN 119668576B CN 202510187249 A CN202510187249 A CN 202510187249A CN 119668576 B CN119668576 B CN 119668576B
- Authority
- CN
- China
- Prior art keywords
- project
- code
- jar package
- java
- jar
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种低代码软件开发系统,通过项目管理模块负责获取用户关于Java项目的创建需求,包括源码模式和Jar包模式。代码生成模块在源码模式下利用大语言模型按照需求生成代码和外部依赖信息。Jar包管理模块在Jar包模式下按照需求管理调用共享Jar包、项目Jar包和扩展Jar包。部署管理模块通过独立的类加载器基于双亲委派机制完成项目的部署,方法调用模块基于Java反射机制动态调用已加载的Jar包。该系统通过自动化代码生成和灵活的部署机制,显著提高了开发效率,降低了开发成本,同时保证了系统的可扩展性和稳定性,适用于快速构建和部署Java项目。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种低代码软件开发系统。
背景技术
随着软件开发需求的日益增长,传统的软件开发模式已逐渐暴露出许多问题。传统开发过程通常依赖开发者手动编写大量的代码,这不仅耗时耗力,而且容易引入错误,降低开发效率。尤其在Java等主流编程语言的项目中,开发者常常需要进行繁琐的接口定义、方法编写、依赖管理等操作,这些重复性的工作占用了大量的开发资源,且难以保证代码的质量和一致性。
为了解决这些问题,低代码开发平台应运而生。低代码开发平台通过简化编码过程、提供可视化设计界面、自动生成代码等手段,帮助开发者提高开发效率,降低了技术门槛。然而,现有的低代码开发系统大多侧重于前端界面的快速构建,针对后端业务逻辑、接口管理和项目部署等方面的支持仍然有限。现有系统往往缺乏灵活的代码生成机制、有效的外部依赖管理以及高效的项目部署方案,导致开发者仍需要手动进行大量的代码修正与优化。
此外,一些低代码平台还存在任务调度、负载均衡、容错处理等方面的不足,尤其是在大规模并发任务处理时,性能和稳定性无法得到充分保障。因此,现有低代码平台在提升开发效率的同时,仍面临着无法完全满足复杂项目需求的挑战。
发明内容
鉴于此,本发明实施例提供了一种低代码软件开发系统,以消除或改善现有技术中存在的一个或更多缺陷,解决现有技术无法快速构建后端业务并进行项目部署的问题。
本发明的一个方面提供了一种低代码软件开发系统,所述系统包括:
项目管理模块,用于获取用户关于Java项目的创建需求,所述创建需求包括创建形式和项目需求描述;所述创建形式包括源码模式和Jar包模式;所述源码模式下,所述项目需求描述包括项目功能描述、接口定义、接口调用的方法定义、所述方法的响应参数类型和所需的外部依赖;在Jar包模式下,所述项目需求描述以注解形式标注所述Java项目需要的接口名称及描述、接口调用的方法名称及描述、参数名称、参数类型及所述外部依赖;
代码生成模块,用于在所述源码模式下,利用预设大语言模型以所述项目需求描述为输入,按照示例项目文件大纲生成目标项目文件大纲,以及按照所述目标项目文件大纲的结构对所需的所述接口和所述方法生成代码和外部依赖信息;基于用户核查对错误代码和注释的修改完善所述代码,组合生成内容;
Jar包管理模块,用于在Jar包模式下,按照示例项目获取由多个Java项目共享的共享Jar包、针对当前Java项目使用所述项目需求描述注解的项目Jar包和标记外部依赖的扩展Jar包,以配置为当前Java项目;在源码模式下,将当前Java项目对应的所述生成内容划分为由多个Java项目共享的所述共享Jar包、所述项目Jar包和所述扩展Jar包进行管理;
部署管理模块,用于通过具有独立命名空间的类加载器加载所述Java项目中的类,在所述源码模式和所述Jar包模式中,在资源目录下创建META-INF/services目录,创建以接口全路径为名的文件,所述文件的内容为接口实现类的全限定名,并部署所述生成内容,完成所述Java项目的部署;按照预设路径在资源目录下基于双亲委派机制和独立类加载器加载所述共享Jar包、所述项目Jar包和所述扩展Jar包中的接口实现类,完成所述JAVA项目的部署;
方法调用模块,用于基于Java的反射机制动态加载所述Java项目中的Jar包进行调用。
在一些实施例中,所述系统还包括:Java项目完整性校验模块,用于根据所述项目需求描述对部署的所述Java项目的所述项目功能描述、所述接口定义、所述方法定义、所述响应参数类型和所述外部依赖进行完整性审查,并生成审查结果,在所述完整性审查未通过时,生成提示信息。
在一些实施例中,所述系统还包括:代码生成验证模块,用于对所述代码生成模块产生的所述代码进行语法正确性、逻辑正确性和性能测试,建立代码生成日志记录所述代码生成过程并记录测试结果;以及将生成的代码纳入版本控制系统,记录每次生成的代码版本和对应的项目需求。
在一些实施例中,所述系统还包括:代码安全性检测模块,用于提供沙箱环境隔离测试所述代码的安全性,并建立代码安全性测试日志,用于保存安全性测试结果。
在一些实施例中,所述代码生成模块结合Ftl模板生成所述代码以及用于定义所述外部依赖的pom.xml文件。
在一些实施例中,所述部署管理模块按照预设路径在资源目录下基于双亲委派机制和独立类加载器加载所述共享Jar包,包括:
创建共享加载器目录,下载所述共享Jar包至所述共享加载器目录下,将所述共享Jar包的存储路径放入路径URL数组中;
创建类加载器实例ShareClassLoader,将AppClassLoader作为ShareClassLoader的父加载器,基于双亲委派机制根据所述路径URL数组记录的所述存储路径对所述共享Jar包的接口实现类进行加载和初始化。
在一些实施例中,所述部署管理模块按照预设路径在资源目录下基于双亲委派机制和独立类加载器加载所述项目Jar包和所述扩展Jar包,包括:
创建项目加载器目录并建立子文件夹,下载所述项目Jar包和所述扩展Jar包至所述项目加载器目录;
创建自定义类加载器实例MicroUdcClassLoader,基于双亲委派机制根据按照存储路径加载所述项目Jar包和所述扩展Jar包中的接口实现类,将所述类加载器实例ShareClassLoader作为所述自定义类加载器实例MicroUdcClassLoader的父加载器。
在一些实施例中,所述系统还包括:
需求映射模块,用于装载预设大语言模型以将用户基于自然语言描述的Java项目需求转换为标准格式的所述创建需求。
在一些实施例中,所述系统还包括:模型管理优化模块,用于对所述大语言模型进行定期评估测试和更新迭代。
在一些实施例中,所述系统还包括:异步任务和分布式任务管理模块,用于将长时间运行的Java项目开发任务转化为异步任务在后台异步执行,或将所述Java项目开发任务划分为多个子任务分发到多个工作节点上执行。
本发明的有益效果至少是:
本发明所述低代码软件开发系统中,项目管理模块负责获取用户关于Java项目的创建需求,包括源码模式和Jar包模式。代码生成模块在源码模式下利用大语言模型按照需求生成代码和外部依赖信息。Jar包管理模块在Jar包模式下按照需求管理调用共享Jar包、项目Jar包和扩展Jar包。部署管理模块通过独立的类加载器基于双亲委派机制完成项目的部署,方法调用模块基于Java反射机制动态调用已加载的Jar包。该系统通过自动化代码生成和灵活的部署机制,显著提高了开发效率,降低了开发成本,同时保证了系统的可扩展性和稳定性,适用于快速构建和部署Java项目。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例所述低代码软件开发系统的结构示意图。
图2为本发明一实施例所述低代码软件开发系统的应用逻辑示意图。
图3为本发明一实施例所述低代码软件开发系统在源码模式下引用大语言模型思维链生成代码的流程图。
图4为本发明一实施例所述低代码软件开发系统生成项目代码流程图。
图5为本发明一实施例所述低代码软件开发系统加载共享Jar包的流程图。
图6为本发明一实施例所述低代码软件开发系统加载项目Jar包和扩展Jar包的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
低代码平台是一种软件开发工具,允许开发者通过图形界面和模型驱动的逻辑定制化地开发应用程序,而不是完全依赖于传统的编码方式。低代码平台通常提供了一系列预制的模块和组件,用户可以用过拖拉拽的方式快速构建包含用户界面、业务逻辑、工作流和数据流转的应用程序,从而全方位降低软件开发编码成本。
工作流引擎是低代码平台中的核心组件,负责管理和执行应用程序的工作流。它支持通过可视化的方式创建并配置工作流程,包括任务分配、数据处理等操作。同时还能跟踪和监控工作流的执行状态,提供运行日志和错误处理机制。工作流中一般设计有不同类别的工作流节点,如开始节点、计算节点、分支节点等等,这些节点的组合编排能够实现复杂的业务流程,使得业务流程的可视化成为可能。然而,随着业务逻辑的复杂程度增加,也带来一些局限,如编排复杂,当前众多低代码平台工作流在面对复杂业务逻辑时只能依靠复杂的工作流编排,更复杂的编排也意味着更长时间的测试,不断降低效率,反而违背了使用低代码平台的初衷。又如扩展性差,固定的工作流节点限制了低代码平台的扩展性。当复杂的业务流程需要一类新的节点时,只能通过重新开发新节点实现。目前的低代码平台需要更灵活的扩展能力来满足不断增长的业务需求。
本申请目的在于提供一种低代码平台,在工作流中的用户自定义代码节点(UserDesign Code),面对复杂的业务需求,用户可以通过UDC进行Java项目的开发。需要说明的是,Java项目是一个基于Java语言构建的软件工程,通常包含多个模块和组件,用于实现特定的功能或服务。在本发明中,也就是用户自定义代码节点需要完成的功能。例如某一节点需要完成的功能为发送政务微信,则创建对应Java项目。在Java项目中,可以提供一个或多个接口,接口是一种抽象类型,用于定义一组方法的规范,但不提供具体实现。将接口与实现分离,便于维护和扩展。方法是接口或类中定义的具体操作逻辑。它接收输入参数(请求参数),执行一系列操作,并返回输出结果(响应参数)。方法是实现接口规范的具体实现。接口定义了一组方法的规范,这些方法通常是没有具体实现的抽象方法。类可以通过实现接口来继承这些方法的声明,并提供具体实现。综上所述,一个项目用于实现某一个大的功能,该项目下可以包含多个接口,每个接口用于定义小的功能,每个接口中包含多个方法用于具体实现功能。即项目包含多个接口,接口包含多个方法的依赖关系。
依赖是指项目运行或构建过程中所依赖的外部库或模块。这些依赖通常是其他开发者或组织编写的代码,用于实现特定的功能,例如数据库连接、日志记录、网络通信等。通过引入这些依赖,开发者可以避免重复造轮子,专注于核心业务逻辑的开发。
在Java项目中,依赖是jar形式的文件引入,jar文件是一种特殊的文件格式,用于打包并存储代码和资源,我们将这种文件称之为Jar包。开发人员开发了一个工具或功能后可以将其打包成一个jar文件,然后分享给其他人。别人可以直接使用这个jar文件,而不需要重新编写代码。
在本发明中,项目中的方法具体实现可能会使用到外部依赖,将某个项目单独使用到的定义为扩展Jar包,如果多个项目均使用到该Jar包,将其定义为共享Jar包。本发明中项目打包后会将项目本身打包,即项目Jar包,虽然项目本身使用到了外部依赖,但是该Jar包并不包括外部依赖的实际代码资源,也就是扩展Jar包或共享Jar包,因此需要将这三者均部署至工作流系统运行的Java虚拟机中。
具体的,本发明提供了一种低代码软件开发系统,如图1和2所示,所述系统包括:项目管理模块、代码生成模块、Jar包管理模块、部署管理模块和方法调用模块。
项目管理模块用于获取用户关于Java项目的创建需求,创建需求包括创建形式和项目需求描述;创建形式包括源码模式和Jar包模式;源码模式下,项目需求描述包括项目功能描述、接口定义、接口调用的方法定义、方法的响应参数类型和所需的外部依赖;在Jar包模式下,项目需求描述以注解形式标注Java项目需要的接口名称及描述、接口调用的方法名称及描述、参数名称、参数类型及外部依赖;
代码生成模块用于在源码模式下,利用预设大语言模型以项目需求描述为输入,按照示例项目文件大纲生成目标项目文件大纲,以及按照目标项目文件大纲的结构对所需的接口和方法生成代码和外部依赖信息;基于用户核查对错误代码和注释的修改完善所述代码,组合生成内容。
大语言模型是指在大规模文本语料上训练、包含百亿级别甚至更多参数的语言模型。这些模型采用与小模型类似的Transformer架构和预训练目标,如语言建模,但主要区别在于模型的大小、训练数据和计算资源的增加。大语言模型的表现往往遵循扩展法则,即模型规模的增加会带来性能的提升。大语言模型在自然语言处理、文本生成和智能对话等领域有广泛应用。它们通过海量数据训练学习复杂的模式和特征,展现出强大的泛化能力和预测性能。大语言模型基于思维链(Chain-of-Thought,CoT)实施,思维链是一种Prompt技术,用于提升大模型在复杂推理任务上的表现,如数学问题、常识推理和符号推理等。CoT通过要求大模型在输出最终答案前显式输出中间的推理步骤这一方法将复杂问题分解为一个个子问题并逐步解决,这些中间步骤不仅帮助模型逐步逼近正确答案,还提高了模型决策的可解释性。大模型与思维链的结合具有以下优势:提高开发效率,大模型能够在足够的提示基础上直接生成代码框架,能够大幅度提升项目代码的开发效率。提升代码鲁棒性,大模型能够帮助开发人员弥补未考虑到的地方,提升项目代码的鲁棒性。
代码生成模块是该低代码软件开发系统中的核心组件之一,主要负责在源码模式下根据用户提供的项目需求描述自动生成项目的代码结构和内容。其工作主要包括如下步骤:
步骤S101:输入项目需求描述。
在源码模式下,用户需要提供详细的项目需求描述,包括但不限于:项目功能描述,项目的主要功能和业务逻辑;接口定义,项目需要对外提供的接口(API);接口调用的方法定义,接口内部的具体方法实现。方法的响应参数类型,方法返回的数据结构。外部依赖,项目运行所需的第三方库或框架。这些需求描述是代码生成模块的输入,模块会根据这些信息生成相应的代码。
步骤S102:生成目标项目文件大纲。
代码生成模块首先会利用一个预设的大语言模型(如GPT、deepseek等)来生成项目的文件大纲。文件大纲通常包括项目的基本文件和目录结构,例如:src/main/java,项目的Java源代码目录;src/main/resources,项目的资源文件目录(如配置文件、模板文件等);pom.xml(Maven项目),项目的依赖管理和构建配置文件。
步骤S103:根据大纲生成代码和外部依赖。
在生成文件大纲之后,代码生成模块会按照大纲的结构生成具体的代码内容,包括:接口代码,根据接口定义生成接口类。方法代码,根据方法定义生成方法的实现。外部依赖信息,将用户指定的外部依赖(如依赖的库或框架)添加到项目的配置文件(如pom.xml)中。
步骤S104:基于用户核查的代码完善。
生成的代码可能存在一些问题或错误,例如:错误代码,生成的代码可能不符合语法规范或业务逻辑。错误注释,生成的注释可能与代码的实际功能不符。因此,代码生成模块会提供一个用户核查的机制,允许用户修改错误代码,纠正生成的代码中的错误;完善注释,补充或修正代码中的注释,使其更准确地描述代码的功能和逻辑。
步骤S105:组合生成内容。
在用户完成核查和修改后,代码生成模块会将生成的代码和外部依赖信息组合成完整的项目内容。最终的项目内容包括:完整的源代码,包括接口、方法实现等。配置文件,如pom.xml,包含项目的所有外部依赖。注释,准确描述代码功能的注释。
在一些实施例中,代码生成模块结合Ftl模板生成代码以及用于定义外部依赖的pom.xml文件。
Jar包管理模块用于在Jar包模式下,按照示例项目获取由多个Java项目共享的共享Jar包、针对当前Java项目使用所述项目需求描述注解的项目Jar包和标记外部依赖的扩展Jar包,以配置为当前Java项目;在源码模式下,将当前Java项目对应的所述生成内容划分为由多个Java项目共享的所述共享Jar包、所述项目Jar包和所述扩展Jar包进行管理。Jar包模式下,用户无需在系统中定义项目等信息,只需要模仿示例项目编码。使用系统提供的注解并配置资源文件即可。Jar包会在部署时被解析以获取项目、接口及方法信息并保存至数据库中。对于基于源码模式生成的生成内容,同样按照共享Jar包、项目Jar包和扩展Jar包进行划分和管理,并进行部署。
在该低代码软件开发系统中,Jar包模式是一种高效且可复用的开发方式,允许用户通过注解形式标注项目需求描述,并将这些信息封装到Jar包中,从而实现代码的模块化和复用。Jar包管理模块的主要功能是在Jar包模式下,根据项目需求描述注解,生成和管理多个Java项目共享的共享Jar包、当前Java项目特有的项目Jar包,以及标记外部依赖的扩展Jar包。
共享Jar包是一种可复用的模块,其在多个Java项目之间共享,主要用于提供通用功能或库。项目Jar包是针对当前Java项目需求描述注解的Jar包,包含项目特定的功能和实现。扩展Jar包是一种可选的Jar包,用于添加对项目可能需要的外部库或功能支持的依赖。
部署管理模块用于通过具有独立命名空间的类加载器加载Java项目中的类,在源码模式和Jar包模式中,在资源目录下创建META-INF/services目录,创建以接口全路径为名的文件,文件的内容为接口实现类的全限定名,并部署生成内容,完成Java项目的部署;按照预设路径在资源目录下基于双亲委派机制和独立类加载器加载共享Jar包、项目Jar包和扩展Jar包中的接口实现类,完成JAVA项目的部署。区别在于Jar包模式用户需要自己用注解标识接口、方法等信息,而源码模式已经提前保存在数据库中。两种模式的部署都是通过双亲委派机制和独立类加载器加载的。具体的,部署管理模块是低代码软件开发系统中用于将Java项目进行最终部署的核心模块,它通过类加载器在源码模式和Jar包模式下实现了Java项目中类的动态加载和部署。
在源码模式和Jar包模式下,具体操作包括:使用具有独立命名空间的类加载器来加载项目的类。执行资源目录操作,在项目的资源目录下创建一个名为META-INF/services的目录。创建接口全路径文件,在这个META-INF/services目录下,创建一个以接口全路径为名称的文件。例如,如果接口的全路径是com.example.MyInterface,则创建的文件名为com.example.MyInterface。填写接口实现类全限定名,文件的内容是接口实现类的全限定名。例如,如果接口com.example.MyInterface的实现类是com.example.impl.MyInterfaceImpl,则文件内容为com.example.impl.MyInterfaceImpl。部署生成内容,完成上述操作后,将合成后的项目内容进行部署,从而完成Java项目的部署过程。
使用具有独立命名空间的类加载器,并且基于双亲委派机制进行类加载。按照预设路径,在资源目录下加载三个类型的Jar包,分别是:共享Jar包、项目Jar包和扩展Jar包。共享Jar包是多个Java项目共享的通用功能或库的Jar包。例如,提供日志记录、工具函数等通用功能的Jar包。项目Jar包是当前Java项目特有的、使用项目需求描述注解生成的Jar包。例如,包含特定业务逻辑、接口实现等的Jar包。扩展Jar包是用于添加外部依赖的Jar包,标记了项目所需的外部依赖。例如,与第三方库或框架相关的扩展功能的Jar包。加载接口实现类,类加载器加载上述共享Jar包、项目Jar包和扩展Jar包中的接口实现类,从而完成Java项目的部署过程。
方法调用模块,用于基于Java的反射机制动态加载Java项目中的Jar包进行调用。Java的反射机制允许程序在运行时检查和操作类、对象、方法、字段等的特征和行为。通过反射,可以在运行时获取类的信息,并调用其方法或构造函数。这种动态性使得在不知道具体类名的情况下,也能与类进行交互。
在一些实施例中,所述系统还包括:Java项目完整性校验模块,用于根据项目需求描述对部署的Java项目的项目功能描述、接口定义、方法定义、响应参数类型和外部依赖进行完整性审查,并生成审查结果,在完整性审查未通过时,生成提示信息。
具体的,首先,解析项目需求描述,提取其中的关键信息,如项目功能描述、接口定义、方法定义、响应参数类型和外部依赖等;然后,通过反射机制或代码解析工具,对已部署的Java项目进行扫描,获取项目的实际功能、接口、方法、参数类型和依赖信息;接着,将提取的需求信息与实际项目信息进行逐一对比,检查是否存在缺失或不匹配的情况;如果发现完整性问题,则生成审查结果,并提供详细的提示信息,指出具体的问题所在(如缺少某个接口、方法参数类型不匹配、缺少外部依赖等),以便开发人员进行修复。
在一些实施例中,所述系统还包括:代码生成验证模块,用于对所述代码生成模块产生的所述代码进行语法正确性、逻辑正确性和性能测试,建立代码生成日志记录所述代码生成过程并记录测试结果;以及将生成的代码纳入版本控制系统,记录每次生成的代码版本和对应的项目需求。
具体的,代码生成验证模块的实现可以通过以下步骤进行:1)语法正确性验证,通过调用Java编译器API,将生成的代码文件作为输入,检查是否存在语法错误。例如,可以使用javax.tools.JavaCompiler工具类来编译代码,捕获编译过程中的异常和错误信息,记录并报告语法问题。2)逻辑正确性验证,设计一系列单元测试用例,使用单元测试框架如JUnit来验证代码的逻辑。根据项目需求描述定义测试场景,包括正常输入和边界条件,执行测试并记录测试结果,确保代码的功能符合预期。3)性能测试,针对代码中的关键方法和组件,使用性能分析工具如JProfiler或统计代码运行时间和资源消耗,设置性能指标(如响应时间、吞吐量),运行性能测试,并记录测试结果,验证代码是否满足性能要求。4)日志记录,在代码生成过程中,利用日志框架如Log4j或SLF4J,记录代码生成的中间状态、方法调用、错误信息以及测试结果。将日志信息写入文件或数据库,便于后续的审计和问题追踪。5)版本控制集成,在代码生成后,通过版本控制工具的API(如Git的JGit库),将生成的代码添加到版本控制系统中。每次生成的代码作为一个新的提交,记录版本信息和对应的项目需求描述,便于版本管理和回溯。
在一些实施例中,所述系统还包括:代码安全性检测模块,用于提供沙箱环境隔离测试所述代码的安全性,并建立代码安全性测试日志,用于保存安全性测试结果。
代码安全性检测模块的实现可以通过以下步骤进行:1)沙箱环境隔离测试:创建一个受控的沙箱环境,将待测试的代码部署到该环境中。沙箱环境可以限制代码的执行权限,防止恶意代码对系统造成危害。例如,可以使用Java的SecurityManager类来限制代码的文件访问、网络访问等权限。2)静态代码分析,使用静态代码分析工具(如SonarQube、FindBugs、Checkmarx和SpotBugs)对代码进行扫描,检测潜在的安全漏洞和质量问题。这些工具可以检测出常见的安全问题,如SQL注入、跨站脚本(XSS)、命令注入等。3)动态代码分析:在沙箱环境中运行代码,监控其运行时行为,检测是否存在异常行为或安全漏洞。例如,可以监控代码的文件操作、网络通信、内存使用等行为,以发现潜在的安全问题。4)建立测试日志:在测试过程中,记录所有测试结果和相关日志信息。日志应包括测试时间、测试结果、发现的安全问题、问题的严重程度等信息。可以使用日志框架(如Log4j或SLF4J)来记录日志,并将日志保存到文件或数据库中,以便后续分析和追踪。5)生成测试报告:根据测试结果生成详细的测试报告,报告应包括测试概述、发现的安全问题、问题的详细描述、建议的修复措施等。测试报告可以以HTML、PDF或其他格式输出,方便开发人员和安全团队查看和分析。
在一些实施例中,所述部署管理模块按照预设路径在资源目录下基于双亲委派机制和独立类加载器加载所述共享Jar包,包括步骤S201~S202:
步骤S201:创建共享加载器目录,下载所述共享Jar包至共享加载器目录下,将共享Jar包的存储路径放入路径URL数组中。
步骤S202:创建类加载器实例ShareClassLoader,将AppClassLoader作为ShareClassLoader的父加载器,基于双亲委派机制根据路径URL数组记录的存储路径对共享Jar包的接口实现类进行加载和初始化。
在一些实施例中,所述部署管理模块按照预设路径在资源目录下基于双亲委派机制和独立类加载器加载项目Jar包和扩展Jar包,包括步骤S301~S302:
步骤S301:创建项目加载器目录并建立子文件夹,下载项目Jar包和扩展Jar包至项目加载器目录。
步骤S302:创建自定义类加载器实例MicroUdcClassLoader,基于双亲委派机制根据按照存储路径加载项目Jar包和扩展Jar包中的接口实现类,将类加载器实例ShareClassLoader作为自定义类加载器实例MicroUdcClassLoader的父加载器。
在一些实施例中,所述系统还包括:需求映射模块用于装载预设大语言模型以将用户基于自然语言描述的Java项目需求转换为标准格式的创建需求。
具体的,选择一个经过训练且适用于代码生成功能的大语言模型,如GPT-3、GPT-4或其他类似模型。这些模型具有理解自然语言和生成标准格式文本的能力。接收用户基于自然语言描述的Java项目需求,这些需求可能包括项目功能描述、接口定义、方法定义、响应参数类型和外部依赖等信息。利用大语言模型的强大语义解析能力,准确理解用户输入中的每个部分。例如,识别“我想开发一个电商平台,用户可以在这里购买商品并查看订单”这个需求,模型需要将其解析为项目功能描述、接口定义等。基于解析结果,将自然语言描述转换为符合系统要求的标准格式。这可能包括创建需求的标准化模板,如生成JSON格式的需求文档,其中包含项目功能描述、接口定义、方法定义等字段。如果用户输入的需求模糊或不明确,模型应能够给出提示或询问用户进一步澄清,以确保生成的创建需求准确无误。对生成的标准格式创建需求进行验证,确保其格式正确且逻辑清晰。例如,检查接口定义是否符合Java的语法规范,方法定义是否完整且参数类型一致等。如果发现有误或不准确的地方,允许用户查看和修正转换结果,以确保最终的创建需求完全符合用户意图。建立详细的日志记录,记录从用户输入到标准格式创建需求的整个映射过程,包括用户输入、模型解析过程、转换结果以及任何用户修正操作。
在一些实施例中,所述系统还包括:界面生成和可视化设计模块,供用户通过拖拽配置的方式构建项目的展示界面,并自动生成对应的前端代码。
在一些实施例中,所述系统还包括:异步任务和分布式任务管理模块,用于将长时间运行的Java项目开发任务转化为异步任务在后台异步执行,或将Java项目开发任务划分为多个子任务分发到多个工作节点上执行。
下面结合一具体实施例对本发明进行说明:
本实施例提供一种低代码平台中工作流中用户自定义代码节点(User DesignCode)的实现方法。下面对发明内容进行介绍。
首先介绍UDC的使用流程,如图2所示。面对复杂的业务需求,用户可以通过UDC提供的两种模式开发一个针对该业务需求的项目。项目功能开发测试完成后将其打包,其中项目之间共享依赖作为共享Jar包,项目本身作为项目Jar包、使用依赖作为扩展Jar包,均上传至文件系统。通过Jar包完成项目部署后,在低代码平台工作流中使用UDC节点并配置对应项目及接口方法信息即可完成业务需求。
下面对于UDC进行功能架构上的说明,图1展示了UDC功能模块划分。
UDC主要由5大模块构成,分别是项目管理模块、代码生成模块、Jar包管理模块、部署管理模块以及方法调用模块。其中项目管理模块包含对项目、接口、方法及参数的管理。Jar包管理模块管理包含对共享Jar包、项目Jar包及项目扩展Jar包的管理。
本实施例提出的项目概念也就是一个Java项目。一个项目可以对应多个接口,一个接口可以提供多个方法。每个方法都可以在工作流UDC节点中被配置及使用。同时,一个方法可以配置请求参数和响应参数。
同时,为提高UDC的扩展性,本实施例提出两种项目模式:源码模式和Jar包模式。
A.源码模式:
如果项目类型为源码模式,用户需要在系统中定义对应项目、接口、方法信息,系统会根据这些信息生成一个完整的Java项目,将该项目下载到本地后即可在本地开发环境中对项目功能进行完善。
从上述内容可以看出UDC所定义的项目代码都要求有一定的基本的代码框架,大语言模型十分适合在此框架基础上通过思维链的方式生成项目代码。
因此,本发明基于大语言模型(如GPT4),可以根据用户需求,自动生成项目代码。在用户输入对于项目的详细描述后,可以选择加入对于接口和方法的详细描述,也可以由大模型直接自动生成。生成基本项目代码后,用户可以通过修改注释的方式再次通过大模型对代码进行修改和完善,提升项目的开发效率。
本发明设计思维链以生成项目代码,如图3所示,包括以下步骤:
1.大模型根据项目详细描述生成项目文件大纲。
2.大模型根据项目详细描述与步骤1中生成的请求参数、响应参数与方法名称生成方法的详细功能描述与请求参数和响应参数的详细信息。
3.大模型根据步骤2生成的方法详细信息生成方法的具体代码及使用到的依赖信息。
4.用户修改代码中的注释,大模型根据注释的修改对代码进行修改。
项目类型为源码模式时,UDC会根据用户输入的项目、接口、方法以及参数信息构建一个完整的Java项目,具体流程如图4所示。
首先需要获取项目相关信息并检查信息完整性,如出现项目下并无接口、接口下没有方法等情况生成项目没有意义。然后在用户目录下根据项目名称创建项目代码目录,并依次创建Java项目中的代码目录和资源目录。最终根据参数、接口等信息,利用ftl模板创建每个具体代码文件以及pom.xml文件。
同时需要在资源目录下创建META-INF/services目录,并在其中创建以接口全路径为名的文件,文件内容为接口实现类的全限定名。项目中必须包括该配置文件才能在后续的部署环节中正确加载。
B.Jar包模式:
如果项目类型为Jar包模式,就无需在系统中定义项目等信息,只需要模仿示例项目编码。使用系统提供的注解并配置资源文件即可。Jar包会在部署时被解析以获取项目、接口及方法信息并保存至数据库中。
Jar包模式中,需要在资源目录下的global-config.json文件下配置项目相关信息,上传后系统自动读取项目信息并存储。本发明提出以下注解以获取接口、方法等信息:
1. @UdcField(name, type)用于标识参数名称及参数类型。
2. @UdcInterface(value, name)用于标识接口名称及描述。
3. @UdcMethod(value, name)用于标识方法名称及描述。
同时,本发明为两种模式都提供了@Dinjection注解用于依赖注入,接口实现类如果声明了系统Jar包中的类,该注解能够标识该成员变量并实现其在部署阶段的加载。
根据UDC的部署机制,项目的部署采取先加载共享Jar包后加载项目Jar包和扩展包的步骤。具体如下所示:
首先要初始化部署环境。对于源码模式和Jar包模式,部署的具体流程相似。但Jar包模式会从上述提到的@UdcField、@UdcInterface、@UdcMethod注解中获取参数、接口和方法的信息,从资源目录的global-config.json文件中获得项目信息。而源码模式直接利用项目管理模块获得所有项目的接口、方法等信息。这些信息都会存储到合适的数据结构中供后续使用。
初始化部署环境后,按照图5所示流程加载共享Jar包。首先需要在用户目录下创建/udc/shared-loader文件夹,将所有共享Jar包下载到该路径下。并将所有共享Jar包存储路径列表放入URL类型数组。创建一个新的URLClassLoader实例ShareClassLoader,将AppClassLoader作为ShareClassLoader的父加载器,并用共享Jar包路径URL数组初始化。至此共享Jar包加载完成。
共享Jar包加载完成后部署项目Jar包及扩展Jar包,具体流程如图6所示:
在用户目录下,首先创建一个名为/udc/udc-loader的文件夹,然后根据项目名称和版本信息进一步创建子文件夹并下载项目Jar包和扩展Jar包。为每个项目创建MicroUdcClassLoader自定义类加载器实例。这个加载器将项目Jar包和扩展Jar包的路径作为其加载路径,并将之前创建的ShareClassLoader作为其父类加载器。
随后,遍历项目下所有接口的全限定名列表,对每个接口进行加载。使用类加载器的loadClass方法进行加载。一旦接口类被成功加载,就使用java.util.ServiceLoader提供的load方法来加载接口的实现类。
接口实现类加载成功后获取接口实现类的成员变量,如果成员变量被@DInjection注解标识,则从Spring应用上下文中获取相应的依赖,并将Bean实例注入到接口实现类的字段中。最后,获取接口实现类中的方法请求参数、返回参数信息并保存。至此,项目Jar包和扩展Jar包的加载过程宣告完成。
C.部署机制:
在Java中,类的版本控制和隔离主要是通过类加载器(ClassLoader)来实现的。每个类加载器都有自己的命名空间,这意味着由不同类加载器加载的类,即使完全相同,也会被视为不同的类。这种机制是基于Java的双亲委派模型(Parent Delegation Model),以下是Java实现类版本控制和隔离的两个关键点:
1、双亲委派机制
在双亲委派机制中,当一个类加载器收到类加载请求时,它不会立即自己尝试加载这个类,而是先委托给其父类加载器去尝试加载。每一层的类加载器都是如此,因此所有类加载的请求都会传给顶层的启动类加载器(Bootstrap ClassLoader)。只有父加载器反馈自己无法完成加载时,子类加载器才会尝试自己加载。这样可以确保Java核心库的类不会被重新加载,同时也提供了一种机制,使得子类加载器可以覆盖父类加载器中的类。
2、独立的类加载器
通过为不同的版本或不同的插件提供独立的类加载器,可以确保这些·类在JVM中是隔离的。每个类加载器都有自己的类路径,因此它们加载的类不会与其他类加载器加载的类冲突。
因此,本发明为实现类的版本控制以及不同项目之间的隔离,设计了以下解决方案:
首先为保证共享包中的类不被类加载器重复加载,采用双亲委派机制,由AppClassLoader作为共享包类加载器ShareClassLoader的父加载器,由ShareClassLoader加载所有项目的共享Jar包,而项目的类加载器MicroUdcClassLoader将ShareClassLoader作为父加载器。
同时保证为保证不同项目和不同版本的类加载不会发生冲突,每个项目都会有自己独立的加载器以进行隔离。每个MicroUdcClassLoader负责加载自己的项目Jar包和项目扩展Jar包。
D.UDC方法调用实施方式:
在项目成功部署后用户可以对项目的所有方法进行测试,在工作流中也可以选择不同的项目中的不同接口和方法进行调用。而这种动态加载Jar包进行调用的方式,主要基于Java的反射机制。反射相关API提供一系列的类和接口操作Class对象,主要如下:
1、java.lang.Class:表示类的对象,提供了方法来获取类的字段、方法和构造函数等。
2、java.lang.reflct.Field:表示类的属性,提供了访问和修改字段的能力。
3、java.lang.reflct.Method:表示类的方法,提供了调用方法的能力。
4、java.lang.reflect.Constructor:表示类的构造函数,提供了创建对象的能力。
基于上述反射机制,能够完成UDC中方法的调用。根据工作流节点提供的项目、接口以及方法信息获取部署时得到的java.lang.reflect.Method类。
再根据调用时的参数信息,利用java.lang.java.lang.reflect.Constructor以及java.lang.reflect.Field构造请求参数。针对不同的请求参数如JSON类型的需要调用不同的库函数进行构造。构造完成后将该类加入到方法参数列表中。
最后调用java.lang.reflect.Method提供的invoke方法就能获得方法的执行结果。
与上述方法相应地,本发明还提供了一种装置/系统,该装置/系统包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置/系统实现如前所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
综上所述,本发明所述低代码软件开发系统中,项目管理模块负责获取用户关于Java项目的创建需求,包括源码模式和Jar包模式。代码生成模块在源码模式下利用大语言模型按照需求生成代码和外部依赖信息。Jar包管理模块在Jar包模式下按照需求管理调用共享Jar包、项目Jar包和扩展Jar包。部署管理模块通过独立的类加载器基于双亲委派机制完成项目的部署,方法调用模块基于Java反射机制动态调用已加载的Jar包。该系统通过自动化代码生成和灵活的部署机制,显著提高了开发效率,降低了开发成本,同时保证了系统的可扩展性和稳定性,适用于快速构建和部署Java项目。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种低代码软件开发系统,其特征在于,所述系统包括:
项目管理模块,用于获取用户关于Java项目的创建需求,所述创建需求包括创建形式和项目需求描述;所述创建形式包括源码模式和Jar包模式;所述源码模式下,所述项目需求描述包括项目功能描述、接口定义、接口调用的方法定义、所述方法的响应参数类型和所需的外部依赖;在Jar包模式下,所述项目需求描述以注解形式标注所述Java项目需要的接口名称及描述、接口调用的方法名称及描述、参数名称、参数类型及所述外部依赖;
代码生成模块,用于在所述源码模式下,利用预设大语言模型以所述项目需求描述为输入,按照示例项目文件大纲生成目标项目文件大纲,以及按照所述目标项目文件大纲的结构对所需的所述接口和所述方法生成代码和外部依赖信息;基于用户核查对错误代码和注释的修改完善所述代码,组合生成内容;
Jar包管理模块,用于在Jar包模式下,按照示例项目获取由多个Java项目共享的共享Jar包、针对当前Java项目使用所述项目需求描述注解的项目Jar包和标记外部依赖的扩展Jar包,以配置为当前Java项目;在源码模式下,将当前Java项目对应的所述生成内容划分为由多个Java项目共享的所述共享Jar包、所述项目Jar包和所述扩展Jar包进行管理;
部署管理模块,用于通过具有独立命名空间的类加载器加载所述Java项目中的类,在所述源码模式和所述Jar包模式中,在资源目录下创建META-INF/services目录,创建以接口全路径为名的文件,所述文件的内容为接口实现类的全限定名,并部署所述生成内容,完成所述Java项目的部署;按照预设路径在资源目录下基于双亲委派机制和独立类加载器加载所述共享Jar包、所述项目Jar包和所述扩展Jar包中的接口实现类,完成所述Java项目的部署;
方法调用模块,用于基于Java的反射机制动态加载所述Java项目中的Jar包进行调用;
所述系统还包括:Java项目完整性校验模块,用于根据所述项目需求描述对部署的所述Java项目的所述项目功能描述、所述接口定义、所述方法定义、所述响应参数类型和所述外部依赖进行完整性审查,并生成审查结果,在所述完整性审查未通过时,生成提示信息;
所述系统还包括:代码生成验证模块,用于对所述代码生成模块产生的所述代码进行语法正确性、逻辑正确性和性能测试,建立代码生成日志记录所述代码生成过程并记录测试结果;以及将生成的代码纳入版本控制系统,记录每次生成的代码版本和对应的项目需求。
2.根据权利要求1所述的低代码软件开发系统,其特征在于,所述系统还包括:代码安全性检测模块,用于提供沙箱环境隔离测试所述代码的安全性,并建立代码安全性测试日志,用于保存安全性测试结果。
3.根据权利要求1所述的低代码软件开发系统,其特征在于,所述代码生成模块结合Ftl模板生成所述代码以及用于定义所述外部依赖的pom.xml文件。
4.根据权利要求1所述的低代码软件开发系统,其特征在于,所述部署管理模块按照预设路径在资源目录下基于双亲委派机制和独立类加载器加载所述共享Jar包,包括:
创建共享加载器目录,下载所述共享Jar包至所述共享加载器目录下,将所述共享Jar包的存储路径放入路径URL数组中;
创建类加载器实例ShareClassLoader,将AppClassLoader作为ShareClassLoader的父加载器,基于双亲委派机制根据所述路径URL数组记录的所述存储路径对所述共享Jar包的接口实现类进行加载和初始化。
5.根据权利要求4所述的低代码软件开发系统,其特征在于,所述部署管理模块按照预设路径在资源目录下基于双亲委派机制和独立类加载器加载所述项目Jar包和所述扩展Jar包,包括:
创建项目加载器目录并建立子文件夹,下载所述项目Jar包和所述扩展Jar包至所述项目加载器目录;
创建自定义类加载器实例MicroUdcClassLoader,基于双亲委派机制根据按照存储路径加载所述项目Jar包和所述扩展Jar包中的接口实现类,将所述类加载器实例ShareClassLoader作为所述自定义类加载器实例MicroUdcClassLoader的父加载器。
6.根据权利要求1所述的低代码软件开发系统,其特征在于,所述系统还包括:
需求映射模块,用于装载预设大语言模型以将用户基于自然语言描述的Java项目需求转换为标准格式的所述创建需求。
7.根据权利要求1所述的低代码软件开发系统,其特征在于,所述系统还包括:模型管理优化模块,用于对所述大语言模型进行定期评估测试和更新迭代。
8.根据权利要求1所述的低代码软件开发系统,其特征在于,所述系统还包括:
异步任务和分布式任务管理模块,用于将长时间运行的Java项目开发任务转化为异步任务在后台异步执行,或将所述Java项目开发任务划分为多个子任务分发到多个工作节点上执行。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510187249.6A CN119668576B (zh) | 2025-02-20 | 2025-02-20 | 一种低代码软件开发系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510187249.6A CN119668576B (zh) | 2025-02-20 | 2025-02-20 | 一种低代码软件开发系统 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN119668576A CN119668576A (zh) | 2025-03-21 |
| CN119668576B true CN119668576B (zh) | 2025-07-04 |
Family
ID=94992312
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202510187249.6A Active CN119668576B (zh) | 2025-02-20 | 2025-02-20 | 一种低代码软件开发系统 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN119668576B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN120085941B (zh) * | 2025-04-30 | 2025-08-19 | 北京宇信科技集团股份有限公司 | 一种基于动态类加载的任务执行方法和系统 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113791763A (zh) * | 2021-01-22 | 2021-12-14 | 北京沃东天骏信息技术有限公司 | 一种代码生成方法和装置 |
| CN116974579A (zh) * | 2023-08-24 | 2023-10-31 | 杭州时趣信息技术有限公司 | 低代码平台的项目代码生成方法、装置、设备及介质 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110825369A (zh) * | 2019-11-07 | 2020-02-21 | 四川长虹电器股份有限公司 | 一种基于java语言的代码自动生成的方法 |
| US20230393832A1 (en) * | 2022-06-06 | 2023-12-07 | Incentive Marketing Group, Inc. | Automated translation of computer languages to extract and deploy computer systems and software |
| CN117008923B (zh) * | 2023-09-28 | 2023-12-29 | 北京智源人工智能研究院 | 基于ai大模型的代码生成和编译部署方法、平台和设备 |
| CN117667060A (zh) * | 2023-12-19 | 2024-03-08 | 杭州云为科技有限公司 | 一种低代码生成后端Java项目代码的方法、系统及其设备 |
| CN118796360B (zh) * | 2024-09-13 | 2025-01-21 | 山东浪潮科学研究院有限公司 | 一种支持自动化独立部署的低代码开发平台及方法 |
| CN119045805A (zh) * | 2024-10-23 | 2024-11-29 | 浙江大华技术股份有限公司 | 低代码应用的构建方法、设备及存储介质 |
-
2025
- 2025-02-20 CN CN202510187249.6A patent/CN119668576B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113791763A (zh) * | 2021-01-22 | 2021-12-14 | 北京沃东天骏信息技术有限公司 | 一种代码生成方法和装置 |
| CN116974579A (zh) * | 2023-08-24 | 2023-10-31 | 杭州时趣信息技术有限公司 | 低代码平台的项目代码生成方法、装置、设备及介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN119668576A (zh) | 2025-03-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Gargantini et al. | A metamodel-based language and a simulation engine for abstract state machines. | |
| Voelter et al. | mbeddr: Instantiating a language workbench in the embedded software domain | |
| US9772830B2 (en) | System and method for modeling cloud rules for migration to the cloud | |
| US20070011669A1 (en) | Software migration | |
| García-Domínguez et al. | EUnit: a unit testing framework for model management tasks | |
| US10514898B2 (en) | Method and system to develop, deploy, test, and manage platform-independent software | |
| CN119668576B (zh) | 一种低代码软件开发系统 | |
| Monteiro et al. | Bounded model checking of C++ programs based on the Qt cross‐platform framework | |
| Cooper et al. | Model-based development of engine control systems: Experiences and lessons learnt | |
| Bettini et al. | An executable metamodel refactoring catalog | |
| Jörges et al. | Back-to-back testing of model-based code generators | |
| CN115794254A (zh) | 基于云计算的组件研发管理平台和方法 | |
| CN118378719A (zh) | 一种机器学习工作流构建方法 | |
| Haltermann et al. | Information exchange between over-and underapproximating software analyses | |
| Gargantini et al. | A metamodel-based simulator for ASMs | |
| Flores | A Two-Level Model-Driven Engineering Approach for Reengineering CI/CD Pipelines | |
| MaIm et al. | Static flow analysis of the Action Language for Foundational UML | |
| Pomante et al. | A model-driven approach for the development of an ide for spacecraft on-board software | |
| Kohlmeyer et al. | LAMMPS: A Case Study For Applying Modern Software Engineering to an Established Research Software Package | |
| Morin et al. | Model-based, platform-independent logging for heterogeneous targets | |
| Jung | Generator-composition for aspect-oriented domain-specific languages | |
| Rodrigues et al. | Certifying delta-oriented programs | |
| Arts et al. | Model-based testing of data types with side effects | |
| Johnson | xUnit Principles and Practices: Definitive Reference for Developers and Engineers | |
| Mlinarić | Extension of dynamic software update model for class hierarchy changes and run-time phenomena detection |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |