IBM公司软件架构设计自动化程序框架代码生成器专利
发表时间:2023-10-18 18:03:03
文章来源:炫佑科技
浏览次数:168
菏泽炫佑科技
IBM公司软件架构设计自动化程序框架代码生成器专利
[专利摘要]公开了一种核电软件开发自动化系统和方法。 该系统包括:架构设计部门,将核电软件架构抽象为树形数据结构,采用广度优先搜索遍历,自动生成代码框架; 详细设计部门,对核电软件详细设计图差异进行自动比对; 代码开发部门,接收输入数据,根据预先定义的抽象定义模板自动生成并输出程序代码。 根据本发明的系统和方法,将软件自动化技术引入到核电软件开发的各个环节,构建统一的核电软件开发自动化工具平台,在减少人为引入软件的同时,充分提高了软件开发效率。缺陷率。
【专利说明】
核电软件开发自动化系统及方法
技术领域
[0001] 本发明涉及软件开发自动化领域,具体涉及一种核电软件开发自动化系统及方法。
【背景技术】
[0002] 软件自动化技术是当今计算机领域的热门技术,IBM、微软等国际IT公司在该领域投入了大量的研发能力。 RSA(RSA)是IBM公司开发的一种基于统一建模语言(UML)的软件架构设计自动化程序。 架构师根据软件需求使用UML语言绘制软件架构图,然后RSA将软件架构设计图转换为程序框架。 代码。 利用RSA进行软件架构的自动化设计,可以保证开发的程序代码架构忠实于*初的设计,并且可以让设计人员通过可视化的图形界面操作,将更多的精力集中在软件的业务逻辑上,从繁琐的代码编写中解放出来。
[0003] 在代码生成自动化领域,目前流行的代码生成器一般包括以下几类:1)代码; 2)嵌入式代码扩展器(Code、ICE); 3) 混合代码生成器(MCG); 4)部分类生成器(Class、PCG); 5)层生成器(Tier,TG)。 代码是*基本的代码生成器类型,它通过处理一个或多个程序源代码文件来生成解析文件。 也就是这种类型的生成器,它读取并解析Java源代码中的注释,然后使用一组模板生成HTML文档。 ICE的输入和输出都是代码,输出代码是在输入代码的基础上扩展一些代码段。 这类生成器的开发必须从新语言的设计开始。 通常新语言是在现有语言的基础上进行一些语法扩展,并使用ICE将新语言的代码转换为现有语言的代码。 本公司的Pro系列(Pro*Ada、Pro*C、Pro*C0B0L)就属于此类发电机。 MCG 与 ICE 类似。 输入和输出都是代码文件,但不需要先设计新的语言。 输入和输出是同一种高级编程语言的源代码,其*大的特点是生成的代码可以作为下一次代码生成过程的输入。 此类代码生成器可用于根据代码注释中编写的测试用例数据生成测试代码,根据代码注释中编写的访问定义生成数据库访问代码等。 PCG 将抽象定义文件作为输入并生成一组基本类。 这些基础类完成了大部分底层工作,用户可以通过继承和扩展这些基础类来完成设计。 TG 读取抽象定义文件并使用一组模板文件生成一个或多个输出源文件。 这些输出源文件完成了应用程序某一级别的所有功能。 这里的“层”是指多层应用中的“层”,比如数据访问层、业务逻辑层、界面表现层等。
[0004] 虽然软件自动化技术是计算机领域的研究热点,但目前现有的软件自动化技术并不适合核电软件开发流程的特点。 核电软件属于科学计算软件。 它在软件需求分析、架构设计、详细设计、代码开发等很多方面与传统软件开发有很大不同。 现有的自动化技术无法满足核电软件的开发需求,很难直接应用到核电软件开发过程中。
[0005] 需要一种能够结合核电软件的特点,实现设计和开发各方面自动化的核电软件开发技术。
[发明内容]
本发明实施例提供一种核电软件开发自动化工具平台,将软件自动化技术引入核电软件架构设计、详细设计、代码开发各个环节,构建统一的核电软件开发自动化工具平台,充分提高了软件开发的效率,同时降低了人为引入的软件缺陷率。
根据本发明的一个方面,提出了一种核电软件开发自动化系统,包括:架构设计部门,将核电软件的架构抽象为树形数据结构,采用广度优先搜索进行遍历,自动生成代码框架; 详情 设计部门对核电软件详细设计图差异进行自动比对; 代码开发部门接收输入数据,根据预先定义的抽象定义模板自动生成并输出程序代码。
根据本发明的另一方面,提出了一种核电软件开发自动化方法,包括:架构设计步骤,将核电软件的架构抽象为树形数据结构,采用广度优先搜索进行遍历,并自动生成代码框架; 详细设计步骤自动比较核电软件详细设计图的差异; 代码开发步骤接收输入数据,根据预定义的抽象定义模板自动生成并输出程序代码。
[0009] 本申请的技术方案根据核电软件开发的特点,将软件自动化技术引入架构设计、详细设计、代码编写等多个环节,并集成到统一的自动化开发工具平台中。 该平台将采用模块化设计和中间件技术,让各个自动化工具独立或协同工作,完成开发过程各阶段的自动化,实现真正的核电软件开发全流程自动化。 此外,核电软件自动化开发工具平台的采用,可以有效减少开发人员的重复性工作量,让他们更加关注程序业务逻辑的设计和优化,提高核电软件的开发效率和质量。 。
【图片说明】
[0010] 下面结合附图对本发明的【具体实施例】作进一步详细的说明,其中:
图1示出了根据本发明实施例的核电软件开发自动化系统的示意性框图。
图2所示为基于广度优先搜索的代码框架自动生成流程;
[0013] 图3示出了架构树的示例;
[0014] 图4示出了代码架构生成结果的示例;
图5所示为基于Vis1对象模型和COM接口的核电软件详细设计图差异自动比对流程;
图6显示了代码开发部门的示例框图;
图7为代码开发部门主要类及类关系示意图;
[0018] 图8示出了代码开发部门中输入元数据的示例; 和
[0019] 图9示出了基于图8的输入元数据自动生成变量定义代码的示例。
【详细方式】
[0020] 下面结合附图对本发明的优选实施例进行详细描述。 以下描述包括各种具体细节以帮助理解,但是这些具体细节应当仅作为示例性示出。 因此,本领域普通技术人员将认识到,在不脱离本公开的范围和精神的情况下,可以对本文描述的各种实施例进行各种改变和修改。 此外,为了清楚和简明起见,省略了公知功能和结构的描述。
[0021] 以下描述和权利要求中使用的术语和词语不限于它们的参考意义,而是仅由发明人使用以使得能够清楚且一致地理解本发明。 因此,本领域技术人员应当理解,以下对本发明的各种示例实施例的描述仅出于说明的目的而提供,并且不旨在限制由所附权利要求及其等同物限定的本发明。
[0022] 下面结合附图对本发明实施例进行详细说明。
[0023] 图1示出了根据本发明示例实施例的核电软件开发自动化系统1的示意性框图。 系统一包括:架构设计部门10,将核电软件架构抽象为树形数据结构,采用广度优先搜索遍历,自动生成代码框架。 详细设计部20,自动比较核电软件详细设计图的差异; 代码开发部30,接收输入数据,根据预定义的抽象定义模板自动生成并输出程序代码。
[0024] 架构设计部10将核电软件的架构抽象为包括多级节点的架构树,采用广度优先搜索从根节点开始遍历架构树的各级节点,生成从上到下一层一层的代码框架。 *后,生成一个完整的、可编译运行的代码框架。 代码框架包括程序预处理(Pre)、求解器()、后处理(Post)的顶层调用过程,并自动插入一些调试代码,如程序运行日志(Log)信息等,实现核电软件架构设计自动化。 由于架构设计自动化的采用,程序员可以更加专注于计算软件架构的设计和优化,然后基于架构树自动生成框架代码。 这将大大提高构建软件框架的效率,降低软件开发的缺陷率。
[0025] 详细设计部门20基于Vis1对象模型和COM接口技术,实现核电软件Vis1详细设计图差异的自动比较,可以帮助设计者提高设计变更的效率。 在详细设计过程中,不可避免的设计变更可能会导致协同开发时因设计图版本不一致而导致设计变更被覆盖,降低开发效率。 采用本发明的技术后,开发人员可以快速发现不同版本的程序设计图之间的差异,有效合并设计变更,保证设计的一致性,同时减轻开发人员的负担。
代码开发部分30包括:数据层,根据输入数据提供设计图中的变量定义元数据。 业务层,包括代码生成引擎、代码生成器和生成策略,生成策略描述了代码生成规则的抽象定义模板,代码生成引擎根据生成策略调用代码生成器,代码生成器利用数据层提供的元数据,根据抽象定义模板生成程序代码; 表现层与用户进行交互,表现层包括事件监听组件和显示策略。 事件监听组件收集用户的代码生成需求,传递给业务层进行代码生成。 显示策略控制代码生成结果的呈现。 代码开发部门30还可以包括数据采集模块,用于记录代码开发部门的操作行为,并生成日志文件,以方便用户调试和错误检查。 利用代码开发部门,将大量需要开发人员手动编写的繁琐、重复的代码转化为计算机自动生成,大大提高了代码开发的效率。 同时,由于程序代码是基于模板自动生成的,因此能够更好地满足编程规范在编码风格和编码一致性方面的要求,从而从质量保证的角度保证了软件的高可靠性。 另外,当软件设计图发生变化时,代码开发人员无需手动修改已经编写好的程序代码。 他们只需要根据改变的设计图重新生成新的代码来覆盖原来的代码,从而避免了开发效率的降低和引入人为错误。
图2示出了可应用于架构设计部门10的基于广度优先搜索的代码框架自动生成流程的示例,具体描述如下:
[0028] (1)首先扫描架构树根节点,生成计算程序入口;
[0029] (2)判断根节点是否包含子节点;
[0030] (3)如果根节点没有子节点,则算法结束,直接退出;
[0031] (4)如果根节点包含子节点,则使用广度优先搜索(BFS)遍历架构树的下一级子节点(例如**级子节点),建立顶层子节点。代码的层次框架,并生成相应的源文件;
[0032] (5)确定架构树遍历到的*后一个叶子节点;
[0033] (6)如果没有遍历完架构树的*后一个叶子节点,则使用BFS继续循环架构树的下一级子节点(例如第二级子节点),以此类推,生成各个程序的层次化框架代码;
[0034] (7)若遍历完架构树的*后一个叶子节点,则遍历结束,生成完整的代码框架。
算法退出。
[0035] 图3以程序代码为例示出了核电软件的架构树的示例。 如图 3 所示,架构树包含三层节点。 首先扫描架构树的根节点LATC,生成程序入口主函数LATC。 然后扫描架构树的I级子节点,生成程序的顶层代码框架O、O和post()。 遍历完I级子节点后,再遍历架构树的2级子节点。 2级子节点是顶层代码帧。 包含子程序。 这里,I级子节点pre下包含的2级子节点包括读取用户输入文件O、读取多组断面数据库O、用户输入检查O、网格设置O、常数计算O等。 .; I级子节点包含的2级子节点为共振计算O,棚。 元素均匀化O、成分均匀化O、油耗计算O等; I级子节点post包含的二级子节点输出处理O。扫描架构树的节点后,发现已经遍历完架构树的*后一个叶子节点,代码架构生成完成。 图 4 显示了代码架构生成结果的示例。
[0036] 下面将参照图2详细描述详细设计部分20。 5. 如图5所示,详细设计部门20对核电软件Vis1的详细设计图进行自动差异比较。 流程如下:
(1)首先读入要对比的两张Vis1详细设计图;
[0038] (2)调用COM接口分别生成两个设计文件的Shape对象集合(记为A和B)。 对象集中的每个Shape对象都包含了设计图中对应图形的所有属性信息;
[0039] (3)判断A或B对象集合是否为空;
[0040] (4)若任意对象集合为空,则算法结束并直接退出;
[0041] (5)如果对象集合不为空,则从对象集合A中依次取出Shape对象,并与对象集合B中的同名对象进行属性比较;
[0042] (6)如果没有属性差异,则表示两个Shape对象完全相同,没有设计改变。 流程进行至(8);
[0043] (7)若存在属性差异,则记录Shape对象属性差异信息,并进入⑶;
[0044] (8)判断对象集合A是否为空。 如果为空,则处理进行至(9)。 如果不为空,则流程返回
(5);
[0045] (9)完成所有Shape对象属性比较后,输出设计文件Shape对象属性差异信息,即两张Vis1详细设计图的差异信息,算法结束。
[0046] 利用记录的Shape对象属性差异信息,开发者可以快速发现不同版本的程序设计图之间的差异,并有效地合并设计变更。
[0047] 下面参考图2至图4详细描述代码开发部分30。 6和7。
[0048] 图6示出了代码开发部门30的架构图,具体包括表示层(View Layer)、业务层(Layer)和数据层(Data Layer)。 数据层代表代码生成器的输入。 例如,代码生成器会从数据层获取核心物理编程图中的变量定义元数据,为代码生成准备数据。 业务层以代码生成器(Code)为核心,例如利用数据层提供的设计元数据,根据预定义的代码抽象定义模板生成代码,实现代码生成逻辑。 业务层的代码生成引擎(CG)负责根据生成策略()调用代码生成器()。 生成策略是描述代码生成规则的抽象定义模板。 表示层负责与用户交互,将代码生成结果呈现给用户。 表示层的事件监听(Event)组件负责收集用户的代码生成需求,并传递给业务层进行代码生成。 显示策略(Show)负责控制代码生成结果的呈现,以提供更好的用户体验。 数据采集模块负责记录生成器的运行行为并生成日志文件,以方便调试和错误检查。
[0049] 图7示出了代码开发部门中主要类及类关系的示意图。 图7中完成了表示层和数据层的双重功能,负责接收用户输入的元数据,并将代码生成结果呈现给用户。 并共同完成代码生成的业务层功能,直接调用完成CG的角色。 然后调用完成实际的代码生成函数,这里完成Code的功能。 另外,为了实现代码的复用性,将一些常见的字符串操作封装成类,比如去掉字符串中的所有空格、替换字符串中的全角等号、获取字符串中的中英文、是否match是一个数字等等,这样就可以在需要的地方直接调用。
[0050] 图8示出了在核电软件的代码开发部门中输入元数据的示例。 图 9 显示了根据图 8 中的输入元数据自动生成变量定义代码的示例。
[0051] 以上描述了根据本发明示例实施例的核电软件开发自动化系统。 根据本发明实施例,还提出了一种核电软件开发自动化方法,包括:架构设计步骤,将核电软件架构抽象为树形数据结构,采用广度优先搜索进行遍历,自动生成代码框架; 详细设计步骤,对核电软件详细设计图差异进行自动对比; 和代码开发步骤,接收输入数据,并根据预定义的抽象定义模板自动生成和输出程序代码。
[0052] 在一个优选实施例中,在架构设计步骤中,将核电软件的架构抽象为包括多级节点的架构树,并采用广度优先搜索的方式遍历核电软件的各级节点。架构树从根节点开始,从上到下。 一层层生成代码框架,*终生成一个完整的可以编译运行的代码框架。
[0053] 在本实施例中,在制作代码框架时IBM公司软件架构设计自动化程序框架代码生成器专利,程序预处理、求解器、后处理的顶层调用过程包含在代码框架中,并自动插入部分调试代码。
[0054] 在一个优选实施例中,在详细设计步骤中,基于Vis1对象模型和COM接口技术,对核电软件Vis1详细设计图的差异进行自动比对,以发现核电软件Vis1详细设计图之间的差异。不同版本的程序设计图。
[0055] 在一个示例实施例中,代码开发步骤包括:根据输入数据在设计图中提供变量定义元数据; 根据生成策略调用代码生成器,代码生成器利用数据层提供的元数据,根据抽象定义模板生成程序代码,其中生成策略描述了抽象定义的代码生成规则模板。
[0056] 在一种可能的实施方式中,所述代码开发步骤还包括:与用户进行交互,包括收集用户的代码生成需求,以及控制代码生成结果的呈现。
[0057] 在一种可能的实施方式中,所述代码开发步骤还包括:记录代码开发部门的操作行为,并生成日志文件,以方便用户调试和错误检查。
[0058] 以上详细描述已经通过使用示意图、流程图和/或示例解释了根据本发明实施例的核电软件开发自动化系统和方法的实施例。 当这样的图、流程图和/或示例包括一个或多个功能和/或操作时,本领域技术人员将理解,这样的图、流程图或示例中的每个功能和/或操作可以单独地和/或联合地实现各种结构、硬件、软件、固件或基本上它们的任意组合。 本领域技术人员将认识到自动化软件开发,本文公开的实施例的一些方面可以全部或部分等效地在集成电路中实现为在一台或多台计算机上运行的一个或多个计算机程序。 (例如,实现为在一个或多个计算机系统上运行的一个或多个程序)、实现为固件、或者基本上实现为上述的任意组合,并且本领域技术人员将具有设计电路和/或编写软件和/或固件代码的能力。 此外,本领域技术人员将认识到,本公开的主题的机制可以作为多种形式的程序产品来分发,并且无论实际用于执行该操作的信号承载介质的具体类型如何。分布,本公开的主题的机制可以适用于示例性实施例。 信号承载介质的示例包括但不限于:可记录介质,例如软盘、硬盘驱动器、光盘(CD)、数字多功能盘(DVD)、数字磁带、计算机存储器等; 传输型媒体,例如数字和/或模拟通信媒体(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。
[0059] 虽然已经参考若干示例性实施例描述了本发明,但是应当理解,所使用的术语是说明性和示例性的而不是限制性的。 由于在不脱离本发明的精神或实质的情况下可以以各种形式实施本发明,因此应当理解,上述实施例不限于任何前述细节,而是应在精神和范围内广泛地解释。由所附权利要求书限定。 因此,落入权利要求或其等同物的范围内的所有变化和修改均应由所附权利要求覆盖。
[主权项目]
1、一种核电软件开发自动化系统,包括: 架构设计部门,将核电软件架构抽象为树形数据结构,采用广度优先搜索遍历,自动生成代码框架; 详细设计部门,进行核电详细设计图软件自动比较差异; 代码开发部门,接收输入数据,根据预先定义的抽象定义模板自动生成并输出程序代码。 2.根据权利要求1所述的系统,其特征在于,所述架构设计部门将所述核电软件的架构抽象为包含多级节点的架构树,并采用广度优先搜索的方式遍历所述架构树的各级节点,从从根节点开始,从上到下。 一层层生成代码框架,*终生成一个完整的可以编译运行的代码框架。 3.根据权利要求2所述的系统,其特征在于,所述代码框架包括程序预处理、求解器和后处理的顶层调用过程,并自动插入部分调试代码。 4.根据权利要求1所述的系统,其特征在于,所述详细设计部门基于Vis1对象模型和COM接口技术,对核电软件Vis1详细设计图差异进行自动比较,以发现不同版本程序设计图之间的差异。 5.根据权利要求1所述的系统,其特征在于,所述代码开发部门包括: 数据层,根据所述输入数据提供所述设计图中的变量定义元数据; 业务层,包括代码生成引擎、代码生成器和生成策略,其中,生成策略描述了代码生成规则的抽象定义模板。 代码生成引擎根据生成策略调用代码生成器。 代码生成器利用数据层提供的元数据根据抽象定义模板生成程序代码; 表现层与用户进行交互。 ,展现层包括事件监听组件和展示策略,其中事件监听组件收集用户的代码生成需求并传递给业务层进行代码生成,展示策略控制代码生成结果的展示。
6.根据权利要求5所述的系统,其特征在于,所述代码开发部门还包括: 数据采集模块,用于记录所述代码开发部门的操作行为,并生成日志文件,以方便用户调试和错误检查。 7、一种核电软件开发自动化方法,包括: 架构设计步骤,将核电软件架构抽象为树形数据结构,采用广度优先搜索遍历,自动生成代码框架; 详细设计步骤,自动比较核电软件详细设计图纸的差异; 和代码开发步骤,接收输入数据,并根据预定义的抽象定义模板自动生成和输出程序代码。 8. The to claim 7, in the step, the of the power is into an tree multi-level nodes, and a -first is used to the nodes at all of the tree from the root node. The code is layer by layer from top to , and a code that can be and run is . 9. The to claim 8, when the code frame, the top-level of , , and post- is in the code frame, and part of the code is . 10. The to claim 7, in the step, based on the Vis1 model and COM , an of in the of the power Vis1 is to the of . 11. The of claim 7, the code step : in the to the input data; and a code to the , the code the by the data layer, code based on an , where the the of the code rules. 12. The to claim 11, the code step : with the user, the user's code , and the of the code . 13. The to claim 11, the code step : the of the code and log files to user and error .
【 】G06F9/
【 date】 5, 2016
【 Date】 11, 2015
[] Mo , Zhao Guang, Liu Shuo, Ren Hao, Ren
[] State Power () of and Co., Ltd.
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等