单一性语言的代码自动生成方法与流程

文档序号:12469510阅读:288来源:国知局

本发明涉及计算机程序的代码自动生成方法,具体的讲是针对单一性语言的代码自动生成方法。



背景技术:

目前软件系统的过程通常是由开发人员先构建数据库,在数据库的构建中会涉及到多个表的字段、索引、约束等,在根据数据库编写数据访问程序、控制程序、界面程序等代码。在这个过程中,需要开发人员从底层一只开发到最上层,如果在开发中发现数据库设计不合理,或其它任何原因需要对数据库字段的新增、修改和删除,都需要重新进行代码的制作,从而使得在代码生成过程中,需要过多的人工参与以及需要大量的时间和人力进行重复性的代码工作。

技术中虽然也有一些代码生成软件,一种是针对某一种特定的系统进行开发的,但通常一般只涉及到程序开发过程中的一个局部,专门的数据库增、删、改、查代码或脚本生成软件。另一种是具有跨平台跨语言的通用性代码生成软件,而“通用性”和“功能性”是两个相互排斥的属性,强调“通用型”的代码生成软件,功能必然不强大,因为不同的平台或语言,越往上面的应用层、越往细节深入,其区别就越大,例如UI界面的应用相对于数据库层和逻辑层要复杂得多,其生成的控制代码的逻辑也必然更加复杂、工作量更大,通用化的平台难以实现跨平台的很复杂的功能。并且,不同平台或语言的工程文件的结构是完全不同的,通用性的代码生成软件不能够和具体的工程结构绑定起来,因此通常只能生成一小部分代码,并且在生成代码后需要人工将生成的代码复制到相应的工程文件中,明显这样降低了代码自动生成的效率。

因此,无论目前哪种形式的代码自动生成软件,都不能够完全实现从系统的底层到界面的完整代码自动生成,都需要过多的人工参与以及大量的时间和人力进行重复性的代码编写工作。



技术实现要素:

本发明提供了一种单一性语言的代码自动生成方法,可针对某一种语言自动生成从底层到界面的所有代码,以大幅度减少人工劳动量和开发时间。

本发明单一性语言的代码自动生成方法,步骤包括:

A.生成后台代码:

A1.建立节点模型:根据界面输入内容,定义各节点模型包含的字段;

A2.建立树形模型:根据数据流的逻辑关系,定义各节点模型的横向和纵向的关联,形成至少一个由节点模型构成的树形模型。所述的横向关联指的是无从属关系的不同节点模型之间的关联,纵向关联指的是父节点-子节点之间的关联;

A3.生成代码:根据所述的树形模型,按照程序语言的语法和语义自动生成数据库表和与所述数据库表对应的代码,所述代码还与所述节点模型相对应,例如在Java系统中,每个节点模型对应生成一个Class类,并且各代码之间的关联与所述树形模型一致;

B.生成前台代码:

B1.根据界面输入内容,定义所述各节点模型的界面应用场景,所述的界面应用场景除了定义节点模型的数据在界面上以哪种方式显示外,还定义出了在显示时对该数据的控制逻辑、与其它数据间的相互关系等这些数据操作的方式。例如:“物流托运单”是一个父节点模型,“托运货物”是这个“物流托运单”的子节点模型。当定义该子节点模型的应用场景为“嵌入列表-可编辑”时,则表明了“托运货物”的数据在界面上面的显示方式为嵌入式的列表视图,嵌入到它的父节点“物流托运单”的编辑视图里面。并且对“托运货物”的数据在界面上面还有“可编辑”的控制逻辑:可以在“物流托运单”的编辑视图里面通过“新增”按钮新增托运货物的数据、通过“删除”按钮删除托运货物的数据、通过“编辑”按钮编辑物流货物的数据。同时,这种节点模型在界面上的显示方式和控制逻辑也能够体现“物流托运单”和“托运货物”这两个数据节点的父子关系,呈现1:N关系;

B2.根据各节点模型,自动生成与之关联的界面模型,所述界面模型中至少包括与数据模型对应的字段。

B3.根据步骤B1和B2,按照程序语言的语法和语义自动生成至少包括界面代码的前台代码,例如HTML脚本、JSP脚本等。

所述的各类“模型”均指的是数据模型,通过数据模型表达了需要展示哪些数据。数据模型是用于对一系列数据特征进行描述,是用户用于存放数据而定义的数据结构,数据模型通常包括了数据字段、数据操作、数据约束等部分。通过数据模型来定义软件系统中的各个节点,并且将这些节点按照相互间的关联性组成一个或多个树形结构,就可以完整的描述整个系统。

在节点类型的数据模型中包含了相应的字段等,通过人工界面输入定义这些字段和节点模型,并且将所有的节点模型按照应用的逻辑关系组成一个或多个树形关系的模型,通过各树形模型就能够完整的表示出整个系统的逻辑关系了。最后按照树形模型和相应的程序语言语法、语义生成和节点模型对应的、和树形模型关系一致的代码。由于节点模型是各个功能的体现,因此需要通过设置每个节点模型的应用场景,例如表格显示、文本显示、树形展示、编辑视图展示,和可以对节点数据有哪些操作等,来表示出各节点模型的是怎样应用的。通过节点模型生成界面模型,界面模型是用于生成界面的,是将所述节点模型的应用场景实现的作用,最后由界面模型生成界面代码,将节点模型的数据显示出来。后台代码在获取数据时,是根据树形模型中各节点模型的横向/纵向关系获取数据,因此树形模型是整个自动生成的核心。

由于本发明的代码自动生成方法是针对单一性语言的,因此可以完全按照一种语言的语法和语义,用所述的树形模型完整的从底层到界面的代码自动生成,除了在定义节点模型的字段、关系和应用场景需要人工输入外,代码的生成过程基本不需要人工的参与即可完成系统的开发工作,极大程度降低了人工劳动强度,相比传统的开发方式提高了数十倍的开发效率。

虽然在B2步骤中能够根据各节点模型,自动生成与之关联的界面模型,但通常节点模型为了扩展的需要,会冗余定义一些字段,那这些字段在正常情况下界面模型并不需要,因此在生成界面模型后,可以根据界面显示的需要人工修改界面模型中的字段,例如删除冗余字段等操作。

进一步的,按照目前一般软件系统的架构,例如MVC等架构,从数据底层到界面应用层之间共有3层或更多的功能层划分,因此通常在步骤A3中所述与数据库表对应的代码,包括数据库配置文件和调用数据库的程序代码,例如hibernate的hbm.xml配置映射文件和Java的DAO代码等。

根据系统架构的细分,所述调用数据库的程序代码还可以包括直接调用数据库的代码和逻辑代码。例如Java的DAO代码属于直接调用数据库代码,Manager代码则属于逻辑代码,Manager是接收更高层的输入调用DAO代码的。

为了使界面具有美观性和部分功能性,步骤B3生成的前台代码还包括界面脚本代码,例如CSS文件、Javascript文件等。这些脚本文件可以根据节点模型中的设定字段、样式等参数自动生成。

进一步的,步骤B3生成的前台代码还包括向界面和与该界面关联的后台代码双向传输数据的控制代码,例如Java系统中的Controller类代码。这类代码是连接界面和后台程序的,能够接收界面输入并调用后台对应的代码。

可选的,在步骤B3生成的前台代码中还可以包括可调用后台代码的测试用例。根据界面模型的功能和后台代码,自动生成与之对应的测试用例,能够更方便对系统进行测试。

由于各节点之间构成了树形结构关联关系,为了使数据信息传递更加方便,步骤A3生成的代码可根据树形模型中节点模型的关联关系,在各节点模型之间双向数据传递。即每个节点模型生成的代码(例如Java系统中的方法)可通过继承等方式获得父节点的所有字段或方法信息,同时也可以通过遍历等方式获得其所有子节点的信息,由此形成一个庞大的数据网络,任何一个节点都可方便的获得其它节点的信息。

在此基础上,为了更加方便的使界面模型和节点模型相互对应,便于代码自动生成并且易于理解维护,优选的是默认界面模型中字段的名称和类型与对应的节点模型中字段的名称和类型相同,节点模型直接按照定义的字段生成界面模型的字段。当然,也可以根据实际情况进行人工修改和相应的配置。

通过测试得知,本发明的方法能够极大程度提高软件系统开发的效率,可以自动化生成95%左右的代码,节约近90%的开发时间。开发人员不需要从头开发代码,只需对生成的代码做少量的调试即可完成开发工作。同时也大幅度降低了软件系统的开发成本,一个开发人员即可完成传统一个团队完成的工作,例如用传统方式将整个后台开发出来需要花一周的时间,通过本发明只需要2到3个小时,提高了数十倍的效率。由于代码是自动生成的,因此所有代码有着极低的错误率,理论上错误概率可以降低到0。

以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。

附图说明

图1为本发明单一性语言的代码自动生成方法的流程图。

具体实施方式

实施例1:

如图1所示,本发明单一性语言的代码自动生成方法,以Java语言为例,步骤有:

A.生成后台代码:

A1.建立节点模型:每个节点模型都与一个Class类对应。根据界面输入内容,定义各节点模型包含的字段,包括字段名称、字段类型等;

A2.建立树形模型:根据数据流的逻辑关系,定义各节点模型的横向和纵向的关联,形成至少一个由节点模型构成的树形模型。所述的横向关联指的是无从属关系的不同节点模型之间的关联,纵向关联指的是父节点-子节点之间的关联;并且设置各节点模型都可根据树形模型中节点模型的关联关系,在各节点模型之间双向数据传递;

A3.生成代码:根据所述的树形模型,按照Java语言的语法和语义自动生成数据库表和与所述数据库表对应的代码,所述代码还与所述节点模型相对应,每个节点模型对应生成一个Class类,并且各代码之间的关联与所述树形模型一致。按照目前一般软件系统的架构,从数据底层到界面应用层之间共有3层或更多的功能层划分,因此所述与数据库表对应的代码,包括了如hibernate的hbm.xml配置映射等配置文件,以及调用数据库的DAO代码和调用DAO代码的Manager代码。该步骤根据节点模型生成的所有Class类都可根据树形模型中节点模型的关联关系,通过继承等方式获得父节点的所有字段或方法信息,同时也可以通过遍历等方式获得其所有子节点的信息。

B.生成前台代码:

B1.根据界面输入内容,定义所述各节点模型的界面应用场景,例如表格显示、文本显示、树形展示、编辑视图展示等,表示出各节点模型在界面上是怎样应用的。界面应用场景定义了节点模型的数据在界面上以哪种方式显示,还定义出了在显示时对该数据的控制逻辑以及与其它数据间的相互关系等这些数据操作的方式。例如:“物流托运单”是一个父节点模型,“托运货物”是这个“物流托运单”的子节点模型。当定义该子节点模型的应用场景为“嵌入列表-可编辑”时,则表明了“托运货物”的数据在界面上面的显示方式为嵌入式的列表视图,嵌入到它的父节点“物流托运单”的编辑视图里面。并且对“托运货物”的数据在界面上面还有“可编辑”的控制逻辑:可以在“物流托运单”的编辑视图里面通过“新增”按钮新增托运货物的数据、通过“删除”按钮删除托运货物的数据、通过“编辑”按钮编辑物流货物的数据。同时,这种节点模型在界面上的显示方式和控制逻辑也能够体现“物流托运单”和“托运货物”这两个数据节点的父子关系,呈现1:N关系。

B2.根据各节点模型,自动生成与之关联的界面模型,所述界面模型中至少包括与数据模型对应的字段,并且默认界面模型中字段的名称和类型与对应的节点模型中字段的名称和类型相同,节点模型按照定义的字段直接生成界面模型的字段。也可以根据实际情况进行人工修改和相应的配置。然后根据界面显示的需要人工删除界面模型中的冗余字段。

B3.根据步骤B1和B2,按照程序语言的语法和语义自动生成至少包括界面代码的前台代码,例如HTML脚本、JSP脚本等。同时,还根据节点模型中的设定字段、样式等参数自动生成CSS、Javascript等界面脚本代码,以及向界面和与该界面关联的后台代码双向传输数据的Controller类控制代码。

实施例2:

在实施例1的基础上,在步骤B3生成的前台代码中还可以包括可调用后台代码的测试用例,包括通过各种功能或逻辑对数据库的增、删、改、查操作是否正确等。根据界面模型的功能和后台代码,自动生成与之对应的测试用例,能够更方便对系统进行测试。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1