win7 3d桌面-遇到问题需要关闭

动软代码生成器
2023年4月6日发(作者:冰点还原精灵中文破解版)

百度文库-让每个人平等地提升自我

I

百度文库-让每个人平等地提升自我

II

摘要

百度文库-让每个人平等地提升自我

III

为了满足软件工业化生产的需要,缩短系统的开发周期,目前国内外很多科

研机构、跨国公司如IBM等都开始从事代码自动生成方面的研究,并开发出了

各种各样的代码生成工具,以此来降低软件开发维护成本、提高开发效率、减小

需求变更对系统的影响以及延长系统的生命周期。本文通过对现有的国内外相关

代码自动生成工具进行了较为深入的研究,通过对自动生成工具的调查统计和比

较分析,指出了现阶段代码生成器的应用领域及未来发展前景。

关键词:代码生成器;应用领域;发展前景

百度文库-让每个人平等地提升自我

IV

Theinvestigationand

analysisforCodeGeneration

ChenHui

(SchoolofEconomics&Management)

Abstract

Manyinstitutesandmultinationalshavebeguntodotheresearchaboutthecode

generatorinordertomeettherequirementoftheindustrializationprocessofsoftware

vecompletedmanykindsof

toolswhichareusedtogeneratecodestoreducecosts,enhanceefficiency,minimize

theimpactofchangingrequirementsonthewholesystem,andextendthelifetimeof

ingtothecomparisonandanalysisamongthecriterionsof

componentandthetools,thepaperdescribestheapplicationforthecodegeneratorin

thedevelopment.

Keywords:CodeAuto-GenerationTools;Application;Development

百度文库-让每个人平等地提升自我

I

目录

摘要.............................................................................................................................................II

关键词............................................................................................................................................III

Abstract...........................................................................................................................................IV

引言................................................................................................................................................1

一、代码生成技术的基本概念与原理...........................................................................................1

(一)技术背景及问题的提出...............................................................................................1

(二)代码生成器的概念表述...............................................................................................4

(三)代码生成机理...............................................................................................................4

(四)代码生成技术的优势与劣势分析...............................................................................6

二、代码生成器的分类与应用领域...............................................................................................8

(一)代码生成的分类...........................................................................................................8

(二)代码生成器的应用领域.............................................................................................10

三、代码生成器的应用...............................................................................................................11

(一)数据库结构自动生成.................................................................................................11

(二)机械CAD图库标准件代码生成.............................................................................11

(三)WebServices代码生成器..........................................................................................12

四、代码生成工具的比较分析...................................................................................................12

(一)Codematic--动软.Net代码生成器.............................................................................12

(二)SmartCode代码生成器............................................................................................14

(三)CodeSmith代码生成器............................................................................................15

(四)三种代码生成器的比较.............................................................................................16

五、结论.........................................................................................................................................17

参考文献.........................................................................................................................................19

谢辞..............................................................................................................................................21

百度文库-让每个人平等地提升自我

1

引言

伴随着网络的迅猛发展,企业级分布式开发逐渐成为开发市场的主流。因此,

在企业级开发中,分布式开发带来了企业端设计模式和实践模式的激增。越来越

多设计模式的使用可以使代码更健壮和缩短进入市场的时间。同时,开发者只需

要专注于应用系统的一部分,系统服务留给服务器提供商来实现。

由于编写企业级代码涉及许多重复性工作,程序员成为了高度脑力劳动和繁

琐的体力劳动的矛盾混合体,重复的代码的编写工作是一件繁琐的体力劳动。为

实现一个应用系统,程序员必须不断的重复处理大量的相同与类似代码。但是一

旦这个工程结束,程序员必须在下一个工程上重复这些工作。代码生成器的使用

可以将企业级软件以最快的速度推向市场。这就是代码生成器引入的原因,它可

以自动完成这些重复的繁琐编码工作。在软件工程的发展过程中,计算机科学家

们为了降低软件开发的强度,缩短开发周期,减少代码的重复书写,从而减轻程

序员的编码负担,一直以来都致力于代码自动生成方面的研究。

本文通过对现有的各种组件标准规范与国内外相关代码自动生成工具进行

了较为深入的研究,通过对自动生成工具进行的调查统计和比较分析,指出了现

阶段代码生成器的应用领域及未来发展前景。

一、代码生成技术的基本概念与原理

(一)技术背景及问题的提出

人们利用计算机软件与硬件实现办公自动化、管理自动化的同时,也在考虑

程序代码的自动生成。软件自动生成是人类软件开发由手工作坊到半自动化,再

到工业化的历程发展的必然趋势。

百度文库-让每个人平等地提升自我

2

在软件工程发展过程中,计算机科学家为了降低软件开发得强度,缩短开发

周期,减少代码的重复书写,从而减轻程序员的编程负担,一直以来都致力于代

码自动生成方面的研究。Lex/Yacc是最早用于自动化编写编译程序的工具①。随

着现代化信息环境日趋复杂,各种应用软件的开发难度随之加大,这需要更有技

巧,更有方法地从事软件开发,开发团队之间也必须更无障碍地沟通,否则极可

能无法在有限的开发时间中完成任务。由于时间上的压力,一般人只注重程序的

编写速度,却忽略其完成后的实用性与维护性,加上大型程序多人共同参与开发,

每个人都有各自的程序风格,容易造成严重的差异性。随着系统规模越来越大,

这将造成系统完成后在测试及维护上沉重的负担,代码自动生成技术更显出了其

显著的优越性。尽管这些应用没有代码生成工具也能开发完成,但利用代码生成

技术可以大大加速软件的开发进度,提高软件的质量。

从程序设计方法的发展和软件环境的变化两个方面来看,并结合软件技术的

发展历程,我们可以看出,软件变得越来越庞大和复杂,随着软件系统的复杂程

度的提高,系统的开发周期越来越长,开发难度与后期维护成本等也越来越大。

传统软件开发方式的通常效率低下而且周期很长。数字表明②,50%的大型软件

项目都会中途夭折。大型项目平均都要推迟一年以上的工期,成本要超出计划的

一倍,而性能却比预期的要低得多。主要因素如下:

(1)新技术的发展太快。自80年代末以来,新技术的发展有点应接不暇,往

往在一个系统尚未开发完时,其采用的技术就己经过时了。

(2)业务需求的变化太快。由于激烈的市场竞争,迫使企业要更快地重新修

①吴桂洋.支持代码生成的体系结构描述语言[J].计算机工程与应用,2006(7):54-57

②nerationinAction[M].NewYork:Manning

publications,July1,2003:21-24

百度文库-让每个人平等地提升自我

3

改其业务规则。往往在一个系统开发完、投入运行之前,该系统的功能已经满足

不了企业当前的需求。

(3)软件开发人员跳槽频繁。在软件行业通常存在一种2y1(2year'sloyalty)现

象,即在一个软件企业工作2年后,一个软件开发人员就可能会离去到另一家公

司工作。而由别人来接手离去人员未完成的软件开发工作,往往很困难,造成上

期拖延、成本上升,甚至项目失败。

虽然软件生产的理论和实践近年来己有巨大进展,各软件企业仍为贯彻软件

工程的基本原则而奋斗着。软件开发仍然是手艺活,软件产品依然是工艺品。软

件产业还不是一个成熟的产业。

软件构件和代码自动生成技术的出现,为根本改善目前软件生产高成本、低

效率的状况,为实现软件由作坊式生产向工业化生产的飞跃,带来了机会。目前,

代码自动生成技术成为了软件开发研究的重点,被视为解决软件危机,提高软件

生产效率和质量的现实可行的途径。

代码自动生成的出发点是应用系统的开发不再采用一切“从零开始”的模式,

而是以己有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如

需求分析结果、设计方案、源代码、测试计划及测试案例等,从而将开发的重点

集中于应用的特有构成成分。通过代码自动生成,在应用系统开发中可以充分地

利用已有的开发成果,消除了在分析、设计、编码、测试等方面的许多重复性劳

动,可以提高软件开发的效率;同时,通过代码自动生成已有的开发成果,避免了

重新开发可能引入的错误,可以提高软件的质量。因此,代码自动生成可以大大

降低软件开发的费用,并显著地提高软件的生产率和产品质量。是软件工程走向

成熟的必由之路,将为软件危机的解决提供一条现实可行的途径。

百度文库-让每个人平等地提升自我

4

(二)代码生成器的概念表述

关于代码生成器的概念有以下几种表述:

(1)从数据的输入输出角度看,代码生成器是一种程序的元数据驱动的软

件,它的输入是程序的元数据,输出为程序代码。代码生成器可以大大提高软件

的开发效率,降低开发成本。③

(2)从软件开发角度看,所谓代码生成技术,即在开发应用软件之前,先设计

一个程序,用它来自动生成目标程序的代码。随着应用程序开发环境的日益复杂,

如Java2EnterpriseEdition(J2EE)以及微软的软件平台如MicrosoftFoundation

Classes(MFC)和.NET等,代码生成技术在专业应用程序开发过程中的地位越来

越重要了。使用代码生成技术,无论是购买第三方的代码生成器,还是自行开发的

代码辅助生成软件,都可以极大地加快应用软件的编程速度,降低错误发生率,从

而提高应用软件的生产效率。

(3)从系统实现方面来看,所谓自动代码生成即把形式化描述的系统需求

转化为特定软硬件平台上基于某一目标语言的系统实现。代码自动生成技术能够

帮助程序员完成系统底层的,重复性代码的自动生成,减少软件开发中枯燥且重复

的编码工作,使得程序员将更多的时间花在系统架构研究、软件学习等方面,从而

提高软件系统的健壮性、可扩展性、以及可维护性和生产率,缩短项目开发时间,

节约项目的开发成本,降低项目开发风险。

(三)代码生成机理

代码生成器的作用是读取工程的元数据,按照指定的设计模式,混合产生出

③成鹏,李周芳.Webservices代码生成器的研究与设计[J].自动化技术与应用,2006(04):25-27

百度文库-让每个人平等地提升自我

5

规范的源代码。典型的代码生成器模型如图1所示。在图中,为自动生成程序代

码,必需的三个关键要素是设计模式(所产生代码的模板文件)、领域元数据(在代

码中需建模的拓扑结构,即定义文件)和领域规则。

图1典型代码生成器的模型图

构建自己的代码生成器有2种方法,一是综合利用流行的代码生成器。构建

出适合自己的代码生成器;另一种方法是构造出一个全新的代码生成器。无论哪

种方法,在构建代码生成器都应该注意下面几个方面:

(1)使用纯文字样版,使用纯文字样版的好处除了编辑方便外,也能将程序

代码的定义逻辑和格式化逻辑分隔开来,使实际操作上更有弹性。

(2)编写正则表达式,正则表达式是一种字符串的表示方式,使用它不仅扩

大了字符串的表达能力,让使用者很容易进行字符串判断,也可避免撰写程序进

行复杂字符串解析的麻烦,也自然使得数据处理的过程变得更为迅速便利。

(3)编译器原理,在对于文本文件的处理上,先利用扫描器(Scanner)扫

设计模式

(模板)

领域元数据

(定义文件)

生成的

程序代码

领域规则

百度文库-让每个人平等地提升自我

6

描出其中的字符,再用解析器(Parser)解析出所对应的语法,然后转换成所要

产生的程序语言。

(4)文档输入输出的处理,由于程序产生牵涉到大量的文档读写动作,需

要定义合适的数据结构及缓冲区机制来提升文档存取的效率,另一方面来说,在

编写样版文档时也需考量到对于存取效率上的负担。

总而言之,随着代码生成技术的发展以及各种生成工具的出现,程序人员将

从高度脑力劳动和繁琐的体力劳动解脱出来,代码编写工作将可以像生成流水线

一样简单。所产生的代码将非常健壮,是高品质、高一致性、高效率的统一体。

当然,并不是从所有的代码生成技术中都可以获得上面列出的好处。在一个软件

工具中采用和实现代码生成技术需要对具体需求的评估、对各种技术的综合考虑

甚至还包括是“拿来”还是自行开发的一种权衡取舍。

(四)代码生成技术的优势与劣势分析

传统的代码开发调试工作流包括“编辑、编译、以及测试”。如图2所示。代

码生成增加了一些新的工作流元素。传统的编辑、编译、以及测试阶段仍然适用。

在代码生成的工作流中,首先编辑模版和定义文件(或者生成器本身),然后运行

生成器创建输出文件。接着对输出文件进行编译测试(如果目标语言不是编译语

言,不考虑图1(右)中的编译阶段)。

编辑模板

或定义文件

代码生成工作流

编译

编译

编辑

测试

编译

测试

编辑

百度文库-让每个人平等地提升自我

7

图2传统工作流与代码生成工作流的对比

代码生成技术是关于自动生成程序的技术,与手工书写代码相比,代码生成

器提供了下面的一些好处:

(1)所有软件实体代码质量一致,代码的质量依赖且只依赖于代码生成的模

板、文件和模型。与此相比,手工经常采用的拷贝粘贴的方法为前后代码质量的

一致性带来了隐患。

(2)提高了代码变更的能力,特别是在需要大量更改代码的情况下,只需要

更改模板并重新运行代码生成器即可。

(3)提高了修复软件Bug的能力,只需要修复模板的Bug然后重新运行生成

器就可以修复所有的生成文件的Bug。

(4)提高了在不同框架之间的迁移能力,一个典型的情形是我们需要生成不

同框架的应用代码,代码生成技术将业务逻辑以语言无关的形式单独存放,通过

为不同的框架提供代码模板可以基于同一逻辑生成不同框架的应用代码。

(5)灵活的同步机制,代码自动生成技术维护代码和数据模型的一致性,通

过重新运行生成器,对模型的修改可以自动反映到代码中,这种同步机制对维护

数据的一致性是非常必要的。

(6)大幅度提高了工作效率,运用代码生成技术可以将更多的时间花费在业

务相关的设计和实现上,从而可以大大提高软件的开发效率和软件质量。

(7)是代码学习的导师,由于生成的代码具有良好的风格和100%的健壮性,

程序开发者很容易模仿代码风格,从中学习。

传统工作流

百度文库-让每个人平等地提升自我

8

当然,任何一种技术都有其缺点,代码生成器也不例外:

(1)代码生成器必须首先写好并且只能适应指定的环境。

(2)不能100%生成想要得代码,还有一些代码需要手动修改。

(3)对于数据库代码,数据库设计必须正确规范,生成器通常不能很好的应

付有奇特设计特征的数据。

二、代码生成器的分类与应用领域

(一)代码生成的分类

在技术领域一般我们可以将代码生成技术分为两大类:被动模式和主动模式

(见图3)④。在被动模式下,代码生成器产生一系列的代码,然后软件开发者

可以自由的修改、编辑这些代码,但代码生成器不再承担对代码的维护工作。大

多数软件集成开发环境(IDE)中的应用“向导”就是这种类型的代码生成器。被

动模式的代码生成技术有其应用的范围,但是被动模式的生成系统有天生的局限

性,生成器只运行一次,然后就不再承担对代码的维护工作。与此相反,主动模

式下的代码生成器则对生成的代码“长期”负责,可以通过改变生成器的输入参数

并重新运行生成器来改变输出的代码。如编译器生成器就是一种主动模式的代码

生成器。

④王峰.代码自动生成技术[EB/OL].

编辑

输入

代码

生成器

生成

的代码

主动模式

被动模式

生成

的代码

编辑

输入

代码

生成器

文档

输出

文档

输出

百度文库-让每个人平等地提升自我

9

图3被动模式与主动模式的对比

下面我们介绍几种常见的代码生成技术,这些技术对开发一个实用的代码生

成器非常重要。可以依据代码生成技术的使用场合、复杂度等对这些生成技术进

行分类,这里我们采用依据生成技术的输入、输出对它们进行分类⑤。

(1)代码挑拣器

代码挑拣器的输入是源代码,通过拣取需要的信息可以生成各种文件,代码

挑拣器的使用相当广泛,可以使用它来生成代码API文档(最著名的就是

JavaDoc)、获取常量和函数原型等。

(2)内联代码扩展器

内联代码扩展器的输入是带有特殊标记的源代码,这些特殊标记经过扩展器

的处理后将被替换为相关的代码从而产生最终的生产源代码,内联代码扩展器的

典型应用是将SQL语句嵌入到源代码中,其主要特点是使得底层结构和复杂的查

询分开。

(3)混合代码生成器

混合代码生成器与内联代码扩展器很像,它也是处理源代码中的特殊注释但

是与内联代码扩展器不同,它的结果将直接输出到输入的源代码中。这种方式的

一个典型应用就是在对话框控件和它们代表的变量之间建立映射关系。

(4)部分类生成器

部分类生成器的输入是模板文件和包含特定类所需信息的定义文件,这些信

息经过生成器将产生应用的基类。通过继承该基类可以完成剩余的工作。Velocity

⑤金雪云,徐卫东.基于.NET的代码生成工具的设计与实现[J].计算机工程与应

用,2006(08):123-125

百度文库-让每个人平等地提升自我

10

是一个源代码开放的Java模版引擎。

(5)层第生成器

层第生成器是生成一个多层应用的代码,模型驱动的开发是这种生成器的一

个很好例子。通过UML模型输入和其余XML文件,生成器能够生成一个包含多

个系统的完整应用,并且模型和代码之间可以单向乃至双向同步。

(6)完全领域语言

完全领域语言是一个图文完备的语言,可以直接使用来进行领域相关的操

作。一个典型的例子是Mathematica所使用的数学语言它可以简单的完成对矩阵

运算的所有操作。

(二)代码生成器的应用领域

(1)编译与优化领域

编译与优化领域的代码生成主要是研究如何根据高级语言声称及其代码或

字节码,以及生成的代码的可移植性问题。ANTLR,语言识别的另类工具,是这

样的一种语言工具,它为包括Java,C#和C++行为在内的语法描述提供了一种可

以创建识别器,编译器和翻译器的框架。

(2)专用代码生成领域

专用代码生成器通常面向专用领域,生成小型的系统或程序,因此可以达到

更高的代码生成率。例如有限元程序自动生成系统(FEPG),FEPG采用元件化的

程序设计方法和人工智能技术,根据有限元方法统一的数学原理及其内在规律,

以类似于数学公式推理的方式,由微分方程表达式和算法表达式自动产生有限元

源程序。

(3)通用代码生成领域

百度文库-让每个人平等地提升自我

11

通用代码生成由于其应用开发的领域广泛,所以导致代码的生成效率不高,

通常仅仅生成软件的框架代码,比如RationalRose2002,它是Rational公司的旗舰

产品,它使大型开发项目的分析、建模、设计规范化,它提供了许多框架,诸如

J2EE等等。开发人员可以选择相应的框架将UML描述的设计转化为代码,但仅

仅是框架,并没有具体得实现,需要开发人员在其中人工填入实现代码,以满足

系统的功能需求,因而代码的生成率并不高。

三、代码生成器的应用

(一)数据库结构自动生成

在开发MIS、ERP等信息处理类软件时,存在大批数据库表的建立、大量用

户界面的设计等重复性工作。按照软件开发规范,所有涉及到数据库应用开发的

软件系统,数据库设计文档是其中最重要的组成部分,它包含了创建数据库所需

的所有信息。如果能够在已经描述好设计文档的基础上,利用相应的工具,实现

数据库结构的自动创建,将大大提高系统开发效率。数据库设计文档没有指定任

何特定的数据库应用产品,由它描述的信息可以在任何数据库工具上实现,数

据库中的数据定义、关系创建及约束定义等是由专门的语言———数据库标准语

言SQL构成的,这些为数据库结构的自动生成提供了可能性。从数据库设计文

档到关系数据库结构的自动生成为创建数据库提供了一种新的方法,能实现数

据库基本表的建立、设定表间的关系、添加字段描述和数据库约束等所有工作,

所开发的这一辅助工具软件能应用到与数据库相关的所有系统。

(二)机械CAD图库标准件代码生成

标准件的建库技术目前已经比较成熟,但目前在对标准件库进行开发时,大

百度文库-让每个人平等地提升自我

12

部分还是采用手工编程的方法,即针对不同的标准件都要从特征点的坐标计算

开始,因此建库工作量非常大,且非常枯燥;综合图形参数化作图过程的直观性

和程序参数化图形生成的快捷性,并结合人们的作图习惯,开发一个通用的标准

件代码生成器。利用该生成器,用户可以采用传统交互式绘图的方法,按照一定

的规则建立一个标准件的实例图形,系统就可以自动生成该标准件的生成代码。

(三)WebServices代码生成器

WebServices代码生成的应用比较广泛,在网络中发展也十分迅速,如校内

网,QQ空间,MySpace等Webservices是部署并通过Web提供访问企业业务

功能的技术。实际上它也是描述一些操作的接口,这些操作利用标准化的XML

消息传递机制,并可通过网络进行访问。作为一种软件程序,Web服务能够描述

明确的企业功能,也可以被组合以建造下一代分布式企业应用,并可通过Internet

连接,利用服务描述为其它企业提供服务。利用Webservices实现远程数据库存

取特别是异构系统间的远程数据存取具有巨大的优势。

四、代码生成工具的比较分析

(一)Codematic--动软.Net代码生成器

动软.Net代码生成器Codematic是一款为C#数据库程序员设计的自动代码

生成器,Codematic生成的代码基于面向对象的思想和三层架构设计,结合了

Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。

采用Model+DAL+BLL+Web的设计,主要实现在对应数据库中表的基类代码的

自动生成,包括生成属性、添加、修改、删除、查询、存在性、Mode类构造等

百度文库-让每个人平等地提升自我

13

基础代码片断,支持3种不同架构代码生成,使程序员可以节省大量机械录入的

时间和重复劳动,而将精力集中于核心业务逻辑的开发。⑥

Codematic同时提供多类型数据库管理,查询分析器,SQL脚本生成,存储

过程生成,数据库文档生成,Web项目发布,代码批量自动输出等多项开发工作

中常用到的功能,用户可以很方便地进行项目开发。

(1)自动生成代码

可以生成3种不同架构的代码。可以自定义生成的字段,项目架构,代码类

型,方法。它可以生成实体Model,DAL(数据访问层),IDAL(接层),DALFactory(类

工厂),BLL(业务逻辑层),WEB层等多层的代码,可以节省大量的时间来做业务逻

辑的代码。

(2)多类型数据库集中管理器

类似SQLServer2005的管理界面,支持SQLServer,Oracle,OleDb三种类型的

数据库,方便平常在代码编辑的时候想查看数据库的信息,并且可以很直观的查

看字段类型,长度,主键,默认值等详细信息,省去了在代码和数据库管理器之

间的来回切换,方便快捷。

(3)查询分析器

实现类似于SQLServer的查询分析器的功能,方便编写代码时进行的查询。

(4)自动生成存储过程和SQL脚本

可以生成存储过程,查询语句,数据插入脚本,对象定义脚本等。

(5)自动生成数据库结构的文档。

(6)代码批量生成自动导出功能。

⑥动软设计.动软.Net代码生成器[EB/OL].,2007-05-03

百度文库-让每个人平等地提升自我

14

(二)SmartCode代码生成器

SmartCode完全基于模版代码生成,它通过读取数据库Schema,可以为每

张表或者每一个字段设置生成属性,其实现代码功能十分强大,具体特性如下:

(1)整体界面风格类似于VisualStudio。

图4整体界面风格

(2)完全基于自定义的模板引擎,模板使用的标记和C#语法进行编写。模板

编写完全类似与CodeSmith,可以使用Import导入命名空间,使用Assembly添加

程序集,使用Include包含其他的模板文件,使用Property声明属性。同时,也可

以使用编写代码片段。

(3)支持属性的自定义,以及生成界面控件的配置。

如数据表属性:

百度文库-让每个人平等地提升自我

15

图5数据表属性

(4)可以生成多种类型的项目,并且支持自定义项目类型。

(5)生成的代码为完整的VS项目。

图6VS项目

(三)CodeSmith代码生成器

CodeSmith是一种基于模板的代码生成工具,它使用类似于的语法来生成

任意类型的代码或文本。CodeSmith自从被开发出来以来,一直受到热烈好评,

它拥有许多优良品质与特性:

(1)利用CodeSmithExplorer可以查看指定文件夹中所有的模板,并且可以将

模板拖放到任何支持拖放文本的目标。你也可以在Windows资源管理器中双击执

百度文库-让每个人平等地提升自我

16

行模板文件。CodeSmithExplorer窗口还可以嵌入到2003中作

为一个工具窗口,让你可以方便地访问自己的模板。

(2)CodeSmith包括有一个用于2003的定制工具(Custom

Tool),它包括基于多个属性集的代码生成模板。这个定制工具允许CodeSmith模

拟范型,可以通过添加额外的属性集为一个模板创建多个专门的模板实例,当定

制工具再次运行时,对模板的改变将反映到任何模板的实例中。CodeSmith中包

括多种优化的集合模板(例如ArrayList、DictionaryList、Hashtable、Idictionary、

Ilist、SortedList和Stack),利用这些模板可以创建避免装箱和拆箱的强类型集合,

它们的性能要比.NETFramework中的集合类型高1500%。CodeSmith还包括一个

基于控制台的版本,它与定制工具相同,只不过是命令行运行可以包括在任何编

译和连接过程中。

(3)CodeSmith包括一个名为SchemaExplorer的程序集,利用它可以访问几乎

所有的数据库概要(schema)细节。访问这种信息让你能够生成各种代码,例如

存储过程、类型DataSet、业务对象、表示层代码或任何其它基于数据库概要信

息的代码。

与其他许多代码生成工具不同,CodeSmith不要求您订阅特定的应用程序设

计或体系结构,使用CodeSmith,可以生成包括简单的强类型集合和完整应用程

序在内的任何东西。

(四)三种代码生成器的比较

(1)从模板语法上说,SmartCode与CodeSmith的语法非常相似,但是

SmartCode只支持C#语言进行模板的编写(以后可能会扩展),而CodeSmith却支

持任何一种语言。

百度文库-让每个人平等地提升自我

17

(2)CodeSmith支持编写模板时的智能提示功能,而SmartCode目前还做不

到这一点。

(3)SmartCode支持生成完整的解决方案,包括表、字段属性的可配置,这

一点可能CodeSmith无法做到。

(4)SmartCode目前还没有提供修复bug的功能。

(5)SmartCode完全基于模板引擎,可以自行修改模板,而动软Codematic

则没有提供。

总体而言,国内写代码生成器的不少,可以说很多公司都有自己的代码生成

器,但好用的却不多,在可定制性方面,始终不及CodeSmith或MyGeneration。

调查得知,用户通过用Codematic软件来开发系统的体会和经验告诉我们动软

Codematic比较适合开发比较简单、规范的Web项目。如果稍微复杂一点的,比

如要多表查询、多数据库连接等,修改源码的工作量就会比较大。另外,目前自

动生成的代码,特别是工厂三层模式代码还有一些BUG,面对这些问题,初学

者往往一筹莫展。当然,国外的代码生成工具也非十全十美,如CodeSmith就比

较复杂,对初学者来说,要学习他的那些编码语言就显得特别吃力,而此时国内

一些比较优秀的代码生成工具就显现出自己的优点:简单易用,如Codematic使

用起来非常省力气,这也是为什么在国外自动生成工具功能十分强大的情况下,

国产软件依旧受欢迎的原因。

五、结论

代码自动生成可以看作是一种自动转换机制或者一种由源模型到目标模型

的映射,它是用工具程序(代码生成器)生成文档、界面、程序段等。代码自动

生成软件是极有价值的应用软件开发工具,无论是选择商品软件还是自行开发代

百度文库-让每个人平等地提升自我

18

码生成工具,正确地应用和维护可以极大地提高开发应用软件的效率,以及所开发

的应用软件的质量。这种技术是目前研究较少的一个方向,但代码自动生成肯定

是今后应用的一个热点。

百度文库-让每个人平等地提升自我

19

参考文献

[1]成文心.程序员外包专家-CodeSmith代码生成器[J].程序员,2008(01)。

[2]曾小宁.数据库应用软件开发中程序代码的自动生成[J].广西教育学院学报,

2007(02)。

[3]松下客.JAVA代码动态生成技术[J].开发技巧,2008(03)。

[4]Yangcodeanalysisgenerationdesignandimplementation[J].microcomputer

applications,2006(10).

[5]石军.IBM公布能够自动生成Java代码的编程工具[J].现代电子技

术,2006(09)。

[6]金雪云,徐卫东.基于.NET的代码生成工具的设计与实现(J).计算机工程与应

用,2006(08)。

[7]吴桂洋.支持代码生成的体系结构描述语言[J].计算机工程与应用,2006(7)。

[8]王其力.代码生成技术及其在企业开发中的应用[J].西安文理学院学报:自然科

学版,2006(07)。

[9]吴泉源.MDA代码生成技术在电子商务开发平台上的应用[J].计算机工

程,2006(01)。

[10]郭天文.懒人的工具-CodeSmith代码生成器[J].程序员,2005(03)。

[11]龚雪容,生拥宏,沈亚楠.程序并行化中数据收集代码自动生成算法研究[J].计

算机应用,2006(10)。

[12]成鹏,李周芳.Webservices代码生成器的研究与设计[J].自动化技术与应

用,2006(04)。

[13]柳漫云.面向对象CASE工具中的代码自动生成[J].软件设计,2006(01)。

百度文库-让每个人平等地提升自我

20

[14]曹伟.如何进行软件需求分析[EB/OL].。

[15]王志坚.基于数据驱动方式的代码自动生成[J].广东工业大学学报,2003(04)。

[16]陈松乔.现代软件工程[M].北京:清华大学出版社,2004。

[17]李伟波.软件工程[M].武汉:武汉大学出版社,2004。

[18]任胜兵,邢琳.软件工程[M].北京:邮电大学出版社,2004。

[19]杨文龙,古天龙.软件工程[M].北京:电子工业出版社,2004。

[20]nerationinAction[M].NewYork:Manning

publications,July1,2003.

百度文库-让每个人平等地提升自我

21

谢辞

本论文是在我的导师王玉婷老师的指导下完成的。本人在学业上取得的进步

和提高都得益于导师一贯的严格要求;她渊博的学识、治学严谨的态度和正直的

品格使我终身受益。

在完成毕业论文过程中,我的同学为我提供了许多帮助;在与他们长期共处

和交流探讨中,我得到了不少建议和启发。

我将永远记得这些值得尊敬的师长和真诚的朋友。在此,谨向我的导师和各

位老师以及关心和帮助过我的各位同学朋友表示衷心的感谢!

最后要感谢我的父母,在异地求学的日子里,是他们给了我无私的关爱与支

持。

更多推荐

动软代码生成器