(计算机应用技术专业论文)企业级应用软件架构模式的研究和应用.pdf_第1页
(计算机应用技术专业论文)企业级应用软件架构模式的研究和应用.pdf_第2页
(计算机应用技术专业论文)企业级应用软件架构模式的研究和应用.pdf_第3页
(计算机应用技术专业论文)企业级应用软件架构模式的研究和应用.pdf_第4页
(计算机应用技术专业论文)企业级应用软件架构模式的研究和应用.pdf_第5页
已阅读5页,还剩47页未读 继续免费阅读

(计算机应用技术专业论文)企业级应用软件架构模式的研究和应用.pdf.pdf 免费下载

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

文档简介

沈阳工业大学硕士学位论文 摘要 随着软件技术和i n t e m e t 的发展,软件的规模变得越来越大。软件的架构对于系统的 分析和重用起着至关重要的作用。如何合理有效地确定系统的组件构成和组件之间的关 系,从而满足软件的功能属性和非功能属性的要求,是架构研究的热点问题。面向模式 的软件架构理论地提出,对该问题做出了一个合理地回答。 本文针对基于i n t e m e t 的、大规模的、业务逻辑复杂的企业级应用,根据系统的需求 和用例,重点研究如何利用软件模式,来构建应用的架构。 首先对软件架构理论和模式理论的产生、概念做了分析和论述,并且介绍了两大软 件平台j 2 e e 和n e t 的架构。指出软件架构是以系统的高层设计和总体结构为中心的,而 模式是对软件系统的设计和实现中重复出现的特定问题的解决方案进行抽象和提炼,所 得到的公共要素,是经验的总结,对于软件架构的构建具有指导作用。其次,按照问题、 解决方案和结构、实现的思路深入探讨了架构模式,总结了它们的优缺点,并且从中分 析出了所包含或者涉及到的设计模式。最后,结合个具体的企业级应用实例企业远 程教育支撑平台,在架构模式理论研究的基础上,利用层、模型一视图一控制器和数据 传输对象等模式来构建系统的架构,从而在实践中论证了合理地应用模式可以提高系统 的可维护性、可扩展性和可配置性。 在本文中,吸取了多d t o 模式的优点,结合工厂模式和策略模式,利用接口来抽象, 对d t o 模式的实现做出了改进,并且应用到了实际软件项目中,从实践中证明了该解决 方案是满足可插入性的设计原则的。这是本文的一个创新点。 关键词:架构,模式,企业级应用,重用,可维护性 - 1 婆塑三些奎堂堡主堂堡堡苎 r e s e a r c ha n d a p p l i c a t i o no f e n t e r p r i s e a r c h i t e c t u r ep a t t e r n s a b s t r a c t w i t ht h e d e v e l o p m e n to fs o f t w a r et e c h n o l o g ya n di n t e m e t , t h es c a l eo fs o f t w a r eh a s b e c o m e l a r g e ra n dl a r g e r i ti s c r u c i a lf o rt h es o f t w a r ea r c h i t e c t u r et oa n a l y z ea n dr e u s et h e s y s t e m i ti sah o tt o p i c t od e f i n et h ec o m p o n e n t so fa s y s t e ma n d t h e r e l a t i o n s h i pa m o n g t h e m a n dm e e tt h er e q u i r e m e n to ff u n c t i o n a la n dn o n f u n c t i o n a l p r o p e r t y t h e nt h et h e o r yo f p a t t e r n - o r i e n t e ds o f t w a r ea r c h i t e c t u r ei sp u tf o r w a r da n d i tg i v e sar e a s o n a b l ea n s w e rf o ri t t h i sd i s s e r t a t i o nd i s c u s s e sh o wt oc o n s t r u c tt h ea r c h i t e c t u r eo fl a r g e s c a l e e n t e r p r i s e a p p l i c a t i o nw i t hc o m p l e x b u s i n e s sl o g i cb a s e do ni n t e m e tu s i n gs o f t w a r ep a t t e r ni na c c o r d a n c e w i t ht h e r e q u i r e m e n t a n du s ec a s e f i r s t l y ,t h eg e n e r a t i o na n dc o n c e p t so fs o f t w a r et h e o r yo na r c h i t e c t u r ea n dp a t t e r na r e d i s c u s s e d a n di ti n t r o d u c e st w o b i g s o f t w a r ep l a t f o r m sa sj 2 e ea n d n e t i ti sp o i n t e do u tt h a t s o f t w a r ea r c h i t e c t u r ei sc e n t e r e do nh i g h - l e v e ld e s i g na n dt h ew h o l es t r u c t u r eo ft h es y s t e m p a t t e mi ss u m m a r i z a t i o no fe x p e r i e n c ea n da l s ot h ec o m l n o nf a c t o rt h a ti so b t a i n e d b y a b s t r a c t i n gs o l u t i o n st oc e r t a i np r o b l e m sr e p e a t e d l ya p p e a r e di nd e s i g n i n ga n da c t u a l i z i n g s o f t w a r es y s t e ma b s t r a c t e df r o me x p e r i e n c e , p a t t e r np l a y sa ni n s t r u c t i v er o l ei n d e s i g n i n g s o f t w a r ea r c h i t e c t u r e s e c o n d l y , o n t h e s e q u e n c e o f p r o b l e m , s o l u t i o n , s t r u c t u r e a n d a c t u a l i z a t i o n ,t h e d i s s e r t a t i o n e x p l o r e s a r c h i t e c t u r ep a t t e r n sa n dg e n e r a l i z e sa d v a n t a g e sa n dd i s a d v a n t a g e so f t h e m r e s p e c t i v e l y l a s t l y , o i lt h eb a s i so f a 1 1e n t e r p r i s ea p p l i c a t i o n e n t e r p r i s ee d u c a t i o ns u p p o r tp l a t f o r m o ni n t e m e t , t h ea u t h o ra n a l y s e st h ea p p l i c a t i o no fa r c h i t e c t u r ep a t t e r ni nt h ed e s i g no fs y s t e m a r c h i t e c t u r ew i t hl a y e r , m v ca n dd a t at r a n s f e ro b j e c t p a t t e r ne t c a n di td i s c u s s e ss u c h b e n e f i t s a sm a i n t a i n a b i l i t y , a b i l i t yo f e x t e n d i n ga n dc o n f i g u r a t i o nt os y s t e m sd u e t ot h ea p p m p r i a t eu s e o fa r c h i t e c t u r e p a t t e r n i np a r t i c u l a r , b a s e do n p r a c t i c a lp r o b l e m sa n d t h er e s e a r c ho f p a t t e r no fd t o ,t h ea u t h o r s u g g e s t sa ni m p r o v e dd t op a t t e r nb yu s i n gi n t e r f a c et oa b s t r a c tw i t hf a c t o r yp a t t e r na n d s t r a t e g yp a t t e r n t h er e a l i z a t i o no ft h ed t o p a t t e r n h a sb e e nu s e di na l la c t u a ls o f t w a r e p r o j e c t 2 沈阳工业大学硕士学位论文 a n d p r o v e d t h a tt h es o l u t i o ni sf e a s i b l ea n dm e e t st h e r e q u i r e m e n to f d e s i g np r i n c i p l e 。t h i si sa l l i n n o v a t i 0 1 1o ft h ed i s s e r t a t i o n k e y 眦:a r c h i t e c t u r e , p a t t e r n ,e n t e r p r i s e a p p l i c a t i o n r e u s a b l e , m a i n t a i n a b i l i t y 3 独创性说明 本人郑重声明:所呈交的论文是我个人在导师指导下进行的研究工 作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得 沈阳工业大学或其他教育机构的学位或证书所使用过的材料。与我一同 工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表 示了谢意。 签名:日期:w v 孑佑 关于论文使用授权的说明 本人完全了解沈阳工业大学有关保留、使用学位论文的规定,即: 学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公 布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论 文。 ( 保密的论文在解密后应遵循此规定) 签名:生塑! 导师签名:登查乞 日期:讪。掣3 ,j 沈阳工业大学硕士学位论文 1 绪论 1 1 研究的目的和意义 1 1 1 企业级应用设计的难点 一般来说,企业级应用指的是规模庞大,业务逻辑复杂的系统。例如:金融系统、 供应链系统、预订系统以及e r p 系统等。这些系统运行着各种各样的业务。企业级应用 具有自身特殊的难点和解决方案。它们不同于嵌入式系统、控制系统、通讯系统和桌面 系统。 作为一个企业级应用,往往涉及到需要解决以下问题【1 】: ( 1 ) 持久保存数据: ( 2 ) 海量数据的存储; ( 3 ) 数据的并发访问; ( 4 ) 大量的用户图形界面; ( 5 ) 需要和其它应用集成; ( 6 ) 数据概念不统一; ( 7 ) 复杂的业务逻辑。 采用何种技术,如何分析和设计一个企业级应用,是企业级应用设计领域的一个难 点。 1 1 2 软件架构的重要性 自从上个世纪数字计算机问世以来,软件开发技术一直在不断地发展。起初人们对 硬件编程,接着对操作系统编程。1 9 6 8 年第一个数据库出现以来,人们开始在数据库平 台上编程,并且在这一阶段充分发展了3 0 多年。而现在,人们开始在应用服务器上编程。 随着i n t e r n e t 的发展,越来越多的程序开始运行在i n t e r n e t 上,从而提出了对分布式 的要求。为了支持i n t e r n e t 访问,服务器的负载大大增加。使用多个并行的服务器的解决 方案优于使用个强大的主机系统1 2 l 。另外,前者在安全性上比后者更有优势。 - 1 沈阳工业大学硕士学位论文 由此可见,软件技术的发展和分布式计算的需求,使得软件的规模越来越庞大。软 件的规模及复杂度和软件技术是一对相互作用的矛盾体。当软件的规模和复杂度超出了 人们在当时的技术条件下所能驾驭的程度,就容易导致软件危机。这时人们就会寻找更 先进的软件方法和技术来解决该问题。每当出现一种先进的方法和技术,就会使软件危 机得到一定的缓和。然而这种进步又促使人们把更多的任务交给计算机去解决,于是又 需要更先进的方法和技术。软件技术的研究和发展经历了这样的过程:结构化编程,面 向对象编程、面向对象分析和设计,面向架构的分析和设计,面向模式的架构分析和设 计。 结构化编程是以具体的功能为核心来组织程序的结构,它的封装度仅为1 级,即仅 有对于特定功能的封装,一般称之为函数。这使得结构化的方法很难适应需求的变化, 面向对象的方法正是在这一点上优于结构化的方法。在面向对象领域,是以对象来组成 程序结构的,一个对象有自己的职责,通过对象间的交互来完成系统的功能,这使得它 的封装度至少为2 级,即封装了完成自己职责的方法和数据。另外面向对象的方法还支 持更高层次的封装,比如:通过对于不同的具体对象的共同的概念行为进行描述,可以 达到3 级的封装度抽象类或者接口【3 1 。封装的层次越高,抽象的层次就越高,使得设 计、代码有更高的弹性,更容易适应变化。 软件架构在系统分析和系统设计中和面向对象分析( o o a ) 和面向对象设计( o o d ) 有一定的差异。传统的o o a o o d 是纯粹面向对象的分析和设计,注重于对象和类的提 取、关系确定和行为分派1 4 1 。软件架构从系统的角度出发,着重于系统的组织和构成, 对象和类的关系服从于系统的需要f 5 l 。通过架构分析和设计得到的类,有些看上去是面 向对象的极端形式,比如有时候类的行为和数据会被分割。软件架构还有一个重要特性 是,强调在分析过程中,参与人员之间有效地交流问题。它采用简明的、规范化的方式, 使得所有人员采用一种形式来参与分析和设计交流。软件架构的分析和设计融合了结构 化的分析和设计,面向对象的分析和设计的优点,使分析和设计的思维活动更加符合实 际情况。 - 2 沈阳工业大学硕士学位论文 1 1 3 软件架构构建的难点 软件架构是一个系统中的核心元素,是系统最难改变的部分,也是构建软件系统中 其它部分的基础。因此系统软件架构的好坏会从根本上决定基于该架构的软件系统的质 量。所以要构建一个正确的架构是一项困难的任务,下面从三个方面来论述。 首先,由于架构是一个系统的本质的反映,因此它一般是由系统中不容易改变的部 分组成,而这些不容易改变的部分往往是系统中的一些抽象的概念。但是,在构建系统 的架构前仅仅有一些用户的需求以及对于用户业务流程的用例,如果缺乏有效的指导原 则,很难从这些信息中提取出反映问题领域本质的概念来。关于这一点,一个比较有效 且常用的方法是c o m m o n a l i t y v a r i a b i l i t y ( 公共性,可变性) 分析f 6 】。它的核心思想是针对 问题领域中的概念进行分类,把那些看上去不同但本质上属于一类的概念用一个抽象的 概念来表示,然后基于这些抽象的概念构建架构。这种分析方法在发现系统中的抽象概 念方面确实很有效,但是系统架构不仅仅是一些系统中的抽象概念,而且还描绘了这些 抽象概念问的关系,仅仅使用c o m m o n a l i t y v a r i a b i l i t y 分析方法不能十分有效的发现这些 关系。 其次,即使确定了抽象概念间的关系,构建起了一个系统架构,在这个架构的指引 下,还是很有可能陷入困境。因为该架构可能会缺乏对于进一步工作的指引,缺乏后续 发现对象的有效手段。换言之,架构可能过于空泛,缺乏可扩展性。 最后,一个经验丰富的系统架构师可能成功地构建了一个系统的架构,并且成功地 基于该架构完成了系统,但是他的经验、心得体会可能难以被其他的系统架构师所理解, 从而无法在解决同类问题时得到有效的重用。因为,这些0 得体会如果表现得过于抽象, 可能会显得空泛从而指导意义不大;如果表现得过于具体,则有可能陷入细节从而失去 通用性。 正是由于上述原因使得系统架构的构建显得非常困难,往往必须由资深的系统架构 师来完成。但是随着模式的提出以及对模式研究地深入,这种局面正在逐步地改变。 1 1 4 模式的来源 模式的思想源于2 0 世纪7 0 年代建筑工程设计师c 岫s t o p h e r e x a i l d a r 所发表的诸多 关于工程和建筑模式方面的著作。2 0 世纪8 0 年代,两位软件设计师w a r d 勖i l i i l 曲蜘 3 , 沈阳工业大学硕士学位论文 和k e n tb e c k 阅读了a l e x a n d a r 的关于模式的著作并且受到了启发并且在用s a m u t a l k 语 言开发软件时,将模式的思想应用其中。1 9 8 7 年,他们在o o p s l a 8 7 i no r l a n d o 上发表 了论文:“u s i n g p a t t e r nl a n g u a g e sf o ro b j e c t - o r i e n t e dp r o g r a m s ( 使用模式语言的面向对 象程序) ”,从而正式把模式的思想引入到软件领域中。1 9 9 5 年,四位软件设计专家e r i c h g a m m a 、r i c h a r d h e l m 、r a l p h j o h n s o n 和j o h nv l i s s i d e s 出版了( ( d e s i g np a t t e r n s e l e m e n t s o f r e u s a b l e o b j e c t o r i e n t e d s o f t w a r e ) ) ( 设计模式一可重用面向对象软件的基础) 一书。 该书被看作在面向对象的编程中使用模式化方法研究的开创性著作,为模式在软件工程 中获得广泛承认铺平了道路。随着模式对于软件开发的影响力的不断加大,越来越多的 计算机工作者投入到模式的研究和使用中,从而形成了许多模式团体1 7 1 。 1 1 5 理解模式 对于模式可以从三个方面来理解。 ( 1 ) 模式是一种解决方案,它包括两个方面1 8 1 :第一,每个模式规定了一个特定的结 构,即元素的一个空间配置。该结构关注于系统的静态方面。组件作为构造块,每个组 件有一个已定义的责任,组件之间的关系决定它们之间的位置。第二,每个模式规定了 运行期间的行为。这种行为关注解决方案的动态方面:模式的参与者如何协作,它们之 间的工作是如何组织以及它们之间如何通信。 ( 2 ) 模式在提供了问题的解决方案以外,在模式背后的指导原则十分重要。如:针 对接口编程,优先使用组合而不是继承,发现变化、封装变化【9 】等。 ( 3 ) 模式是一些关系,用来舒缓系统内部的“冲突力”。对于一个系统,其最终的 解决方案肯定是一些模块通过彼此的交互、建立关系来完成所需的功能。模式提出的方 法之所以优于一般的解决方案,就是因为模式给出的关系舒缓了系统内部的“冲突力”。 另外,模式并不是简单的给出了一些概念间的关系,它进一步提供了一个场景,提供了 进一步工作的指导。比如,面向对象设计中有一个著名的原则:s r p ( s i n g l er e s p o n s i b i l i t v p r i n c i p l e ) ,即一个类仅仅需要一个职责f 1 0 】。如果一个类有多于一个的职责,虽然在实现 上没有问题,但是其结果会导致本来毫无关系的模块间依赖过强,从而导致代码僵化, 违背了“强内聚,松耦合”的指导原则【1 0 1 。如果采用了恰当的模式作为问题的解,那么 就不会出现这种情况了。 4 沈附工业大学硕士学位论文 1 1 6 解决方案 本文的研究重点在于采用面向模式的系统架构方法来构建企业级应用,从而能够克 服上文提到的构建系统架构时的困难。 前面曾经提到过,c o i n m o n a l i t y n a r i a b i l i t y 分析方法可以有效地发现反映问题领域本 质的概念,但是不能十分有效地发现抽象概念间的关系。如果c o m m o n a l i t y v a r i a b i l i t y 分 析方法和模式结合起来,就能够有效地解决这个问题。如果有一些需求,并且知道有针 对该需求的模式,那么就可以通过c o m m o n a l i t y v a r i a b i l i t y 分析方法发现反映问题领域本 质的概念,然后根据可用的模式去建立这些概念之间的关系来实现需求。这样就可以通 过模式有效地解决概念间关系难以确定的问题。 模式具有深刻的内涵。它具有自身的意图、动机、适用性以及核心解决方案等众多 的内容【l l 】。一旦确定使用了一个模式,那么这个模式就搭建了一个内容丰富的场景,这 个场景可以非常有效地指导进一步的工作,有助于发现新的对象。这样,基于模式构建 的系统架构就变得抽象( 模式本身就是一些抽象的关系) 而不空泛并且具有很好的可扩 展性。 模式也提供了一套非常有效的记录方法,可以把自己经过反复验证的解决方案记录 下来传授给其他人重用,即模式具有可传授性【1 2 】。这样,有经验的系统架构师就可以把 自己的一些心得体会通过模式的方法记录下来,就可以克服经验无法有效传授的问题。 其实很多模式本身就是针对系统架构提出的,比如:m v c ( m o d e l v i e w - c o n t r o l l e r , 模型视图控制器) ,它是专门针对交互系统提出的,所以如果要构建一个交互系统, 就可以直接应用m v c 模式,然后在该模式所搭建的场景地启发下去发现m o d e l 、v i e w 以及c o n t r o l l e r ,再在这个大的场景地指导下根据其它的需求构建一些小的场景对系统进 行划分。 模式和系统架构有很大的相似性,都是处理一些抽象概念间的关系,但是二者还是 有很大的不同。模式是领域无关的【1 2 1 ,它是解决一些抽象问题的,但是系统架构是针对 要解决的实际问题的,是领域相关的。可以通过对问题领域的分析、分解,找到所要解 决的问题相匹配的模式,对该模式进行定制然后应用到系统中,从而构建起整个系统架 构。 - 5 - 沈阳工业大学硕士学位论文 1 2 论文的工作 基于上述研究背景,确定了论文的主要工作:研究架构模式理论和在企业级应用的 架构设计中如何应用模式来改善设计,主要有四部分组成: ( 1 ) 软件架构理论的研究 介绍架构理论的产生背景,探讨了架构的作用,重点介绍了当前两个主流软件平台 的架构,即j 2 e e 和n e t 。 ( 2 ) 模式理论的研究 介绍了模式的产生背景,探讨了模式的作用,重点介绍了模式的分类。 ( 3 ) 四种典型的架构模式的研究 研究了层架构模式、m v c 架构模式、管道一过滤器架构模式和数据传输对象架构模 式。 ( 结合一个实际的企业级应用,探讨如何面向模式,来构建系统架构 针对企业远程教育支撑平台,采用层架构模式来构建其整体架构,在表示层采用了 m v c 的架构模式,层间数据交换采用了数据传输对象模式,数据层则采用了d a o ( d a t a a c c e s so b j ) 模式。 6 沈阳工业大学硕士学位论文 2 软件架构 2 1 软件架构的定义 软件架构是对子系统、软件系统组件以及它们之间相互关系的描述【1 3 1 。子系统和组 件一般定义在不同的视图内,以显示软件系统的相关功能属性和非功能属性。系统的软 件架构是一件人工制品,是软件设计活动的结果。 该定义涉及到了这几个概念:组件、关系、视图、功能属性和非功能属性。具体说 明如下。 2 1 1 组件 组件( c o m p o n e n t ) 是软件系统的一个封装部分。组件有一个接口。在编程语言层 次,组件可表示为模块、类、对象或是一组相关函数。 组件也可以称为元素。根据组件的作用可以将其分为三种:处理元素,数据元素和 连接元素。处理元素提供包含被转变信息的数据单元的转化。连接元素既可以是处理元 素,也可以是数据元素。 根据面向对象程序设计规范,可以将组件分为六种:控制器组件、协作者组件、接 口组件、服务提供者组件、信息持有者组件和构造用组件。 2 1 2 关系 关系( r c l a t i o 璐h i p ) 表示组件之间的连接。关系可能是静态的,也可能是动态的。 静态关系可以直接用源代码显示,它们负责在系统架构内放置组件。动态关系处理临时 的连接和在组件间的动态交互。继承和聚合是静态关系,对象的创建、对象之间的通信 和数据传输是动态关系。 聚合和继承是静态关系。对象的创建、对象之间的通信和数据传输是动态关系。如 果将一个对象在某点插入一个容器并且事后删除它,那么这就是临时关系。 2 1 3 视图 视图( v i e w ) 代表一个软件架构的部分方面,这个部分方面专门显示一个软件系统 的特定属性。可以用四种视图来描述软件架构: ( 1 ) 逻辑视图:设计的对象模型,或一个相应模型; 一7 沈阳工业大学硕士学位论文 f 进程视图:并发和同步情况; 物理视图:软件到硬件的映射及其分布情况: 开发视图:在软件开发环境中的软件静态组织。 2 1 4 功能属性和非功能属性 功能属性( f u n c t i o n a lp r o p e r t y ) 用来处理系统功能性的特定方面,并且通常与特定 的功能需求相关。功能属性可以通过特定的功能使用户直接看到应用程序,也可以通过 它的实现来描述,例如用来计算功能的算法1 1 4 l 。 非功能属性( n o n f u n c t i o n a lp r o p e r t y ) 定义了未被功能属性描述覆盖的系统特征, 包括软件系统的可靠性、兼容性、开销、易用性、维护或者开发等方面。在设计软件架 构时,非功能属性非常重要。首先,软件系统随时问演化,它们必须相应地改变技术、 需求和系统环境。因此仅仅恰当地将系统分解是远远不够的。系统必须为变化、扩展和 适应做准备。如果软件系统没有完成,尤其当它的寿命很长时,维护起来将会变得困难 和昂贵。其次,软件系统的功能性必须遵从总体的可操作性、可靠性和效率。 功能属性和非功能属性是构建合理软件架构的目标,也是一个衡量的指标。 2 2 主流软件架构介绍 2 2 1j 2 e e 软件架构 j 2 e e 是开发分布式企业软件应用的平台,在各种领域内创建了适用于企业计算需要 的一系列标准,如数据库连接、企业业务组件、面向消息的中间件、w e b 相关组件、通 信协议、协同工作等。j 2 e e 基于开放的标准,提供开发组件的标准平台。j 2 e e 平台的 核心技术包括s e r v l e t 、j s p 、f j b 、j d b c 和j m s 。 j 2 e e 架构是一个多层架构,包含以下层【1 5 】: 用户层:用来与用户交互,并把来自系统的信息显示给用户。j 2 e e 平台支持不同类 型的用户,包括h t m l 用户、j a v aa p p l e t s 和j a v a 应用等。 w e b 层:w e b 层产生表示逻辑,并接受来自表示客户端的用户反馈,这些表示客户 端通常为h t m l 客户端,j a v aa p p l e t s 和其它的w e b 客户端。在所接收的客户端请求的 基础上,表示层对用户的请求产生相应的回应。在j 2 e e 平台中,是由w e b 容器内的s e r v l e t 和j s p 来实现这一层的。 8 沈阳工业大学硕士学位论文 业务层:这一层处理应用的核心业务逻辑。业务层为低层业务服务组件提供必要的 接口。业务组件通常被实现为e j b 容器内的e j b 组件。其中,e j b 容器提供组件生命周 期,管理持久性、事务和资源分配等。 e i s 层:这一层为企业的信息系统服务,包括数据库系统、事务处理系统、遗产系 统和企业资源计划系统等。e i s 层是j 2 e e 应用与非j 2 e e 应用或遗产系统集成的连接点。 2 2 2 n e t 软件架构 n e t 是为简化在第三代因特网的高分布式环境下的应用程序开发,基于开放互联网 标准和协议之上,实现异质语言和平台高度交互性,而构建的新一代计算和通信平台【1 6 1 。 n e t 架构是一个用于生成、部署和运行x m lw e b 服务及其它应用程序的环境。它 包含通用语言运行时( c o m m o nl a n g u a g er u n t i m e ) 和n e t 构架类库。 通用语言运行时:建立在操作系统之上,是n e t 架构的核心。它是一个软件引擎, 用来加载应用程序,确认它们可以没有错误地运行,进行相应的安全许可验证,执行应 用程序,然后在完成后将它们清除。它有两个主要目标:提高应用程序的稳定性和安全 性;减少应用程序开发者所必须写的冗长而又容易出错的底层代码的容量1 1 7 1 。 n e t 架构类库:向程序员提供所需用来编写在通用语言运行时的控制下运行的代码 的软件组件。它们按照单一有序的分级组织提供了一个庞大的功能集一从文件系统到对 x m l 功能的陋缮访问的每一样功能。n e t 构架类库是基于运行时面向对象的特性而建造 的,和普通语言运行时紧密集成的一族可重用类的集合。它大大简化了软件开发的难度, 而且很容易与第三方组件无缝集成1 1 8 】。n e t 架构类库主要包括对以下编程模型的支持: ( 1 ) 控制台应用程序: ( 2 ) 脚本和宿主应用程序; ( 3 ) w i n d o w sf o r m s 应用程序( w i n d o w s 桌面g u i 应用程序) ; ( 4 ) a s p n e t 应用程序; ( 5 ) w e bs e r v i c e s 应用程序; ( 6 ) w i n d o w s 服务程序。 - 9 沈阳工业大学硕士学位论文 3 软件模式 3 1 模式概述 首先给出模式的定义。 每个模式是一条由三部分组成的规则,它表示了一个特定环境、一个问题和一个解 决方案之间的关系。模式是在同时间里发生在世界上的一件事物和如何创建这个事物 以及何时创建它的规则。它既是一个过程,又是一个事物;既是一个活生生事物的描述, 又是产生那个事物的过程描述【8 】。 在软件领域,软件设计师通过对系统设计和实现中重复出现的特定问题的解决方案 进行抽象和提炼,发现了许多软件模式。这些模式来自于实践经验,又在开发具有特定 属性的应用中得到重复的使用。 3 2 模式对于软件设计的重要性 模式有助于改善软件的设计,提高可重用性和可扩展性,使得软件易于维护。 ( 1 ) 提高可维护性降低了软件的成本 构建一个企业级的软件系统是一项复杂而艰难的创作过程。系统包含的功能众多, 其目标各不相同,甚至有些目标是相互冲突的。系统的开发时间和生命周期很长,往往 经历数年,加上需求潜在的可变性以及需求自身的复杂性,都给系统的构建带来了困难。 如何构建一个高质量的,易维护的,可重用的软件系统是软件工程研究领域的难题。研 究表明,自从7 0 年代以来,软件维护是r r 组织面临的最大的成本花费。很多专家估计, 维护费用高达9 5 ,在人们请求改变的事情中,大约有4 3 是需求的改变【1 9 1 。由此可见, 提高软件的可维护性能够大大降低软件成本。 ( 2 ) 解决重用性和可维护性的矛盾 一个好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性【加】。怎样才能 做出一个符合这三项要求的设计昵? 关键是恰当地提高软件的可维护性和可重用性。但 是实际上,可维护性和可重用性是两个独立的目标,其方向并不总是一致的。 重用技术包括传统的重用和面向对象技术的重用。传统的重用包括代码的剪贴、算 法的重用、数据结构的重用等等。其致命的缺陷是:重用常常是以破坏可维护性为代价 一1 0 , 婆堕兰些查堂堡主塑笙苎 的【2 1 1 。那么怎样达到具有可维护性的重用呢? 答案是采用面向对象技术的重用,这种重 用技术的基础是设计原贝q 和软件模式。 设计原则是重用的原则,主要有以下六条吲: 开一闭原则( o p e n c l o s e dp r i n c i p l e ) ; 里氏代换原则( l i s k o vs u b s t i t u t i o np r i n c i p l e ) ; 依赖倒转原则( d e p e n d e n c y i n v e r s i o n p r i n c i p l e ) ; 接口隔离原则( i n t e r f a c e s e g r e g a t i o n p r i n c i p l e ) ; 组合聚合重用原则( c o m p o s i t i o n a g g r e g a t i o np r i n c i p l e ) ; 迪米特法则( l a wo f d e m e t e r ) 。 软件模式和设计原则的关系:设计原则是面向对象设计的理论基础,软件模式是将 理论应用到实践中的具体体现。软件模式遵循了设计原则,从而有助于提高设计师的设 计风格,采用统一的模式语言利于沟通,从而达到提高系统设计的可重用性和可维护性。 ( 3 ) 模式为设计人员提供了一种借以通信交流的语言。 模式是对在各种语境下反复出现,被相同“约束力”作用的问题的抽象的、核心的 解决方案。利用模式,对于一个特殊问题,就无需再用冗长且复杂的描述来解释其解决 方案。这样,在实际开发中,设计人员可以利用这种通用的语言进行交流。设计人员之 间不必从一无所有开始解释一个复杂的观点,只要根据名字提出一个模式,每一个人就 会知道,至少是粗略地知道,是怎么一回事。 3 3 模式的分类 根据模式包含的度量和抽象的范围,可以将模式分为三类:架构模式、设计模式和 惯用法。架构模式有助于把一个软件系统分解成子系统,设计模式有助于子系统和组件 的细化以及它们之间关系的细化,惯用法有助于实现特定编程语言中的特殊设计方面。 而且,每一种类型都由具有相似规模或抽象程度的模式组成。 3 3 1 架构模式( a r c h i t e c t u r a lp a t t e r n ) 架构模式表示软件系统的基本结构化组织图式。它提供一套预定义的子系统,规定 它们的职责,并包含用于组织它们之间关系的规则和指南【引。 1 1 沈阳工业大学硕士学位论文 架构模式决定了一个软件系统的基本设计策略。因为架构模式规定了一个软件系统 的架构特性;有助于把软件系统分解成子系统;对子系统的架构有影响。 架构模式将是本论文讨论的重点。 3 3 2 设计模式( d e s i g n p a t t e r n ) 设计模式提供一个用于细化软件系统的子系统或组件,或它们之间关系的图式。它 描述通信组件的公共再现结构,这些通信组件可以解决特定语境中的一个一般设计问题。 具体的说,对于一个通用的设计结构,设计模式确定其主要方面是什么,并且对主要方 面抽象,给出一个恰当的命名,从而使得这个设计结构可被用来构造可重用的面向对象 设计。所以,设计模式包含四个要素:名称、问题、解决方案和效果【2 4 】。 设计模式是独立于编程语言的中等规模的模式,它对软件系统的基础架构没有影响, 但对于子系统的体系结构有较大的影响。 3 3 3 惯用法( i d i o m ) 惯用法又称为代码模式,是具体针对一种编程语言的低层模式。它描述了如何使用 给定语言的特点来实现组件的特殊方面或者它们之间的关系。惯用法来自特定语言的编 程经验,它所关心的是如何实现一个设计。比如在c + + 中,管理动态分配的资源时,所 采用的引用计数方法就是一个惯用法。 3 3 4 架构模式和设计模式的联系和区别 从规模上看:架构模式描述的是软件系统中的基本的结构组织或纲要,它对应整个 软件系统;设计模式是中等规模的模式,对应构成子系统及其之间关系的更小的结构单 元。 从尺度上看:架构模式对尺度不敏感。一个只有几个模块的系统常常与一个拥有几 十个模块、几百个模块的系统一样,可以适用同样的架构模式,如m v c 模式。设计模 式有固定的尺度,是由一系列对象组成的。一个架构模式往往可以分解成多个设计模式 的联合使用。 从生命周期的角度上看:在系统设计的开始阶段,属于粗粒度设计,这时可以采用 架构模式;当粗粒度设计结束后,需要对软件系统的基本体系结构细化和扩展时,就可 以应用设计模式。 1 2 沈阳工业大学硕士学位论文 4 架构模式研究 4 1 概述 软件架构模式描述了软件系统基本的结构化组织方案。它们提供了一套预先定义好 的子系统来指定它们的职责,包括用于组织它们之间的规则和指南。软件架构模式代表 了模式系统中的最高等级模式,它有助于明确一个应用的基本结构。子系统的详细设计, 系统不同部分之间的通信和协作,以及它后期的扩展,都遵循这种结构。本章主要讨论 在企业级应用中经常用到的模式:层( l a y e r s ) ,模型视图控制器,管道过滤器和 数据传输对象。 4 2 层 层( l a y e r s ) 架构模式可以把整个系统分解成多个子任务组,每个子任务组处于一 个特定抽象层次上【圈。 4 2 1 概述 层架构模式组织成一个层次结构,每一层为上层服务( s e r v i c e p r o v i d e r ) ,同时也作为 下层的客户端。在一些层次系统中,除了包含一些输出函数外,内部的层只对相邻的层 可见。层的调用通过决定层间如何交互的协议来定义。这种风格支持基于可增加抽象层 的设计。这样,允许将个复杂问题分解成一个层堆栈的实现。由于每一层最多只影响 两层,同时只要给相邻层提供接口,允许每层用不同的方法实现,因此为软件重用提供 了强大的支持。 4 2 2 问题 在一个系统开始设计之前,系统设计师手中拥有大量的来自前期规划和调研阶段所 得到的客户需求材料,以及规格说明。“层( l a y e r s ) ”的提出,提供了一种高层划分方 法,有助于将系统划分成多个组成部分,从而把这个尚处于混沌状态的系统转换为一个 可维护的、容易理解的、稳定的、可移植的结构清晰的系统。 一般在系统设计时,由一系列高层模块和低层模块处理构成,并且高层的模块依赖 于低层。因此为了完成系统的设计必须要考虑以下因素: - 1 3 沈阳工业犬学硕士学位论文 ( n 把源码变动的影响限制在其所处的组件内,而不要扩散到其它组件中,避免整 个系统受到影响; ( 萄为各层定义稳定的接口。必要的时候,可以采用标准件将接口规范化; ( 3 ) 系统的各个组成部分应该可以被替换,即组件可以用其它的实现方法来替代而 不影响系统的其它部分; ( 4 ) 系统的开发需要被划分为多个部分,采用团队开发或者异地开发的方式。这时, 工作界限的划分必须清楚。 4 2 3 解决方案和结构 采用层架构模式将一个系统或者应用分解成了多个层。每个层都是相对独立的,称 为一个独立层。从结构上看,一个独立层由层名称、责任和协作者组成。责任包括两方 面:提供服务和委派任务。低层是协作者。 规定:第j 层使用第j 一1 层提供的服务,又向第j + 1 层提供服务。简言之,就是 向高层提供服务,使用低层提供的服务。一般来说,较高层不直接访问非相邻的较低层 的服务。如图4 1 所示。 图4 1 层架构模式示意图 1 4 高层 沈阳工业大学硕士学位论文 需要说明的是,一个独立层是由不同组件构成的复杂实体。这些组件彼此之间也是 相对独立的,它们在一个层次中,实现相似的功能。在同一层次中,组件之间可以直接 调用。 在相邻层之间,也可以互相调用。但是,一般在实际实现的时候,往往为了保护层, 加入了接口。这时,层间的调用是面向接口的。这遵循了设计原则的接口隔离原则。 4 2 4 实现 层模式用来分解一个比较大的系统,并且已经得到了广泛的应用。 在企业级应用领域,客户机应用服务器肟致据库服务器的三层架构已经逐渐替代了传 统的客户朋艮务器的两层架构。而且进一步发展为n 层架构。在本文的第五章将结合一一个 多层架构的应用软件,着重讨论层架构模式是如何应用至q 软件设计中的。该软件实现了 一个表示层一业务层数据访问层数据层的多层架构。 j a v a 虚拟机( j v m ) 是层模式的另一个典型应用p q 。提出j v m 的目的是为了实现平 台独立性。它的实现思想就是在操作系统和应用程序之间提供一个中间层,如上文所述, 各相邻层之间才进行交互。底层的操作系统给其直接上层的j v m 提供服务,不同的操作 系统对应不同的j v m 。应用程序的j a v a 代码被编译成平台独立的二进制代码,交付给 j v m 来解释。对于应用程序来说,底层操作系统是透明的。这就实现了所谓的一处编写, 到处运行。 i s o7 层模型和t c p i p 参考模型都是非常典型的应用阳。 结合这些实际应用,下面提出了在实现层架构模式时需要注意的事项,主要起到参 考和提示作用,

温馨提示

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

评论

0/150

提交评论