欢迎来到学术参考网

浅析代码自动生成器技术

发布时间:2015-09-18 13:42

摘 要:本文通过对代码自动生成器功能的介绍、原理的探究及其支持的架构模式的详细论述,完整地向读者展示了代码自动生成器这项技术的本质及应用。

关键词:代码自动生成器;数据解析;架构

  在软件工程发展过程中,计算机科学家为了降低软件开发强度、缩短开发周期、减少代码的重复书写、减轻后期测试及维护上的负担,一直以来都致力于代码自动生成方面的研究。
一、代码自动生成器的原理
  代码自动生成器是通过读取工程的元数据,按照指定的设计模式,混合产生出规范的源代码,系统结构图见图1。它利用SQL Server引擎支持,根据用户指定,自动提取数据库信息,包括数据字段、类型、主键、引用及描述等,根据需要可生成数据库设计说明书、sql脚本,结合xsl模板生成所需要的代码。

  图1中代码自动生成系统结构图
  在上面结构图中,数据库是由用户自已根据需求分析的结果进行手工处理的,用户可以使用诸如Sybase公司的PowerDesigner或IBM公司的Rational等建模工具进行处理,当然也可以手工生成,笔者建议用户使用建模工具进行数据库的构造,以便于后期当需求发生变更后数据库的修改与维护。数据解析模块根据已生成的数据库自动提取数据库相关信息,并以xml格式存储。代码自动生成模块根据上一阶段提取获得的基础数据信息,结合xls模块生成标准的数据实体层、业务逻辑层、数据访问层等,简单表示层与简单架构独立于以上自动获取的数据。
二、 代码自动生成器的功能
  按照Jack Herrington的说法,代码生成并不是一项最新的技术,它是软件工程技术的延续和发展。
  代码自动生成器可以生成三层架构的代码。如果采用类似petshop的架构,则代码生成效率更高。它可以生成实体类、数据访问层、接口层、类工厂及简单的业务逻辑层,因此可以节省大量的时间,从而让程序员有更多的时间来做业务逻辑的代码,而那些重复的代码则可以直接交给代码生成器去做。
  归纳代码自动生成器的功能,可以总结如下:
1、 自动生成属性注释;
2、 自由设定命名空间和实体类名;
3、 免费提供数据库访问,页面数据校验等基础类库及封装类库源码。自己可以对其进行修改以满足自己的需要;
4、 支持不同类型数据层的生成;
5、 生成的代码在逻辑上和物理上是独立和完整的,能够很好的支持变更;
6、 支持选择不同架构代码生成:简单基本三层结构;基于工厂模式+反射机制+缓存机制的复合结构;自定义结构模版;
7、 可以生成增加、显示等页面主体Html代码和后台.cs处理代码;
8、 支持对多种类型数据库生成代码:如SQL Server 、Oracle、OLEDB等。
三、代码自动生成器支持的架构模式
  代码自动生成器支持简单的三层架构。这里所说的简单的三层架构是指由实体类层、数据存取类层及业务逻辑类层所组成的简化三层架构,以下分别讨论三个层次的内涵及代码自动生成器生成过程。
  业务逻辑类层是一个信息管理系统的核心层次,不同的业务类别、不同的业务需求需要不同的业务逻辑类,这里,代码自动生成器所生成的业务逻辑类层只包含了针对实体类操作的最基本的业务逻辑类。比如,在学生信息管理系统中有一个学生成绩实体类Score,则通过代码自动生成器可以生成其对应的增加成绩、更新成绩、删除成绩及获得成绩列表等基本的业务逻辑。
  企业信息系统的信息存储往往是基于永久性的存储,在数据库设计阶段所产生的数据库则对应于该三层架构中的实体类层,每一个数据表对应于实体类层中的一个实体类。在生成实体类的过程中,存在着许多重复性的编码工作,当信息系统的规模相对较大时,一个数据库的数据表的数量少则有几十个,多则可能达到几百个,这时如果完全依赖手工去完成实体类的建造,一方面会浪费大量的人力物力,进而会影响到项目的总体进度;另一方面增加了代码编写出现错误的几率,加大了单元测试阶段的工作量。而代码自动生成器对于实体类的生成则具有极高的效率和准确率。
  数据访问类是与实体类及业务逻辑类既密切相关又互相独立的又一个层次。对于整个架构来说,实体类层处于整个架构的最底层,为其他层提供可以操作的基本实体准备,是其他层的基础,它们的引用关系是从上至下的
  具体到数据访问层,它既提供了对实体类层进行数据操作的一组行为,又为业务逻辑类的公共方法的实现提供了基础,因此,它的作用是承上启下的。代码自动生成器在根据实体类生成数据访问类的时候,可以根据需要自由选择基于SQL语句、基于Parameter参数或基于存储过程的生成方式,
四、结束语
  当前,国内外对代码自动生成技术的研究正方兴未艾,有关代码自动生成领域的研究深度及广度还在进一步加强,这一技术不只是软件复用及构件技术的简单延伸,随着软件工程学的进一步发展及软件开发规模的不断增长,对代码自动生成的研究必将会发展成为一个独立的专门学科,丰富并促进软件工程学的进一步发展。
参考文献:
计算机应用与软件,2008,11

上一篇:中小企业发展电子商务模式初探

下一篇:中文文本分类系统构架设计