




已阅读5页,还剩64页未读, 继续免费阅读
(计算机软件与理论专业论文)基于ssh框架多层结构的代码生成工具的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳理- j :大学硕士学位论文 摘要 为了解决基于s s h ( s t r u t ss p r i n gh i b e r n a t e ) 框架的办公自动化系统的快速开 发问题,本文结合d o m 、模板引擎及e c l i p s e 插件技术,采用面向对象的方法对 代码生成工具的层次结构进行分析与设计。根据模块化的思想把代码生成工具划 分为显示层、数据层、业务层,各层之间采用统一接口的形式进行数据交换。在 此基础上,设计和实现出基于s s h 框架多层结构的代码生成工具。该代码生成工 具通过输入基本数据信息以及加载用户界面原型,实现了代码的自动生成。本文 研究的主要内容如下: 1 对目标系统进行科学、合理的抽象,分析目标系统所需要的基本数据信息, 例如目标系统的类名、包名、目标系统的描述、目标系统的存放位置等等。为了 获得目标系统的各种基本数据信息,采用了s w t 技术实现了图形化的用户界面。 2 使用d o m 技术生成s s h 框架中的x m l 配置文件;采用v e l o c i t y 模板引 擎技术生成j a v a 代码。根据用户界面原型的特点,提出一种用户界面解析算法。 3 使用e c l i p s e 插件技术将代码生成工具以插件的形式集成在e c l i p s e 开发环 境中,方便软件开发人员使用。 通过测试和实际使用证明,基于s s h 框架多层结构的代码生成工具能大幅度 提高软件开发的质量和生产效率,降低软件开发的风险和成本,具有良好的适应 性和扩展性,把开发人员和维护人员从单调的代码编写中解放出来。 关键词:代码生成;s s h ;模板引擎 沈阳理丁大学硕士学位论文 a b s t r a c t t or a p i d l yd e v e l o po f f i c ea u t o m a t i o n s y s t e mb a s eo ns s h ( s t r u t s ,s p r i n g , h i b e r n a t e ) f r a m e w o r k ,t h et h e s i sa n a l y z e sa n dd e s i g n st h eh i e r a r c h i c a ls t r u c t u r eo f c o d eg e n e r a t o rb yt h eo b j e c t - o r i e n t e dm e t h o dc o m b i n i n gt h et e c h n o l o g yo fd o m , t e m p l a t ee n g i n ea n de c l i p s ep l u g i n t h ec o d eg e n e r a t o ri sd i v i d e dt od i s p l a yl a y e r , d a t a l a y e ra n do p e r a t i o nl a y e ra c c o r d i n gt ot h et h o u g h to fm o d u l i z a t i o n , a n dd a t aa r e e x c h a n g e dt h r o u g ht h eu n i f o r mi n t e r f a c ea m o n gt h e s el a y e r s t h ec o d eg e n e r a t o ro f m u l t i l a y e rb a s e do ns s hf r a m e w o r ki sd e s i g n e da n di m p l e m e n t e d t h ec o d eg e n e r a t o r c a na u t o m a t i c a l l yg e n e r a t ec o d eb yi n p u t t i n gb a s i cd a t aa n dl o a d i n gu i t h em a i n c o n t e n t sc o n s i s to f : f i r s t ,a b s t r a c t i n gt h et a r g e ts y s t e ms c i e n t i f i c a l l ya n dr e a s o n a b l y , a n da n a l y z i n gt h e b a s i cd a t at h a ti sn e e d e di nt h et a r g e ts y s t e m s u c h 嬲c l a s sn a m e , p a c k a g en a m e , d e s c r i p t i o n ,l o c a t i o n ,e t c t oo b t a i nt h eb a s i cd a t ao ft h et a r g e ts y s t e m ,s 、胛t e c h n o l o g y i sa d o p t e dt oi m p l e m e n tt h eg u i s e c o n d ,g e n e r a t i n gx m lc o n f i gf i l e si ns s hf r a m e w o r kb yd o mt e c h n o l o g ya n d g e n e r a t i n gj a v ac o d eb yv e l o c i t yt e m p l a t ee n g i n e a c c o r d i n gt ot h ec h a r a c t e r i s t i c so f u s e ri n t e r f a c ep r o t o t y p e ,o n ek i n do fu s e ri n t e r f a c ea n a l y s i sa l g o r i t h mw a s p r o p o s e d t h i r d ,e c l i p s ep l u g - i nt e c h n o l o g yi su s e dt oi n t e g r a t ec o d eg e n e r a t o ri n t ot h e e c l i p s ed e v e l o p m e n te n v i r o n m e n t ,w h i c hf a c i l i t a t e st h eu s eo fs o f t w a r ed e v e l o p e r s i ti sp r o v e dt h a tt h ec o d eg e n e r a t o ro fm u l t i - l a y e rb a s e do ns s hf r a m e w o r kc a n g r e a t l yi m p r o v et h eq u a l i t ya n dp r o d u c t i v i t y , l o w e rt h er i s ka n dc o s t ,h a v eag o o d a d a p t a b i l i t ya n de x p a n d a b i l i t yi nt h es o f t w a r ed e v e l o p m e n t ,a n dl i b e r a t es o f t w a r e e n g i n e e r so u tf r o mt h eu n e x c i t i n gh a n dc o d i n g k e y w o r d s :c o d eg e n e r a t o r ;s s h ;t e m p l a t ee n g i n e 沈阳理工大学 硕士学位论文原创性声明 本人郑重声明:本论文的所有工作,是在导师的指导下,由作者本 人独立完成的。有关观点、方法、数据和文献的引用已在文中指出, 并与参考文献相对应。除文中已注明引用的内容外,本论文不包含任 何其他个人或集体已经公开发表的作品成果。对本文的研究做出重要 贡献的个人和集体,均己在文中以明确方式标明。本人完全意识到本 声明的法律结果由本人承担。 作者( 签字) :;彻 日期 :加8 年月,中日 学位论文版权使用授权书 本学位论文作者完全了解沈阳理工大学有关保留、使用学位论文 的规定,即:沈阳理工大学有权保留并向国家有关部门或机构送交学 位论文的复印件和磁盘,允许论文被查阅和借阅。本人授权沈阳理工 大学可以将学位论文的全部或部分内容编入有关数据库进行检索,可 以采用影印、缩印或其它复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:佃 日 期:2 一寥、口;户 指导教师签名:脚 日 期:2 匆彤矿乡户 第1 章绪论 1 1 课题来源和背景 第1 章绪论 随着现代信息技术的迅猛发展,特别是在面向对象思想和u m l 的理论得到广 泛应用后,开发人员的工作得到细分,软件行业越来越认识到需求调研和系统设 计对整个系统质量的巨大影响,所以,如何提高开发效率就成为软件企业和用户 更关心的课题。 近年来,在项目开发中,发现政府、企业对办公自动化系统的需求与日俱增, 但是政府、企业对办公自动化系统的具体需求虽然有所不同,但是他们仍然存在 着一定的相同之处。如果在为不同客户提供系统开发过程中,能尽可能重用己有 代码和设计,将对快速开发和提高软件产品质量有很大帮助。如果能够按照一定 的方式和流程,自动的生成大部分的系统代码,一方面能够缩短软件项目开发周 期,降低成本;另一方面,能够解放开发人员的生产力,提高软件产品的设计质 量。因此,代码自动生成技术越来越引起业界的重视。在办公自动化系统用户中, 客户对办公自动化系统需求的相同程度越大,就意味着代码重用的价值也越大。 所以,本文决定为了快速开发办公自动化系统,设计和开发一套代码生成工具。 由于现在j 2 e e 技术得到了长足的发展,而且基于s s h 框架己经成为当今w e b 软 件开发的主要技术选择之一,为了最大化这个项目的研究价值,本次研究定位为 j 2 e e 平台中开发出基于s s h 框架多层结构的代码生成工具,并使用e c l i p s e 插件 技术将开发工具集成在e c l i p s e 开发环境中,方便软件开发人员的使用。 本课题的研究意义在于: 第一,实际客户需求千变万化,但仍然具有一定规则和相同之处; 第二,开发人员在开发不同系统时,有大量重复工作,浪费大量人力; 第三,因为机械的重复编码工作对人力资源的大量消耗,设计和开发人员没 有足够时间和精力研究业务逻辑,从而造成更大浪费; 沈阿l 理j i :人学硕十学位论文 第四,随着j a v a 技术的同趋成熟,其优异的性能帮助软件工作者解决很多棘 手问题【l l 。 本课题研究的目的就在于创建一种基于s s h 框架多层结构的快速代码生成工 具,其工作流程如图1 1 所示: 系 图1 1 代码生成工具工作流程图 在实际的应用中,客户根据自身的业务需求,向系统分析员提出办公自动化 系统的需求;系统分析员根据需求分析建立数据结构,并根据代码自动生成工具 的要求填写基本数据信息。作为本课题的研究对象和成果,代码自动生成工具能 根据模板引擎技术和输入的基本数据信息,生成实体类、a c t i o n 、a c t i o n f o r m 、业 务接口、实现业务接口类等。采用d o m 技术,实现s t r u t s e o n f i g x m l 、实体类映 射文件、a p p l i c a t i o n c o m e x t x m l 等配置文件的自动生成。同时,根据加载的界面模 板,采用用户界面解析算法自动生成用户使用的j s p 界面。 本课题的研究是将多年的编程和系统建设经验进行沉淀和应用,抽象出办公 自动化系统的相对相似的实现方式,形成一系列规范的框架格式和目标代码,极 大提高系统的重用性。由于自动化的生成工作能节省大量的重复编码时间,可以 把程序员和系统分析员从繁杂和重复的编码工作中解放出来,更进一步理解客户 需求,在更短的时间内完成系统建设。 1 2 国内外研究现状 1 2 1j 2 e e 的w e b 框架及其优势 第1 章绪论 1 2 1 1j 2 e e 的w e b 框架 j 2 e e 为多层w e b 应用系统提供了容器平台1 2 1 。在这里,容器概念实际是指应用 服务器提供的特定功能的软件模块,用户所开发的程序构件要在容器内运行,构 件和容器的关系有些像计算机插件和主板的关系;程序构件在部署时被安装在容 器里,容器是能提供基本功能的底层平台,它们之间通过接口进行通信;一般w e b 程序开发者只要开发出满足其需要的程序构件并能安装在容器中就够了,程序构 件的安装过程包括设置各个构件在j 2 e e 应用服务器中的参数以及设置j 2 e e 应用服 务器本身。这些设置决定了在底层由j 2 e e h 艮务器提供的安全、交易管理、j n d i 查 寻和远程调用等多种服务【3 】。 j 2 e e 应用框架使同样的程序构件在一个w e b 程序之内能够根据其部署的方式 实现不同的功能【4 】。例如,同样的e n t e r p r i s ej a v a b e a n 可以采用不同等级的数据库数 据存取安全设置。j 2 e e 容器还负责管理构件的生命周期、数据库连接资源共享、 数据持久性等基本的服务。j 2 e e 框架图如图1 2 所示: 图1 2j 2 e e 架构图 j 2 e e l 4 应用平台由以下几种类型的程序容器( c o n t a i n e r ) 组成:e n t e r p r i s e j a v a b e a n s ( e j b ) 容器负责所有e j b 的运行,e j b 根据功能可以分为s e s s i o nb e a n ( 会话 b e a n ) 、e n t i t yb e a n ( 实体b e a n ) 、m e s s a g e - d r i v e n b e a n ( 消息驱动b e a n ) 。这一层主要负 责数据处理以及和数据库或其他j a v a 程序的通信,它对应多层结构的业务层和数据 访问层,w e b 容器管理所有j s p 、j s t l 和s e r v l e t 等w e b 构件的运行,这些构件主要 负责程序和w e b 的通信,这一层对应多层结构中的表示层。应用客户端容器负责所 沈阿1 理。i :人学硕十学位论文 有w e b 程序在客户端构件的运行;a p p l e t 容器可以看作特殊的应用客户端容器。它 负责在w e b i j 0 j 览- 器$ 1 j a v a 插件上运行j a v aa p p l e t 程序( a p p l e t 是一种简化并具有安 全保护的j a v a d x 程序 5 1 ) ,应用客户端容器和a p p l e t 程序容器基本对应多层结构中的 用户接口层;每种容器内都使用相关的各种j a v a w e b 编程技术。 j 2 e e 含有s e r v l e t 、j s p 、e j b 等各种不同的应用构件,它们构成了应用的主体【6 】a j 2 e e 平台提供的j d b c 、j t s 、j n d i 等应用服务,这些服务保证并促进构件的良好 运行。j 2 e e 的r m i 、j m s 、j a v a m a i l 等应用通信技术在平台底层实现机器和程序之 间的信息传递。 1 2 1 2j 2 e i ;的w 曲框架开发w e b 系统的优势 w e b 应用框架可以提高w e b 应用系统开发的效率,使得w e b 应用系统开发者可 以集中精力开发系统所需的业务逻辑,而不必耗费精力在一些w e b 应用系统共同的 操作上。具体的说,一个w e b 应用框架可以为w e b 应用系统的开发提供以下优势口1 : ( 1 ) 为w e b 应用系统提供优良的软件架构。w e b 应用框架根据面向对象框架的 软件复用理论和w e b 应用系统共同的特征,利用一定的、经过实践检验的架构模式 将w e b 应用的体系结构进行固化,从而为w e b 应用系统提供优良的软件架构。 ( 2 ) 更大的分离显示与逻辑。框架将显示和逻辑分离为不同的模块,分别处理 应用的显示和逻辑,应用开发者只需对不同的模块进行填充即可,从而更大的分 离显示与逻辑。 ( 3 ) 分离开发者的角色。通常,应用框架为不同的开发者提供不同的接1 :3 。显 示模块的开发者只需集中精力在j s p 等显示页面的开发。同时,逻辑开发者只需关 注请求的处理和商业逻辑的开发。这种分离使得应用开发者可以并行的、互不依 赖的开发应用系统。 ( 4 ) 能够提高w e b 应用系统开发的效率。框架可以为开发者提供一组高效的、 通用的视图处理和逻辑处理方面的组件,还可以减少开发者的代码,提供系统的 开发效率。 ( 5 ) 方便模块测试和维护。由于框架为各模块的交互提供的接1 :3 是统一的,降 低了各模块的藕合性,从而方便系统按模块进行测试和维护,也方便系统进行自 动化测试。 第1 章绪 论 不仅如此,除了技术上的优势之外,w e b 应用框架也给开发的项目管理工作带 来了深刻的变化,主要表现在下述几方面: ( 1 ) 降低项目的开发成本。由于更清晰的划分了开发团队中的角色,每个角色 所承担的工作都很专一,从而降低了开发人员的知识积累和技能方面要求。软件 企业可以迅速的从人力资源市场上获取所需得人力,快速的组建开发团队,同时 也降低了人力成本。 ( 2 ) 缩短项目的开发周期。在w e b 应用开发中使用w e b 应用框架,避免了重复 开发,重复投资,由此减少了应用开发的代码量,加快了开发速度,缩短了开发 时间。 ( 3 ) 降低项目的风险。w e b 应用框架下的开发角色分工专一,使每一项任务更 加明确,由此提高了工作量估算的准确度,同时也使计划实施过程中的跟踪和控 制工作变得容易,降低了w e b 应用开发项目计划实施的风险,使开发计划的完成更 有保证。 当然利用框架提供的上述优势也是需要付出代价的。例如,利用框架开发w e b 应用系统的同时也增加了学习框架的开销,另外,框架的使用也带来了调试应用 系统的难度,一些错误的产生使框架的使用者难以判断错误的根源。然而实践表 明,w e b 应用框架的产生为w e b 应用系统的开发提供了一个新的机遇。 1 2 2s s h 框架技术概述 1 2 2 1s t r u t s 框架 基于m v c 模式创建s t r u t s 开放源代码框架的目的是便于开发人员基于j a v a s e r v l e t 和j s p 技术构建w e b 应用程序。s t r u t s 框架向开发人员提供了统一的体系 结构,以此为基础,可以构建i n t e r a c t 应用程序。并且s t r u t s 框架的应用,使开发 人员可以集中精力关注构建业务应用程序的工作,而不必顾虑体系结构的问题。 s t r u t s 框架由c r a i g r m c c l a n a h a n 于2 0 0 0 年创建,并捐赠给了a p a c h es o f t w a r e f o u n d a t i o n ( a s f ) 。s t r u t s 框架是一种众所周知的并极为成功的a p a c h ej a k a r t a 工程。 j a k a r t a 工程共同的目的任务是以开放和协作的方式,在j a v a 平台的基础上开发符 合商用标准的服务器解决方案。 沈僻i 理j i :火学硕十学位论文 m v c 模式英文全称是m o d e l v i e w c o n t r o l l e r ,即把一个应用的输入、处理、 输出流程按照v i e w 、m o d e l 、c o n t r o l l e r 的方式进行彻底的分离,这样一个应用被 分成三个层视图层、模型层、控制层。 视图层( v i e w ) :代表用户交互界面。对老式的w e b 应用程序来说,视图就是 由h t m l 元素组成的界面,在新式的w e b 应用程序中,h t m l 依旧在视图中扮演 着重要的角色,但一些新的技术己层出不穷,例如x h t m l ,x m l x s l ,w m l 等标识语言。随着应用的复杂性和规模性不断增加,界面的处理也变得具有挑战 性。一个应用可能有很多不同的视图,m v c 模式对于视图的处理仅限于视图上数 据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务 流程的处理交给模型处理。比如一个退休职工的基本信息的视图只接受来自模型 的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制器和模型。 模型层( m o d e l ) :是业务流程和状态的处理以及业务规则的制定。业务流程的 处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处 理结果。业务模型的设计可以说是m v c 最主要的核心。目前流行的e j b 模型就 是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以 便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这 种模型设计就可以利用某些技术组件,从而减少了技术上的困难。m v c 设计模式 是把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人 员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。m v c 没有提供 模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高 重用性。 控制层( c o n t r o l l e r ) :是从用户接收请求,将模型层与视图层匹配在一起,共 同完成用户的请求。划分控制层的作用也很明显,它就是一个分发器,选择什么 样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何 的数据处理。例如,用户点击个连接,控制层接受请求后,并不处理业务信息, 它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用 户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型【8 l 。 第1 章绪论 1 2 2 2s p r i n g 框架 s p r i n g 是一个开源框架,它由r o dj o h n s o n 创建。它是为了解决企业应用开发 的复杂性而创建的。s p r i n g 使用基本的j a v a b e a n 来完成以前只可能由e j b 完成的 事情。然而,s p r i n g 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦 合的角度而言,任何j a v a 应用都可以从s p r i n g 中受益。简单来说,s p r i n g 是一个 轻量级的控制反转和面向切面的容器框架【9 l 。 轻量:从大小与开销两方面而言s p r i n g 都是轻量的。完整的s p r i n g 框架可以在 一个大小只有1 m b 多的j a r 文件里发布。并h s p r i n g 所需的处理开销也是微不足道 的。此外,s p r i n g 是非侵入式的,s p r i n g l 立用中的对象不依赖于s p r i n g l c j 特定类。 控制反转:s p r i n g j 匝过一种称作控制反转的技术促进了松耦合。当应用控制反 转时,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自 己创建或者查找依赖对象。你可以认为控制反转与j n d i 相反不是对象从容器 中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 面向切面:s p r i n g 提供了面向切面编程的丰富支持,允许通过分离应用的业务 逻辑与审计和事务管理等系统级服务进行内聚性的开发。应用对象只完成业务逻 辑,仅此而已。它们并不负责甚至是意识到其它的系统级关注点,例如日志或事 务支持。 容器:s p r i n g 包含并管理应用对象的配置和生命周期,在这个意义上它是一种 容器,你可以配置你的每个b e a n 女l 何被创建基于一个可配置原型,你的b e a n 可以创 建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互 关联的。然而,s p r i n g 不应该被混同于传统的重量级的e j b 容器,它们经常是庞大 与笨重的,难以使用。 框架:s p r i n g 可以将简单的组件配置、组合成为复杂的应用。在s p f i n g 中,应 用对象被声明式地组合,典型地是在一个x m l 文件罩。s p r i n g 还提供了事务管理、 持久化框架集成等基础功能,将应用逻辑的开发留给了开发人员。 所有s p r i n g 的这些特征使你能够编写更干净、更可管理、并且更易于测试的 代码。它们也为s p r i n g 中的各种模块提供了基础支持。 沈田l 理:t :人学硕+ 学位论文 1 2 2 3h i b e m a t e 框架 h i b e r n a t e 是一个基于j a v a 的丌放源代码的持久化中间件,它对j d b c 做了轻 量级的封装,不仅提供o r m ( o b j e c t r e l a t i o nm a p p i n g ) 映射服务,还提供数据查询 和数据缓存功能,j a v a 开发人员可以方便地通过h i b e r n a t e a p i 来操纵数据库。 o r m 技术作为数据持久层的解决方案已经受到越来越多人的关注和重视。它 的作用是在关系型数据库和对象之间做个映射。把对象模型表示的对象映射到基 于s q l 的关系模型结构中去,这样,在具体的数据操作的时候,就不需要在和复 杂的s q l 语句打交道,只要像平时操作对象一样操作它就可以。 h i b e r n a t e 框架在应用程序中是位于数据持久层【- o 】,如图1 3 所示: 二二至兰三l 图1 3h i b e r n a t e 在应用程序中所处的位置0 0 l 下面对图中的对象进行说明和介绍。 ( 1 ) s e s s i o n f a c t o r y :对属于单一数据库的编译过的映射文件的一个线性安全 的、不可变得缓存快照。它是s e s s i o n 的工厂,是c o n n e c t i o n p r o v i d e r 的客户。可能 持有一个可选的数据缓存,可以在进程级别或集群级别保存事务中重用的数据。 可能持有事务之间重用的数据的缓存。 ( 2 ) 会话s e s s i o n :一个单线程的短期存活的对象,代表了在应用程序和持久化 层之间的一次对话。封装了一个j d b c 连接。也是t r a n s a c t i o n 的工厂。保存必需的 持久化对象的缓存,用于遍历对象图或者通过标识符查找对象。 第1 章绪 论 ( 3 ) 持久化对象( p e r s i s t e n to b j e c t s ) :生命期短期的单线程的对象,包含可持久 化状态和商业功能。它们可能是普通的j a v a b e a n s p o j o s ,唯特别的是他们现在 从属于且仅从属于一个s e s s i o n 。一旦s e s s i o n 被关闭,他们都将从s e s s i o n 中取消联 系,可以在任何程序层自由使用,例如直接作为传送到表现层的d t o 、数据传输 对象。 ( 4 ) 临时对象( t r a n s i e n to b j e c t s ) :目前没有从属于一个s e s s i o n 的持久化类的实 例。他们可能是刚刚被程序实例化,还没有来得及被持久化,或者是被一个已经 关闭的s e s s i o n 所实例化的。 ( 5 ) 事务( t r a n s a c t i o n ) :在应用程序中使用的短期的单线程对象,用于保证事 务的原子性。抽象的应用程序可能是基于j d b c 、j t a 或者c o r b a 事务的。一个 s e s s i o n 可能是跨多个t r a n s a c t i o n 。 ( 6 ) c o n n e c t i o n p r o v i d e r :一个可选的j d b c 和j d b c 连接池的工厂。抽象的应用 程序是基于d a t a s o u r c e 或者d r i v e r m a n a g e r 。 ( 7 ) t r a n s a c t i o n f a c t o r y :事务实例的工厂。对应用程序不可见,但可以被开发 者扩展和实现。 使用h i b e r n a t e 框架的优点: ( 1 ) h i b e r n a t e 是j d b c 的轻量级的对象封装,它是一个独立的对象持久层框架, 和a p ps e r v e r 、e j b 没有什么必然的联系。h i b e r n a t e 可以用在任何j d b c 可以使用 的场合,例如j a v a 应用程序的数据库访问代码,d a o 接口的实现类,甚至可以是 b m p 里面的访问数据库的代码。从这个意义上来说,h i b e r n a t e 和e j b 不是一个范 畴的东西,也不存在非此即彼的关系。 ( 2 ) h i b e r n a t e 是一个和j d b c 密切关联的框架,所以h i b e r n a t e 的兼容性、j d b c 驱动和数据库都有一定的关系,但是和使用它的j a v a 程序、a p ps e r v e r 没有任何 关系,也不存在兼容性问题。 ( 3 ) h i b e r n a t e 不能用来直接和e n t i t yb e a n 作对比,只有放在整个j 2 e e 项目的 框架中才能比较。并且即使是放在软件整体框架中来看,h i b e r n a t e 也是作为j d b c 的替代者出现的,而不是e n t i t yb e a n 的替代者出现的。 ( 4 ) 由于是对j d b c 的封装,内存消耗少,最快的运行效率。 ( 5 ) 开发效率高,e c l i p s e 、j b u i l d e r 等主流j a v a 集成开发环境对h i b e r n a t e 有 沈陬l 理i :人学硕十学位论文 很好的支持,在大的项目,特别是持久层关系映射很复杂的情况下,h i b e r n a t e 效 率高的惊人。 ( 6 ) 分布式,安全检查,集群,负载均衡的支持。 1 2 3 代码自动生成技术发展 代码生成工具( c o d eg e n e r a t o r ) 就是可以通过一组简单的设定从而获得几百、 几千行码。如果不采用这项技术的话,开发者就不得不花上几个小时或者几天的 时间来手工编写这些代码。另一方面,优秀的开发工具为了提供其独特的功能或 者屏蔽一些容易出错的细节,也往往采用代码生成技术为使用者提供一个程序的 模板框架,其目的也是为了提高编程的效率 i t l 。 国内外很多大型的软件公司为了解决代码的重用问题,都有着自己的解决方 案,其中不乏使用代码自动生成工具的类似例子。蓝色巨人收购的原大型软件公 司r a t i o n a l 就在这方面有很深造诣,r a t i o n a l 公司的主力产品r o s e 就能够根据用户通 过其创建的数据模型,按照用户选择的语言类别,自动化生成一些代码,这些代 码一般可以用于m v c 架构的模型层。同r a t i o n a lr o s e 比较类似的就是b o r l a n d 公司收 购的t o g e t h e r 公司的拳头产品t o g e t h e rc e n t e r ,这款产品也可以按照用户设计的 u m l 文件自动生成部分目标代码。另外一种解决方案就是在功能强大的集成开发 环境( i d e ) 中增加一些向导功能,丌发人员在使用这些i d e 的同时可以依靠一些向导 功能自动化生成一些所需的目标代码。这些代码的结构相对都比较简单。使用这 种方案的都是一些大型的i d e 开发软件公司,比如m i c r o s o f t 公司的v s 系列软件,这 一系列软件比如,v c 或者最新的v s n e t 或者v b n e t 都提供了一些向导,开发人 员通过简单操作这些向导就可以生成些目标代码。其他比女l :l b o d a n d 公司出品的 大量i d e 开发工具、b e a 公司的w e b l o g i cw o r k s h o p 等,都有着类似的功能,通过 一些向导,收集用户输入的信息,最后自动生成所需代码。 国内软件公司由于各种原因,在自动化生成代码领域的研究相对较少,但有 很多科研项目中都涉及本文研究的相关理论基础和实践经验。很多新兴中间件开 发厂商如金蝶等公司都有一些和产品捆绑的自动化代码生成系统。总结起来,国 外和国内在该领域的研究现状和问题主要包括: 第一,研究内容较为单一,代码生成一般通过u m l 或者向导的方式生成,目 1 0 第1 章绪论 标代码应用范围单一,目标代码的类型也比较单一。一般不可能生成一整套的目 标系统代码。 第二,应用经验不多,由于其应用的范围小,类型单一,因此这样的代码自 动生成工具的应用经验就稍显不足1 1 2 】。 为了保证先进性,在本次研究初期,已对目前市场上类似的解决方案进行了 多次研究,研究的结果表明目前还没有一个非常合适的解决方案,因此决定从系 统的设计工作开始,开发出一款基于s s h 框架的多层结构的代码生成工具。 1 3 主要研究内容和论文结构 1 3 1 主要研究内容 本课题主要研究内容包括t 第一,对目标系统进行科学、合理的抽象,分析目标系统所需要的基本数据 信息包括哪些及图形化用户界面的设计与实现。 第二,如何生成s s h 框架中的x m l 配置文件及在已有的配置文件中插入信 息;提出一种用户界面解析算法,通过该算法自动生成用户使用的j s p 界面;模板 引擎技术的研究。 第三,e c l i p s e 插件技术的研究。 1 3 2 论文结构 围绕代码生成工具的开发展开论述,全文共分为四章。 第一章为绪论。概述了本文的研究背景、课题的来源、目的和意义,总结了j a v a w e b 技术的状况及s t r u t s 、s p r i n g 、h i b e r n a t e 框架技术的简要概述,并且对代码生成 技术的发展进行了阐述。 第二章为代码生成工具分析。本章首先对代码生成工具的概念和分类进行了 解释,接着从应用代码生成工具的准则、采用代码生成工具的好处和不足等方面 进行了深入的分析。最后详细阐述了目前代码生成工具的问题、本课题给出对应 的解决方案,以及本课题采用的技术。 沈冈i 理【:人学硕+ 学何论文 第三章为基于s s h 框架的代码生成工具的设计。本章首先介绍了代码生成工具 的需求分析。接着描述了代码生成工具的概要设计和详细设计。最后,还进行了 插件设计。 第四章为基于s s h 框架代码生成工具的实现与应用。本章结合代码生成工具的 设计详细介绍了其实现的过程,最后描述了代码生成工具的应用。 最后为本论文工作成果及下一步工作展望。 第2 章代码生成j 1 :具分析 第2 章代码生成工具分析 2 1 代码生成工具概念 代码生成工具,顾名思义是指可以自动生成代码的程序。代码生成工具的范 围非常广,从简单的解析器到功能齐全的生成工具如m a t l a b 。 代码生成工具的基本功能是读取元数据( m e t a d a t a ) ,然后根据一定的模式和 规则生成相应的源代码。 代码生成工具基本模型如图2 1 所示: 图2 1 代码生成工具基本模型 模式模板:代码生成中的不变关系或模式。代表了代码生成域工程中的共性。 域元数据:是指将在生成代码中模型化的元数据。通常被开发人员所提供的 外部数据所参数化。 域规则:用以约束域数据结构和行为的规则,通常被代码生成工具所封装【1 3 l 。 在实际的项目开发中决定使用代码生成工具或者选择己有的代码生成工具需 要从四个方面来进行衡量。 质量( q u a l i 动:是指生成代码的质量。在一个项目的开发周期中,由于软件 工程师的编码能力的不同,手工编码会形成代码质量上的参差不齐。而使用代码 生成工具则可在整个开发周期中提高代码质量,这是因为程序的许多b u g 可以通过 修订代码模板来完善整个代码库。生成代码的质量直接影响生成工具的可用性1 1 4 】。 一致性( c o n s i s t e n c y ) :是指所设计的生成工具生成a p i 的类结构,变量名以及 沈同l 理l :人学硕+ 学位论文 方法名是否容易保持其稳定性,从而使得软件设计人员可以在较高层次上进行使 用,而不太需要考虑底层的变动。一致性决定了一个生成工具向下的兼容性,是 否设计得稳定可靠,不会因为引入了生成工具反而增加了系统的太多不确定性。 效率( p r o d u c t i v i t y ) :是指生成工具可以在多大程度上替代手工的编码工作能 力。代码生成工具可以节省大量的手工编码时间,可以使软件工程师尽可能避免 烦琐的重复开发工作,从而可以把精力放在更需要创造性的任务当中。效率的大 小决定了是否需要创建或选择生成工具的决策。 抽象性( a b s t r a c t i o n ) :是生成代码所具有的层次性,是否清晰,是否容易划分 业务逻辑等能力,而不是将代码混作一团。代码生成工具在软件的设计和代码基 ( c o d eb a s e ) 之间提供了一个抽象层。在实际的软件开发应用中,常常发现会比较容 易陷入到代码的各种细节中,从而忽视了业务逻辑规则【1 5 】。生成工具所产生的确定 代码可以以一种明确的形式来保持这些业务模式和业务规则。同时,这些文件可 以独立出来并且文档化。此外,这些代码和文件也可以被域专家检查和分析。抽 象性使得生成代码可以运用其它的c a s e 技术来进行分析,例如可以导入至s j r a t i n o n r o s e 中进行面向对象分析等。 有人认为代码生成是一种不好的设计观念,认为它其实是一种反模式 ( a n t i p a t t e r n ) 0 6 1 。他们认为代码生成仅仅是另外一种形式上的拷贝粘贴式的编 程方式。虽然从某种角度上来看的确如此,但相比拷贝粘贴而言它依然有着 许多的可取之处。 在编程实践过程中,如果发现一些类似的功能模块或方法函数时,总会想着 去某个地方把它拷贝粘贴过来,并做一些必要的更动。至此,这两处的代码 其实己经失去了相关性的联系,虽然它们是很相似。通常拷贝粘贴的代码中 如果发现有b u g ,就需要对所有拷贝粘贴的代码进行修订,这很容易遗漏和疏 忽。而由一个设计良好的代码生成工具所产生的代码则可以保持这些代码问的有 机联系,从而比较容易的修正这些错误。 此外,在现代软件开发中,开发框架的应用越来越普遍,同时也越来越复杂, 人们不得不加入更多的手工代码。这也导致了代码的复杂性,选择代码生成工具 可以降低复杂性。 再则,代码生成工具用抽象的设计模型来产生代码,这种方式具有即使是最 第2 章代码生成:【:具分析 好的纯手工编制系统也很难具有的便利性和可维护性。如果需要业务规则写到代 码中的话,最好就是将它们重构【 1 到独立的一层中。 事实上,如果使用代码生成工具的理由并不充分和必要的话,就不应该使用 它来生成大量的代码。一个良好设计和实现的生成工具并不应该只用来替换眼前 烦琐的代码编制,更应该从整个应用域的角度来考虑和设计1 1 8 】。 2 2 代码生成工具分类 2 2 1 按输入和输出分类 2 2 1 1 内嵌代码扩展生成工具 内嵌代码扩展生成工具的输入和输出都是代码,输出的代码是在输入代码的 基础上对一些代码段进行扩展。开发该类代码生成工具须从设计一门新语言丌始,” 通常该新语言是在现有语言的基础上进行一些语法扩展,而内嵌代码扩展工具就 用来把该现有语言的代码转换成新语言的代码。 o r a c l e 公司的p r o 系列( p r o * a d a 、p r o * c 、p r o * c o b o l 、p r o * f o r t r a n 、 p r o * p a s c a l 、p r o 木p u l ) 也属于该类代码生成工具。 内嵌代码扩展生成工具的处理流程如图2 2 所示: l 源代码 l 砸瓯码扩展生成 上 i 输出源代码 图2 2 内嵌代码扩展生成工具处理流程图 沈阿l 理j 【人学硕+ 学位论文 2 2 1 2 混合代码生成工具 混合代码生成工具和内嵌代码扩展生成工具类似,输入和输出都是代码文件, 但其无须先设计一门新语言,输入和输出都是同一种高级程序语言的源代码,而 且其最大的特点是产生的代码可作为下一次代码产生流程的输入。该类代码生成 工具可用于写在代码注释罩的测试用例数据产生测试代码、写在代码注释罩的存 取定义产生数据库存取代码等等。混合代码生成工具的一般处理流程如图2 3 所 示: 图2 3 混合代码生成工具处理流程图 2 2 1 3 局部代码生成工具 局部代码生成工具将一个定义文件作为输入,产生一组基本类。这些基本类 完成了大部分对设计的实现中的底层的工作,用户可以通过继承这些基本类和扩 展基本类的方法来完成设计。该代码生成工具读取一个定义文件,并用一个或多 个模板产生一个或多个基本类。这些基本类为用户手写的子类所扩展,最后所有 的类一起被编译为最终产品。局部代码生成工具的一般处理流程如图2 4 所示: 第2 章代码生成j t :具分析 2 2 1 4 层代码生成工具 图2 4 局部代码生成j f 具处理流程图 层代码生成工具中的“层是指当前流行的多层应用程序中的“层”,如业务 逻辑层、界面表示层、数据访问层等。对比局部代码生成工具,层代码生成工具 的输入是一个定义文件,但含有可以产生和维护多层
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七台河市人民医院感染病护理安全操作考核
- 2025年土地开发项目节能评估报告(节能专)
- 呼伦贝尔市中医院胎盘滞留处理技能考核
- 中国玻璃纤维无纺针刺毡项目商业计划书
- 鄂尔多斯市人民医院呼吸科临床数据挖掘与科研转化能力考核
- 鄂尔多斯市人民医院辐照血液应用考核
- 2025中医院超声诊断符合率考核
- 邢台市人民医院骨盆骨折前后联合入路考核
- 长治市中医院难治性肾病综合征诊疗决策考核
- 中国植物藻类提取物项目商业计划书
- 运动营养监管-洞察及研究
- 麻醉低氧血症临床处理与预防策略
- 2024年中国大唐集团有限公司招聘考试真题
- 医院培训课件:《狂犬病暴露后处置》
- 绿色低碳建筑设计 课件 第3章 建筑空间设计
- 前置仓模式下叮咚买菜供应链管理优化策略研究
- 收养送养抱养协议书
- 产后耻骨联合分离护理
- 无需赡养协议书
- 工程制图(中国石油大学(华东))知到智慧树期末考试答案题库2025年中国石油大学(华东)
- 2024年高考山东物理试题分析及2025届高三复习备考策略
评论
0/150
提交评论