《软件工程-关于代码自动生成技术的分析(doc毕业设计论文)》由会员分享,可在线阅读,更多相关《软件工程-关于代码自动生成技术的分析(doc毕业设计论文)(58页珍藏版)》请在金锄头文库上搜索。
1、目录目录前 言 .1 第一章 概述 .2 1.1 背景 .2 1.2 研究代码自动生成技术的必要性 .4 1.3 本课题的主要研究内容 .6 第二章 代码自动生成技术 .7 2.1 代码生成的机理 .7 2.2 三层 B/S 架构 .8 2.3 设计模式 .9 2.4 反射技术 .12 2.5 缓存技术 .13 2.6 XML 技术 .15 2.7 语法高亮显示 .17 第三章 系统分析与设计 .18 3.1 系统分析 .18 3.1.1 系统开发环境 .18 3.1.2 需求分析 .18 3.1.3 系统用例图及详细说明 .21 3.2 系统设计方案 .28 3.2.1 设计原则 .28 3
2、.2.2 系统类 .28 第四章 系统实现 .32 4.1 系统界面设计 .32 4.2 系统功能实现 .34 4.2.1 数据库新连接(即导入数据库信息)功能的实现34 4.2.2 代码生成功能的实现 .34 4.2.3 代码导出功能的实现 .36 4.2.4 数据库查询分析功能的实现 .36 第五章 难点与对策 .38 5.1 数据库表信息的读取 .38 5.2 将 xml 数据加载到树形控件上 .39 5.3 语法高亮显示的实现 .41 第五章 总结及展望 .43 5.1 总结 .435.2 展望 .44 致谢 .45 参考文献 .46前前 言言现在软件工程所涉及到的系统规模越来越大。大
3、型的程序需要多人共同参与和开发,每个人的程序风格不同,再加上时间上的压力,这使得系统完成以后在测试及维护上带来了沉重的负担。计算机科学家一直致力于这方面的研究。在解决代码规范以及工作效率上,代码自动生成技术显现出了其很大的优越性。代码自动生成器一个最关键的功能就是让程序员尽可能减轻负。当然任何东西都不能取代人在当中的作用,代码自动生成器主要来完成一些有规律可寻的代码生成。比如我们平常一般用到的 MODEL 类就是一个很简单的基类,它的模式基本上是固定的。如果一个系统有上百个 MODEL 类,那么程序员可能要话很长的时间来编写。而用了相应的自动生成器只需简单几步就很全部生成。我想这样的工作是非常
4、有意义的。TianHao 正是在这样的环境下计划开发的。 TianHao 生成的代码基于面向对象的思想和三层架构设计。现在的系统常用到的是三层架构。一个典型的例子就是微软的示例代码Petshop。Petshop 包含了很多经典的思想和设计模式。TianHao结合了 Petshop 的开发模式,寻求编码规律,并融入了工厂模式,反射机制等一些思想。TianHao 同时提供支持多类型数据库,并且能够方便的对数据库查询分析,存储过程生成,代码批量自动输出等多项开发工作中常用到的功能。第第 1 章章 概述概述1.11.1 背景背景在软件工程发展过程中,计算机科学家为了降低软件开发得强度,缩短开发周期,减
5、少代码的重复书写,从而减轻程序员的编程负担,一直以来都致力于代码自动生成方面的研究。Lex/Yacc是最早用于自动化编写编译程序的工具。我们可以将代码生成技术分为两大类:被动模式和主动模式。在被动模式下,代码生成器产生一系列的代码,然后软件开发者可以自由的修改、编辑这些代码,但代码生成器不再承担对代码的维护工作。大多数软件集成开发环境(IDE)中的应用“向导”就是这种类型的代码生成器。被动模式的代码生成技术有其应用的范围,但是被动模式的生成系统有天生的局限性。生成器只运行一次,然后就不再承担对代码的维护工作。 与此相反,主动模式下的代码生成器则对生成的代码“长期”负责,可以通过改变生成器的输入
6、参数并重新运行生成器来改变输出的代码。如编译器生成器就是一种主动模式 的代码生成器。 下面我们介绍几种常见的代码生成技术,这些技术对开发一个实用的代码生成器非常重要。可以依据代码生成技术的使用场合、复杂度等对这些生成技术进行分类,这里我们采用依据生成技术的输入、输出对它们进行分类。 (1)代码挑拣器,代码挑拣器的输入是源代码,通过拣取需要的信息可以生成各种文件,代码挑拣器的使用相当广泛,可以使用它来生成代码 API 文档、获取常量和函数原型等。 (2)内联代码扩展器,内联代码扩展器的输入是带有特殊标记的源代码,这些特殊标记经过扩展器的处理后将被替换为相关的代码从而产生最终的生产源代码,内联代码
7、扩展器的典型应用是将 SQL 语句嵌入到源代码中,其主要特点是使得底层结构和复杂的查询分开。(3)混合代码生成器 混合代码生成器与内联代码扩展器很像,它也是处理源代码中的特殊注释但是与内联代码扩展器不同,它的结果将直接输出到输入的源代码中。这种方式的一个典型应用就是在对话框控件和它们代表的变量之间建立映射关系。(4)部分类生成器 部分类生成器的输入是模板文件和包含特定类所需信息的定义文件,这些信息经过生成器将产生应用的基类。通过继承该基类可以完成剩余的工作。Velocity 是一个源代码开放的 Java 模版引擎。(5)层第生成器 层第生成器将生成一个多层应用的所有代码。模型驱动的开发是这种生
8、成器的一个很好例子。通过 UML 模型输入和其余 XML 文件,生成器能够生成一个包含多个系统的完整应用,并且模型和代码之间可以单项乃至双项同步。(6)完全领域语言 完全领域语言是一个图灵完全的语言,可以直接使用来进行领域相关的操作。 目前常见的代码生成器有:DbToCode 是一款为 C# 数据库程序员设计的自动代码生器,DbToCode 生成的代码基于面向对象的思想和三层架构设计,结合了 Petshop 中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。采用 Model + DAL + BLL + Web 的设计,主要实现在 C# 中对应数据库中表的基类代码的自动生成,包括生成
9、属性、添加、修改、删除、查询、存在性、 Model 类构造等基础代码片断,使程序员可以节省大量机械录入的时间和重复劳动,而将精力集中于核心业务逻辑的开发。Codematic 生成的代码基于面向对象的思想和三层架构设计,结合了 Petshop 中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。Codematic 同时提供方便的多类型数据库管理,查询分析器,SQL 脚本生成,存储过程生成,数据库文档生成,Web 项目发布,代码批量自动输出等多项开发工作中常用到的功能,您可以很方便轻松地进行项目开发。AutoJava 是一款免费的,针对于 Oracle 和 SQLserver 数据库的、
10、以面向对象模式的 Java 代码生成工具。AutoJava 根据 O/R Mapping 规则生成表对应的 Java 对象,并且生成了所有的添加、删除、修改、查询等底层数据库操作代码。 1.21.2 研究代码自动生成技术的必要性研究代码自动生成技术的必要性随着现代化信息环境日趋复杂,各种应用软件的开发难度随之加大,这需要更有技巧,更有方法地从事软件开发,开发团队之间也必须更无障碍地沟通,否则极可能无法在有限的开发时间中完成任务。由于时间上的压力,一般人只注重程序的编写速度,却忽略其完成后的实用性与维护性,加上大型程序多人共同参与开发,每个人都有各自的程序风格,容易造成严重的差异性,随着系统规模
11、越来越大,这将造成系统完成后在测试及维护上沉重的负担,代码自动生成技术更显出了其显著的优越性。尽管这些应用没有代码生成工具也能开发完成,但利用代码生成技术可以大大加速软件的开发进度,提高软件的质量。代码生成技术是关于自动生成程序的程序的技术。与手工书写代码相比,代码生成器提供了下面的一些好处: (1)所有软件实体的一致的代码质量,代码的质量依赖且只依赖于代码生成的模板、文件和模型。与此相比,手工经常采用的拷贝粘贴的方法为前后代码质量的一致性带来了隐患。 (2)提高了代码变更的能力,特别在需要大量更改代码的情况下,只需要更改模板并重新运行代码生成器即可。 (3)提高了修复软件Bug的能力,只需要
12、修复模板的Bug然后重新运行生成器就可以修复所有的生成文件的Bug。 (4)提高了在不同框架之间的迁移能力,一个典型的情形是我们需要生成不同框架(如J2EE/.Net)的应用代码,代码生成技术将业务逻辑以语言无关的形式单独存放,通过为不同的框架提供代码模板可以基于同一逻辑生成不同框架的应用代码。 (5)灵活的同步机制,代码生成技术自动维护代码和数据模型的一致性,通过重新运行生成器,对模型的修改可以自动反映到代码中,这种同步机制对维护数据的一致性是非常必要的。 (6)大幅度提高了工作效率,运用代码生成技术可以将更多的时间花费在业务相关的设计和实现上,从而可以大大提高软件的开发效率和软件质量。 (7)是代码学习的导师,由于生成的代码具有良好的风格和100%的健壮性,程序开发者很容易模仿代码风格,从中学习。 1.31.3 本课题的主要研究内容本课题的主要研究内容本课题的主要目标是在