(检测技术与自动化装置专业论文)web应用代码自动生成平台中代码生成系统的研究与实现.pdf_第1页
(检测技术与自动化装置专业论文)web应用代码自动生成平台中代码生成系统的研究与实现.pdf_第2页
(检测技术与自动化装置专业论文)web应用代码自动生成平台中代码生成系统的研究与实现.pdf_第3页
(检测技术与自动化装置专业论文)web应用代码自动生成平台中代码生成系统的研究与实现.pdf_第4页
(检测技术与自动化装置专业论文)web应用代码自动生成平台中代码生成系统的研究与实现.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

(检测技术与自动化装置专业论文)web应用代码自动生成平台中代码生成系统的研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 随着计算机技术,特别是i n t e m e t 技术的发展,基于w e b 的软件技术得到了 空前的发展,各行业信息化进程日益加快,国内大小企业都在构建满足本行业发 展的w e b 信息系统。然而,w e b 软件的开发过程中仍然存在着项目开发周期长, 开发效率低,不能快速响应需求变化等普遍问题,严重影响了信息化建设的脚步。 因而迫切需要一种新的开发模式,提高软件开发速度。总体来看,软件复用技术 和代码自动生成技术己成为解决软件开发问题的有效方法。 目前软件的自动生成一直是业界的研究方向。我们针对w e b 应用以及信息系 统的特点,确定了以研究组件复用技术和代码自动生成技术为基础,构建w e b 应用代码自动生成平台,并确定了以组件库管理系统和代码生成系统为整个平台 的核心。 本文主要负责平台中代码生成系统部分的研究与实现,借鉴了目前流行的模 型驱动开发思想,提出了基于数据模型的代码生成方案,确定了研究的主要内容 为数据模型设计和代码生成器设计两部分。这种基于数据模型的代码生成系统, 将使软件的开发工作围绕着数据模型开发进行,实现了模型到代码的自动转换, 从而提高了开发速度,改变了传统的软件开发模式。 文中从分析目标应用架构入手,以基于j 2 e e 开源框架的w 曲应用为研究对 象,确定了自动生成的目标代码。进而根据w e b 层次架构的特点,将描述w e b 应用的数据模型进一步细化,设计并定义了三类模型,即对象模型、操作模型和 页面模型,分别完成对w e b 应用不同层次的描述。在代码生成系统设计中,在 分析系统需求的基础上给出了整体设计方案,设计出了基于模板技术作为代码生 成机制的代码生成器模型,并由此确定了系统的整体架构。 在系统实现中,建立了模型读取器,设计了系统中用到的各种模板文件,在 代码生成器的实现方面,通过分析目标代码确定了代码生成器的类型,设计了系 统中代码生成器的组织结构,并给出了代码生成规则设计的一般原则,进而实现 了代码生成器的生成规则。最后搭建了系统控制器,定义了系统中的代码自动生 成任务,从而实现了整个代码生成系统。 本文最后,对研究工作进行了总结,提出了下一步的工作展望。 关键词模型驱动开发;代码自动生成;代码生成器;w e b 应用快速开发 a b s t r a c t w i t hc o m p u t e rt e c h n o l o g y , p a r t i c u l a r l yt h ed e v e l o p m e n to fi n t e m e tt e c h n o l o g y , w e b b a s e ds o f t w a r et e c h n o l o g yh a sa l lu n p r e c e d e n t e dd e v e l o p m e n t ,t h ei n f o r m a t i o n o fa l li n d u s t r i e si sa c c e l e r a t i n gt h ep r o c e s s a n ds i z eo ft h ed o m e s t i ce n t e r p r i s e sa r ei n b u i l d i n gw e bi n f o r m a t i o ns y s t e mt h a tm e e tt h ed e v e l o p m e n to f t h ei n d u s t r y h o w e v e r , t h ep r o c e s so fw e bs o f t w a r ed e v e l o p m e n ts t i l le x i s t sp r o j e c td e v e l o p m e n tc y c l ei s l o n g ,d e v e l o p m e n ti si n e f f i c i e n t ,a n dc a nn o tr e s p o n dq u i c k l yt ot h ec h a n g e si n d e m a n d ,s u c ha saw i d e s p r e a dp r o b l e m ,w h i c hi m p a c ts e r i o u s l yo nt h ep a c eo f c o n s t r u c t i o no fi n f o r m a t i o n h e n c et h e r ei sa nu r g e n tn e e df o ran e wd e v e l o p m e n t p a r e ma n di m p r o v i n gs o f t w a r ed e v e l o p m e n t ss p e e d o v e r a l l ,s o t t w a r er e u s ea n d a u t o m a t i cc o d eg e n e r a t i o nt e c h n o l o g yh a sb e c o m ea ne f f e c t i v em e t h o dt os o l v et h e p r o b l e mo f s o f t w a r ed e v e l o p m e n t a tp r e s e n t ,t h ea u t o m a t i cg e n e r a t i o no fs o f t w a r eh a sb e e nt h ei n d u s t r y sr e s e a r c h d j r e c t i o n w ec o n s i d e r e dw e ba p p l i c a t i o n sa n di n f o r m a t i o n s y s t e m s f e a t u r e , d e t e r m i n et ot a k et h ec o m p o n e n tr e u s ea n da u t o m a t i cc o d eg e n e r a t i o nt e c h n o l o g ya s t h eb a s eo ft h er e s e a r c h ,b u i l dt h ea u t o m a t i cc o d eg e n e r a t i o np l a t f o r mf o rw e b a p p l i c a t i o n ,a n dt a k et h ec o m p o n e n tl i b r a r ym a n a g e m e n ts y s t e ma n dc o d eg e n e r a t i o n s y s t e ma sc o r ef o rt h ew h o l ep l a t f o r m t h i sp a p e ri s m a i n l yr e s p o n s i b l ef o rt h es t u d ya n di m p l e m e n t a t i o no ft h ec o d e g e n e r a t i o ns y s t e mp a r t i nt h ep l a t f o r m ,d r a w so nt h e p o p u l a rm o d e l - d r i v e n d e v e l o p m e n ti d e a , b r i n g sf o r w a r dt h a tt h ed e s i g ns c h e m ao f t h ec o d eg e n e r a t i o nb a s e d o nt h ed a t am o d e l ,i d e n t i t i e st h em a i ns t u d ya r ed a t am o d e ld e s i g na n dc o d eg e n e r a t o r d e s i g n t h i sc o d eg e n e r a t i o ns y s t e mw h i c hi sb a s e do nd a t am o d e lw i l le n a b l e s o f t w a r ed e v e l o p m e n tw o r ko nt h ed e v e l o p m e n to fd a t am o d e l ,i m p l e m e n t st h e a u t o m a t i cc o n v e r s i o nf r o mt h em o d e lt oc o d e ,i m p r o v e st h es p e e do fd e v e l o p m e n t , c h a n g e dt h ep a r e mo f t r a d i t i o n a ls o f t w a r ed e v e l o p m e n t t h i sp a p e rb e g i n sw i mt h ea n a l y s i so ft h et a r g e ta p p l i c a t i o n sa r c h i t e c t u r e t a k e st h e w e ba p p l i c a t i o nb a s e do nj 2 e eo p e n s o u r c ef r a m e w o r ka st h eo b j e c to fs t u d y , t h e n d e t e r m i n e st h et a r g e tc o d et h a ti sa u t o m a t i c a l l yg e n e r a t e d t h e n , d e p e n d i n go nt h e f e a t u r e so fw e bh i e r a r c h i c a ls t r u c t u r e ,a n dm a k eaf u r t h e rr e f i n e m e n tw i t hd a t am o d e i t h a tu s e df o rd e s c r i b i n gw e ba p p l i c a t i o n , d e s i g n sa n dd e f i n e st h et h r e em o d e l s , n a m e l y , o b j e c tm o d e l ,o p e r a t i o nm o d e la n dp a g em o d e l ,c o m p l e t e st h ed e s c r i p t i o no f - i i i 北京工业大学工学硕士学位论文 w e ba p p l i c a t i o nw i t hd i f f e r e n t l a y e rs e p a r a t e l y i nt h ec o d eg e n e r a t i o ns y s t e m s d e s i g n ,b r i n gf o r w a r dt h eo v e r a l ld e s i g ns c h e m ao nt h eb a s i so fs y s t e mr e q u i r e m e n t s a n a l y s i s ,d e s i g n st h ec o d eg e n e r a t o rm o d e lw h i c hi sat e m p l a t e b a s e dc o d eg e n e r a t i o n a sam e c h a n i s m ,a n dt h e r e b yd e f i n e st h ew h o l eo v e r a l la r c h i t e c t u r eo ft h es y s t e m i nt h ei m p l e m e n t a t i o no ft h es y s t e m ,s e tu pt h em o d e lr e a d e r s ,d e s i g na l lk i n d so f t e m p l a t ef i l eu s e di ns y s t e m ,i nt h i sa s p e c to ft h ei m p l e m e n t a t i o no f c o d eg e n e r a t o r , d e f i n et h et y p eo fc o d eg e n e r a t o rt h r o u g ht h ea n a l y s i so ft a r g e tc o d e ,d e s i g nt h e o r g a n i z a t i o n a ls t r u c t u r eo fc o d eg e n e r a t o ri nt h es y s t e m ,t h e np r e s e n tt h eg e n e r a l p r i n c i p l eo ft h ec o d eg e n e r a t i o n sn i l e ,t h e ni m p l e m e n tt h eg e n e r a t i o nr u l eo fc o d e g e n e r a t o r a tl a s t ,s e tu pt h es y s t e mc o n t r o l l e r , d e f i n et h et a s k so fa u t o m a t i cc o d e g e n e r a t i o ni nt h es y s t e m , t h u sr e a l i z et h ew h o l ec o d eg e n e r a t i o ns y s t e m f i n a l l y , t h i sp a p e rm a k e sas u l n l n a r yo ft h ew o r k ,a n db r i n g sf o r w a r dt h en e x ts t e po f p r o s p e e t k e yw o r d sm o d e l d r i v e nd e v e l o p m e n t ;a u t o m a t i cc o d eg e n e r a t i o n ;c o d eg e n e r a t o r ; w e b a p p l i c a t i o nr a p i dd e v e l o p m e n t i v 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 己在论文中作了明确的说明并表示了谢意。 签名:;驾曲 日期:塑立:五! 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名:型鱼导师签名: 日期:啤生c l 第1 章绪论 1 1 课题背景 第1 章绪论 近些年来,信息技术蓬勃发展,互联网空前繁荣,基于i n t e m e t 的w e b 应用 正改变着人们生活方式,并影响着国家社会政治、经济和文化的方方面面。随着 我国“十一五”建设的规划和全面实施,信息化建设将进入一个新的发展阶段, 各行业信息化的脚步日益加快。许多传统的信息系统和数据库系统正在被移植到 互联网上,企业迫切希望建设好自已的w e b 应用,提高核心竞争力。因而,w e b 应用的开发变得越来越重要,如何快速地开发适合于企业发展的w e b 应用系统 具有非常重要的意义。 目前国内许多企业正在规划建设信息系统或升级改造原有信息系统,随着 j a v a 开源社区不断地壮大和发展,基于j a v a 技术的j 2 e e 项i g l 逐渐增多,许多 w e b 应用都是采用j 2 e e 规范来开发的。一方面,基于j 2 e e 的w e b 多层架构利 用了m v c 模式,使得开发出的w e b 应用系统具备良好的可伸缩性、可扩展性 和可维护性,为提高软件质量、构建结构良好的、通用性较强的w e b 系统提供 了保证。另一方面,w e b 技术不断发展,新的设计思想层出不穷,出现了许多 优秀的w e b 应用框架和设计,如s t r u t s 、t a p e s t r y 、s p r i n g 、h i b e r n a t e 、i b a t i s 以 及f _ j b 3 0 规范的制定等,为j 2 e e 项目开发提供了一系列轻量级解决方案,降低 了j 2 e e 的开发难度,提高了w e b 应用的开发速度,非常适合中小企业来构建 w e b 应用。 然而,在实际工程项目之中,w e b 应用系统的实现并未因其支持技术的丰 富而变得简单,通常都会涉及页面表现、业务逻辑、数据库操作等多个层次、多 种技术的开发任务。作者结合参加开发的北京工业大学数字工大项目的几个w e b 应用系统建设,深刻地体会到传统的软件开发模式和w e b 软件本身特点所带来 的诸多问题: 项目开发周期长,软件成本和维护费用不断的增长; 沿用传统的软件开发模式,造成了项目开发周期很长,效率低,很难根据需 求和设计快速开发出系统原型,并与客户进行迭代优化。同时,现在软件开发的 复杂度越来越大,项目的进度压力越来越大,客户对质量的要求也越来越高,需 求总是在不断改变,开发人员疲于应付不断变更的客户需求,不能及时响应频繁 的软件变化。这样,传统的开发方法就很难适应这些新的需求,也就造成了软件 成本和维护费用不断的增长。 已有成果不能高效地重复利用; 北京工业人学工学硕t 学位论文 新的w e b 项目无法直接或方便地利用已有w e b 项目成果,使得大部功能模 块仍需要重新编写,也是造成不能快速实现w e b 应用的主要原因。 w e b 开发中重复性工作多,手工编码量大; 大多数的w e b 应用都是基于关系型数据库的信息系统,应用程序的开发主 要以数据库为主,其中重复性工作多,开发人员不得不重复地编写一些功能操作 相近,而操作对象不同的代码。重复性的代码编写,使得软件开发成了一件繁琐 的体力劳动。在系统设计到代码实现阶段,全部工作由开发人员手工编码完成, 其工作强度将随项目规模的增加而变大。 代码质量不能保证,后期维护工作困难。 项目组中软件开发人员水平高低不同,编码习惯各异,造成了程序风格不统 一,软件质量不能保证。同时,也造成了项目后期维护工作困难。 针对上述w e b 应用开发所存在的问题,迫切地需要一种新的开发模式来代替 原有的开发模式,解决目前开发方面的不足。为快速开发j 2 e e 项目,本课题引入 w e b 应用代码自动生成平台概念,通过研究代码自动生成技术和组件复用技术实 现基于j 2 e e 架构w e b 应用的快速开发。在这里需要解决的问题是:改变原有的软 件开发方式、提高软件质量和开发速度。 1 2 本课题的研究意义 w e b 应用代码自动生成平台的建立,是要改变传统的软件开发模式,帮助软 件开发人员实现w e b 应用的快速开发。本文主要涉及其中代码生成系统部分的 研究与实现,在项目开发过程中引入代码自动生成技术,将明显改善地传统w e b 软件开发模式中存在的问题。 代码生成器在项目中的应用,使系统设计成果可以自动转化为代码实现,避 免了直接去手工编写代码以及从事大量的重复性工作,减轻了开发人员的工作量 和工作负担,提高了工作效率,降低软件开发的成本,使开发人员在面对开发不 同w e b 应用时,可以实现快速构建系统的目的。同时,这种开发方式帮助开发 人员从繁琐的编码细节中解脱出来,把更多的时间和精力投入到业务问题的分析 和设计上,提高了系统的健壮性、可扩展性和可维护性,确保了软件的质量。由 此可见,我们将代码生成器带来的好处归类如下: 避免重复性的工作; 一方面,代码生成器减少重复代码的编写。代码生成器可以自动生成大量重 复性的代码,从而大大提高了开发效率,这是代码生成器最基本的特点。另一方 面,它可以减少因为开发人员疏忽而造成的b u g ,统一命名和程序风格,使代码 更易于阅读和维护。更重要的是代码生成器集成了软件设计和开发人员的最佳实 第1 苹绪论 践模式,使生成的目标代码具有更好的性能和质量保证。 系统设计成为主导; 由于代码生成器可以自动完成系统设计成果到代码实现的转换和映射工作, 因而只要系统设计没有差错,生成的代码就没有问题。可见,代码生成器的应用 使系统设计在项目开发过程中占据主导地位,系统设计的准确程度将决定最终生 成代码的准确程度。这样就使软件开发人员只需要考虑围绕系统业务逻辑设计进 行工作即可,开发代码任务则交给代码生成器去完成,确保系统设计与代码实现 保持一致。 使迭代式开发成为可能。 代码生成器使快速迭代式开发成为可能。我们可以根据初步设计快速生成一 个系统原型,这样项目可以尽早启动,缩短发布周期,使客户尽早看到开发结果。 而后,我们可以根据客户反馈逐步细化系统设计,利用代码生成器重新构建系统, 最终开发出满足需求的w e b 系统。同样,这种开发方式更容易应对需求变更。 当客户需求发生改变时,只需要修改系统设计,用代码生成器再生成一遍代码即 可。 因此,w e b 应用代码自动生成平台以及其代码生成系统的研究和实现,为改 善目前软件开发方法学,推动软件工程自动化进程具有极其深远的理论意义。而 代码生成器在w e b 项目中的成功应用,使加快项目开发成为可能,满足当前信 息化建设的需要,对加快企业信息化建设具有重要的现实意义。 1 3 相关领域的研究进展 软件开发的简便性、高效性一直受到学术界和软件业界的高度重视,软件的 自动生成更是业界努力发展的目标。 1 9 6 8 年n a t o 软件工程会议,m c l l r o y 在提交会议的论文 数据库操作的c r u d ( 增删改查) 代码 j s p 页面程序 j 2 e e 项目所需的配置文件 综上可见,通过代码生成器的设计和使用,可以自动生成构建w e b 应用所 需的各层代码程序。但是代码生成器采用的生成机制各有差异,下面是几种典型 的代码生成方式1 3 3 1 ; ( 1 ) 使用x s l 把x m l 转为j a v a 源代码; 这种方式的好处在于就把模板文件的解析和变量替换等工作交给了x s l 处 理器,大大减少了代码生成系统开发者的工作量,并且样式表语言的使用免去了 为文本定制规范的工作。但该方式存在一个问题是x s l 和p e r l 脚本一样可读性 差,因此用来生成源代码的脚本很难维护。 ( 2 ) 采用解析代码注释生成代码; 这种方式是通过解析代码文件中注释语句来生成代码,把控制代码生成和模 板处理的标签作为内联注释嵌入到j a v a 源代码文件中,这消除了同步多个相关 文件和控制文件的需要。 常见的应用如j a v a d o et 具可以将j a v a 代码中的注释生成h t m l 文档;面 向属性编程是最近流行的软件技术之一,而在这方面最优秀的软件莫过于 x d o c l e t t 3 4 1 ,它通过在j a v a 代码中添加特定意义的属性标签来生成目标代码。 ( 3 ) 基于模板解析的代码自动生成 这种方式通过模板解析引擎将输入的元数据来替换模板文件中的可变部分 生成目标代码。它最大的优点就是使代码生成部件与模板部件分离,作为外部文 件的模板易于修改、定制和调整,生成的代码更具灵活性。同时,模板作为代码 的原型,其内容更接近于目标代码,可读性高。此外,开源社区的模板引擎工具 已经非常成熟,如:v e l o c i t y l 3 5 1 、f r e e m a k e r 等,模板的解析工作可以由这些工具 北京工业人学工学硕:学位论文 来完成。因而,此种代码生成机制目前被采用得最为广泛。 综上分析了目前常用的三种代码生成方式,每种生成方式从不同角度出发, 各有特点和优势。在开发工作过程,我们可以针对生成的目标对象,选择合适的 一种或多种组合的代码生成策略来设计和实现代码生成器。 3 3 3 代码生成器分析 上文阐述了代码生成器的基本原理,可以总结出代码生成器完成的工作就是 由一种模型到目标代码的自动转化。但要使代码生成器在实际的项目中发挥优 势,在设计时就要着重考虑代码生成器的代码生成率和目标代码质量。同时,还 要考虑好代码生成器的可用性【3 6 1 和实用性【3 7 1 。因而,在代码生成器的设计、开 发、部署和维护过程中,我们要遵循以下一些基本原则: ( 1 ) 对要生成目标对象有全面的理解; 在生成代码前,我们必须要对目标对象有全面的理解,做到有的放矢。代码 生成率的高低取决于对目标对象的研究,最好事先手工编写出目标对象的大部分 代码,利用开发人员的最佳实践,再确定哪些代码可以被生成,利用编好的代码 为代码生成器的模板。可见,一个好的代码生成器,包含了设计人员多年的开发 经验和最佳实践。 ( 2 ) 明确代码生成器的输入源以及与目标代码的映射关系; 明确输入源与目标代码之间的映射关系,是设计代码生成规则的关键。同 时,输入源是否完整地描述了目标代码,以及输入源的结构是否容易理解,也是 影响代码生成率的重要因素。 ( 3 ) 将代码生成器平滑地引入到开发过程。 代码生成器作为辅助开发工具,如果可以将其灵活地集成到软件开发环境 ( 如:e c l i p s e ) 中,将大幅度提高软件的开发效率。 综上,我们利用以上关于代码生成器设计原则为指导,在本文中要设计的代 码自动生成器,是作为模型驱动开发中的一部分,完成由模型到代码的映射转换 工作。 3 3 目标应用的架构分析 在本文中,目标应用特指是代码生成器要生成的对象,即自动生成的w e b 应用。这里的w e b 应用是基于j 2 e e 开发规范的,采用了开源框架s t r u t s t 3 引、 s p r i n g t 3 9 1 和i - i i b e r n a t e l 4 0 l 作 j 2 e e 体系结构的一种轻量级实现。目前,s t r u t s 、 s p r i n g 和h i b e r n a t e 等开源框架得到广泛的使用,大量的实践证明了这些框架的 第3 苹基础问题分析与研究 稳定性、可靠性和强大的功能,尤其适合中小企业开发基于j 2 e e 的w e b 应用系 统。 在本文中首先对目标应用的架构进行分析和设计,主要有两方面的作用。一 方面,良好架构设计和模式的应用可以确保软件系统质量。另一方面,w e b 应用 架构的分析和设计为后面代码生成器设计和开发工作起到铺垫作用,并且w e b 应用各层次的解耦设计,以及大量的实践模式应用,有助于简化代码生成器设计, 提高代码生成率和生成代码质量。同时,代码生成系统中的数据模型建立离不开 对目标系统的分析。只有对目标系统分析清楚,才能设计出可以比较完整地表达 和描述目标系统的模型。因而,对目标应用的架构分析,也是为后面第5 章的数 据模型设计做好准备工作。 3 3 1w e b 应用的m v c 架构模式 m v c 架构模式是最常用的一种软件体系架构模式,广泛用于多层架构w e b 应用1 3 8 。m v c 模式将w e b 应用的输入、处理和输出分开,并把w e b 应用划分 为三个层次,即视图层、模型层和控制层。该模式具有以下优点: 各施其职,互不干涉 在m v c 模式中,三个层各施其职,所以一旦某一层的需求发生了变化,只 需要更改相应层中的代码,而不会影响到其它层中的代码,实现了软件的解耦。 有利于开发中的分工 在m v c 模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。 网页设计人员可以进行开发视图层中的j s p ,对业务熟悉的开发人员可开发业务 层,而其它人员可开发控制层。 有利于组件的重用 分层后更有利于组件的重用。如控制层可独立成一个通用组件,视图层也可 做成通用的操作界面。 在实际项目中,我们用j s p 页面作w e b 应用的展现层( 即视图层) ,s t r u t s 框架负责控制层,模型层由s p r _ ;- g 框架和i - f i b e m a t e 框架共同来完成。其中s p r i n g 框架负责处理w e b 应用的核心业务逻辑,用域模型表示业务对象,并提供业务 对象的数据访问;h i b e r n a t e 框架用于完成业务对象的数据库持久化工作。因而, 将m v c 中的模型层扩展为业务逻辑层、域模型层、数据访问层和持久层。 综上,基于j 2 e e 的w e b 应用表现为多层的架构体系,扩展了m v c 模式。 w e b 应用的程序结构被为分六层,这六层分别是展现层( p r e s e n t a t i o nl a y e r ) 、控 制层( c o n t r o l l e rl a y e r ) 、业务逻辑层( b u s i n e s sl a y e r ) 、域模型层( d o m a i nl a y e r ) 北京工业大学工学硕士学位论文 数据访问层( d a t a a c c e s sl a y e r ) 和持久层( p e r s i s t e n c el a y e r ) 。其架构如图3 2 所示。 展现层l i i 控制层 1 l j s p s t r u t s 1 厂 i 业务逻辑层 f l 域模型层 l 数据访问层 lj s p f m g l持久层i l i i b c m m 么、 h 盟 艇3 5 5 习 l 数据库l 【j 数据源 展现层v i c w 控制层c m t r o l 模型层m o d e l 图3 - 2 基于j 2 e e 的w e b 应用多层架构 f i g u r e 3 - 2b a s e do nj 2 e e sw e bm u l t i l a y e ra r c h i t e c t u 地 该体系结构的一个重要特征是每层都只能与相邻层直接交流。展现层只能与 控制层交流,业务逻辑层只能与控制层和数据访问层交流,并且只有数据访问层 才能调用持久层,从而访问系统中的数据源。如此一来,各层的改变将不会导致 跨层影响,便于系统的维护和扩展。 3 3 2w e b 应用的各层设计 从上图3 - 2 中,可以看出一个w e b 应用是通过多个层次共同协调工作的。 其中各层阃用v o ( v a l u eo b j e c t ) 值对象以及a r m y l i s t 对象列表的方式进行数 据传递。各层次的具体设计如下: 展现层p r e s e n t a t i o nl a y e r 展现层作为w e b 应用的前端显示,负责与用户进行交互操作、显示响应信 息等。在该层中由一组j s p 页面作为前端显示输出,由s h u t s 提供的a c t i o n f o r m 来封装与用户互动的数据元素。j s p 与a c t i o n _ f o r m 间通过r e q u e s t 、s e s s i o n 变量 的手段进行数据交流。 控制层c o n t r o l l e rl a y e r 第3 章基础问题分析与研究 用于转发业务请求,错误处理,异常处理等,s t r u t s 实现该层的控制作用, 通过a c t i o n 来接受用户请求与发生响应动作。 业务逻辑层b u s i n e s sl a y e r 业务逻辑层的设计采用了f a c a d e 门面模式【4 l 】,为用户定义统一的入口点, 作为业务组件对外界提供的服务接口。在业务逻辑层中,业务逻辑往往是系统实 现的核心,但具体的业务逻辑通常导致代码的高度耦合,该层借助s p r i n g 框架 可以很好地实现代码逻辑的解耦。通过s p r i n g 的i o c 反向控制模式 3 9 1 来装配业 务组件,如,d a o 对象,使系统更具扩展性。通过s p r i n g a o p 面向方面的思想, 将系统切面( 系统中基础功能) ,如事务管理、日志管理、安全认证等,与业务 逻辑分离开来,使业务逻辑代码更为简洁、清晰,提高了开发效率网。在该层中, 定义了与控制层交互的服务接口s e r v i c e 和具体的业务逻辑实现类s e r v i c e l m p l 。 域模型层d o m a i nl a y e r 域模型层由实际需求中的业务对象组成,即我们常说的b o ( b u s i n e s s o b j e c t ) ,如:c u s t o m e r 顾客对象、o r d e r 订单对象等。在j 2 e e 系统设计中,域 模型层中对象间的关系描述了系统业务。本文用p o j o 4 2 ( p l a i no l dj a v ao b j e c t ) 作为域模型,保存业务对象的数据,它是一种简单的j a v a 对象,不用实现一些 特殊的接口,只包括属性成员和相应的s e t t e r g e t t e r 方法。它保持了良好的面向 对象设计风格,便于测试和业务重用。在该层中,需要根据系统中的业务对象创 建p o j o 域模型。 数据访问层d a t a a c c e s sl a y e r 在数据访问层,引入了d a o 数据对象访问模式,实现了数据访问与业务逻 辑的分离,使该层中只包括数据访问逻辑,为业务逻辑层提供调用。数据访问层 借助h i b e r n a t e 提供的o r m ( o b j e c t - r e l a t i o n a lm a p p i n g ) 对象持久化机制,实现 了数据库的c r u d 操作。在该层中,设计了域模型的数据访问接口d a o 以及相 应的h i b e r n a t e 实现类d a o h i b e m a t c l m p l 。 持久层p e r s i s t e n c el a y e r 持久层是w 曲应用的末端,负责访问系统中的数据源。在传统的系统开发 中,该层占据大部分的开发时间,且随着需求的变更功能的修改,逐渐变得难以 控制。目前已经有许多的开源框架来解决持久层的各种问题,我们借助h i b e r n a t e 提供的o r m 对象关系映射【柏】和c r u d 封装,来解决面向对象编程与面向关系 数据库编程之间的矛盾,减少代码开发量。 综上,w e b 应用的这种分层设计有助于系统软件模块的解耦,实现软件项目 分工开发。同时,也有利于代码自动生成的设计。代码生成器只要针对各层次的 特点,分别生成j 2 e e 各层所需要的源代码即可 北京工业大学工学硕 学位论文 3 4 本章小结 本章对涉及代码自动生成的相关问题进行了基础研究和深入分析,为代码生 成系统的设计做好了准备工作。首先介绍了模型驱动开发方法的相关概念及特 点,分析了进行模型驱动开发的基础,并借鉴了该思想来引导本课题研究。其次 阐述了代码自动生成技术,介绍了代码生成器模型,总结了代码自动生成的机制, 分析了代码生成器的设计原则。最后对要生成的目标系统进行了架构分析,并给 出了w e b 应用中各层的设计。 第4 章代码生成系统设计 第4 章代码生成系统设计 从上一章代码生成器模型的一般性定义可以看出,实现代码自动生成的前提 是必须有对目标系统的信息描述,即系统的形式化描述。目标系统的全面分析和 准确描述,对于改善代码生成器的组织结构,提高代码生成率非常重要。同时, 映射规则是联系信息描述与到目标系统的桥梁,是实现代码生成的关键。 因而,在设计代码生成系统时,借鉴了模型驱动的思想,结合w e b 应用特点, 通过建立数据模型来描述目标系统。并由代码生成器封装映射规则,实现数据模 型到目标系统的自动转换。 4 1 系统分析 4 1 1 系统需求分析 在j 2 e e 开发中,框架的应用为我们提供了安全、日志、事务管理等服务功 能,大量设计模式的运用,使w e b 程序结构变得清晰,层次间耦合降低,提高 了软件质量【4 3 】。同时,众多通用组件,如数据库连接池组件、日志处理组件、上 传文件组件、打印报表组件等,也为w e b 开发提供了强大支持,使得w e b 开发 工作变得简单。 然而,w e b 信息系统的开发主要是集中在业务应用和实现业务功能上。对于 一个具体的业务功能模块,需要建立业务对象,如果业务是基于数据库的,还要 有对业务对象的c r u d 操作,然后建立业务逻辑,最后是建立显示页面。可见 一个业务功能的实现就需要对应j 2 e e 多个层次上的代码开发,因而开发工作还 是比较重的。 由此可见,w e b 应用开发的瓶颈不是在技术层面上,而是在于对系统信息中 大量的业务对象和业务功能的重复开发和应对需求变更上。为解决重复编码和业 务需求频繁变更的问题,可以通过代码自动生成的方式来完成,这正是开发代码 生成系统的需求所在。开发出一个实用的、可生成完整w e b 应用的代码生成系 统是很复杂的。但在w 曲信息系统中,由于开发模式基本固定的,涉及各层次 的代码结构和逻辑也是有特点和规律的,因而,可以根据目标系统特点和开发规 律找出实现代码生成的要点,确定代码生成系统的研究方案。 在信息系统开发时,我们可以看到一个业务对象和另一个业务对象,比如 c u s t o m e r 顾客对象和o r d e r 订单对象,它们不同之处仅表现为对象名称和对象属 性等不同数据信息的差异上,而代码结构完全相同。可见,对于业务对象这类代 北京工业大学工学硕l 学位论文 码的自动生成,只需要将提取出业务对象的基本数据绑定到固定的代码结构中即 可。因而,这类代码自动生成的关键就是业务数据本身。 而对生成业务对象c r u d 操作和业务逻辑来说,由于涉及了代码逻辑,所以 除了要提供基本业务数据外,还要提供用于描述操作和逻辑的数据,即描述数据。 代码自动生成时,需要由具体的代码生成规则结合这些描述数据,确定代码逻辑 的结构。再将基本的业务数据填充到代码逻辑结构中,从而生成最终的代码。可 见,对有这类包含有业务逻辑的代码自动生成,需要提供业务基本数据和描述业 务逻辑的描述数据这两部分才能实现。 综上,如果可以从业务对象、c r u d 操作、业务逻辑到最终页面的各层代码, 分析出其中的代码结构和特点,抽取出体现共性的基本数据以及描述性数据,那 么将是实现代码自动生成的前提保证。这些数据其实就是对w e b 应用不同侧面 的描述,我们结合模型驱动中模型建立的思想,考虑对w e b 应用进行抽象,从 而抽取出描述w e b 应用的数据模型。其中这个数据模型用于包含上述分析的基 本业务数据和描述性数据,通过数据模型的编写来生成代码和整个w e b 应用。 如果可以从w e b 应用中抽象出数据模型,使之可以对整个w e b 系统进行准确的 描述,那么对于代码的自动生成来说,已经是成功的一半了。 因此,在具体设计时,我们是以描述w e b 的数据模型为基础来建立代码生成 系统的。 4 1 2 系统目标 系统的主要目标就是完成数据模型到w e b 应用的自动转换,最终实现基于 数据模型驱动的软件开发方式,如图舢l 所示。 图4 1 基于数据模型驱动的软件开发方式 f i g u r e 4 - 1b a s e do nt h ed a t am o d e l - d r i v e ns o i t w a r ed g v e l o p m e n tm e t h o d s 这种开发方式中,代码生成系统取代了传统的手工编码,完成了软件工程中 由系统设计到实现的快速转换,将软件的开发工作可以围绕着编辑数据模型而进 行,改变了传统的开发方式。 4 1 3 系统功能 为实现w e b 应用开发过程的自动化,系统的主要功能有: ( 1 ) 初始化w 曲工程 第4 章代码生成系统设计 生成w e b - i - 程目录结构,加载w e b 运行所需的框架、组件和配置文件等。 ( 2 ) 根据数据模型自动生成代码 程序员通过编辑数据模型的x m l 文件,可以实现自动生成w e b 应用各层中 的j a v a 代码,j s p 文件、数据库s q l 代码以及配置文件等。 ( 3 ) 编译、打包、部署 实现对工程中源文件的编译,完成对w e b 应用的打包和部署工作。 4 2 系统设计 4 2 1 总体设计思路 为完成代码生成系统设计,要在整体上对代码自动生成过程有所把握。首先, 要明确代码生成器的输入源,输出目标;其次,要清楚输入源和输出目标之间的 映射关系。然后,再进行代码生成器设计,确定代码生成规则和转换逻辑,完成 输入源到输出目标的自动转换工作,实现代码自动生成。在本文中,实现w e b 应用自动生成的总体设计思路是,采用模型驱动来推导出目标系统,见图4 - 2 。 w h 胡 j s p 、i c i m l 页面 w 曲展现层 m 代码 控科崖 c h 代码 s 缸咖茁置立件 & 嘶墨务接口 业务逻辑层 业务逻辑t t 玛 数据访问层 c a o i i * 撮作代码 卸f m s ,碰k m 蠕量文件 域模l 蝠耐。业务对曩 图4 2 数据模型到目标系统的映射关系图 f i g u r e4 -

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论