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

(计算机应用技术专业论文)应用软件开发中的模式应用技术研究.pdf.pdf 免费下载

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

文档简介

应用软件开发中的模式应用技术研究 摘要 软件产业经过几十年的发展,已经成为现代信息社会的重要支柱,在积累了 丰富的理论研究成果和开发经验的同时,也存在着很多的问题。为了解决这些问 题,人们提出了各种不同的技术和方法,软件复用技术就是其中之一。软件复用 技术是实现软件系统工程化的有效途径。 随着软件理论与技术的发展,软件复用方法已经从原先的代码复用发展到了 软件方案的复用。然而,随着软件系统规模的扩大和复杂性的增加,在软件设计 过程中人们所面l 临的问题己不再是考虑软件系统的功能问题,而是面临要解决更 难处理的非功能性需求的问题,如系统的性能、可适应性、可靠性、可移植性、 可维护性等需求。软件模式正是为了有效地解决此类软件复用问题。 软件模式是对以往软件开发经验的抽象总结,可以帮助软件开发人员复用成 功的实践,帮助人们进行更好的沟通。本论文对软件模式进行了较为系统的理论 研究,对于一些存在的问题提出了自己的观点,对于软件模式的使用效果给出了 一种模糊综合评判方法。对软件体系结构模式进行了研究和比较,对于几种体系 结构模式进行了较深入的分析,并以j 2 e e 为例,对其体系结构、技术规范及使 用的模式进行了研究。最后,通过客户关系管理系统中短信商务平台的介绍,研 究了模式的应用。 关键词:软件模式体系结构层模式m v c j 2 e e r e s e a r c ho fp a t t e r na p p ii c a t i o dj nt h ed e v ej o p m e n to f s o f t w ar e a b s t r a c t a f t e rs e v e r a ld e c a d e so fd e v e l o p m e n t ,s o f t w a r ei n d u s t r yh a s p r o v i d e d a n i m p o r t a n ts u p p o r t i nm o d e r ni n f o r m a t i o n s o c i e t y w h i l ea b u n d a n t t h e o r e t i cr e s e a r c hr e s u l t sa n d d e v e l o p m e n te x p e r i e n c eh a v eb e e n a c c u m u l a t e d ,t h e r es t i 儿e x i s tal o to fp r o b l e m si nt h ef i e l d i no r d e r t os o l v et h e s ep r o b l e m s ,p e o p l eh a v es u g g e s t e da 1 1k i n d so fd i f f e r e n t t e c h n o l o g i e sa n dm e t h o d s s o f t w a r er e u s et e c h n o l o g yi so n eo ft h e m s o f t w a r er e u s et e c h n o l o g yi sa ne f f e c t i v ew a yt oa c c o m p l i s ht h ep u r p o s e o fs o f t w a r es y s t e me n g i n e e r i n g w it ht h ed e v e l o p m e n to fs o f t w a r et h e o r ya n dt e c h n o l o g y ,t h em e t h o d s o fs o f t w a r er e u s eh a v ed e v e l o p e df r o mo r i g i n a lc o d er e u s et os o f t w a r e s o h t i o nr e u s e h o w e v e r ,w i t ht h eb r o a d e n i n go ft h es c a l ea n dt h e a u g m e n t i n go ft h ec o m p l e x i t yo fs o f t w a r es y s t e m s ,t h ep r o b l e m sp e o p l ea r e f a c e dw i t hi ns o f t w a r ed e s i g np r o c e s s e sh a v eg o n ef r o mf u n c t i o n a lo n e s t on o n f u n c l i o n a lo n e sw h i c ha r em o r ed i f f i c u l tt od e a lw i t h ,s u c ha ss y s t e m p e r f o r m a n c e ,a d a p t a b i l i t y ,r e l i a b i l i t y ,p o r t a b i l i t y ,a n dm a i n t a i n a b i 一 1it y s o f t w a r ep a t t e r n sa r et os o l v e t h e s es o f t w a r er e u s ep r o b l e m s e f f e c t i v e l y s o f t w a r ep a t t e r n sa r ea b s t r a c ts u m m a r i z a t i o nt ot h ep r e v i o u ss o f t w a r e d e v e l o p m e n te x p e r i e n c e t h e y c a n h e l ps o f t w a r ed e v e l o p e r s r e u s e s u c c e s s f u lp r a c t i c e ,c o m m u n i c a t ew i t he a c ho t h e rb e t t e r i nt h i st h e s i s , t h e r eg i v e sas y s t e m a t i ct h e o r e t i cr e s e a r c ht os o f t w a r ep a t t e r n s ,a n ds o m e o p i n i o n sa r eg i y e nt ot h ee x i s t i n gp r o b l e m s af u z z yc o m p r e h e n s i v e e v a l u a t i o nm e t h o dw h i c hi su s e dt oe v a l u a t et h ee f f e c to ft h eu s i n go f s o f t w a r ep a t t e r n si sp u tf o r w a r d a l s ot h e r eg i v e sr e s e a r c ha n dc o m p a r i s o n t os o f t w a r ea r c h i t e c t u r a lp a t t e r n s ,a n ds e v e r a la r c h it e c t u r a lp a t t e r n s a r ea n a l y z e di nd e p t h j 2 e ei sg i v e na sa ne x a m p l e ,a n di t sa r c h i t e c t u r e , t e c h n i c a ls p e c i f i c a t i o n ,a n dp a t t e r n sa r es t u d i e d i nt h ee n d ,t h r o u g h t h ei n t r o d u c t i o no ft h es m sb u s i n e s sp l a t f o r mi nt h ec r ms y s t e m ,t h e a p p l i c a t i o no fp a t t e r n si ss t u d i e d k e yw o r d s :s o f t w a r ep a t t e r n :a r c ht e c t u r e :l a y e r sp a t t e r n :m v g :j 2 e e 独创声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。 据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写 过的研究成果,也不包含未获得 l 注! 塑塑直墓焦霞墓缱型壹明 的! 奎拦豆窒2 或其他教育机构的学位或证书使用过的材料。与我同工作的同志对本研 究所做的任何贡献均己在论文中作了明确的说明并表示谢意。 学位论文作者签名:许乎 签字日期:2 口红堂月2 2 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,有权保留并向国家有 关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权学校可以将学 位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手 段保存、汇编学位论文。( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:毒宁 导师签字 签字日期:刁d 锌占月2 2 目 学位论文作者毕业后去向 工作单位: 通讯地址: 签字日期:2 口口辞f 月1 日 电话 邮编 应用软件开发中的模式应用技术研究 1 绪论 1 1 论文研究背景 软件产业经过几十年的发展,已经成为现代信息社会的重要支柱,在积累了 丰富的理论研究成果和开发经验的同时,也存在着很多的问题。这些软件开发过 程中的常见问题已经成为本行业的显著特征,对软件产业的持续发展带来了很大 的挑战。在2 0 世纪6 0 年代,爆发了软件危机,其具体表现是:软件开发失败的 风险大、软件成本高、软件开发进度难以控制并导致延期交付、软件工作量难于 准确估计、软件质量不理想、软件修改与维护困难等。 为了解决软件危机,人们提出了各种不同的技术和方法,软件复用技术就是 其中之一。软件复用是指重复使用“为了复用目的而设计的软件”的过程“1 ,是 在软件开发过程中避免重复劳动的解决方案。软件复用技术是实现软件系统工程 化的有效途径,其优点有:缩短开发周期、提高生产率、提高可靠性、提高质量、 提高用户编程效率、提高互操作性、支持快速原型、减少维护代价、减少培训开 销等等。随着软件理论与技术的发展,软件复用方法已经从原先的代码复用发展 到了软件方案的复用。然而,随着软件系统规模的扩大和复杂性的增加,在软件 设计过程中人们所面i 临的问题已不再是考虑软件系统的功能问题,而是面临要解 决更难处理的非功能性需求的问题,如系统性能、可适应性、可靠性、可移植性、 可维护住等需求。但是,传统的分析与设计只把注意力集中在功能需求上,而忽 略了非功能性的需求。这就要求软件界提出一种新的理论或技术来解决这类新出 现的问题。 近年来软件工程领域研究的热门课题软件模式,正是为了有效地解决此 类软件复用问题。 1 2 国内外研究现状 国外对于软件模式的研究开始于2 0 世纪8 0 年代,之后有很多的专题研讨会、 指导小组、电子论坛、期刊论文和学术专著等对模式研究给予了很多关注。最大 的模式团体是h i l l s i d e ,其成员包括w a r dc u n n i n g h a m 、k e n tb e c k 、g o f ( g a n g o ff o u r ,即“四人帮组”,指e r i c hg a m m a 、r i c h a r dh e l m 、r a l p hj o h n s o n 应用软件开发中的模式应用技术研究 和j o h nv l i s s i d e s 四人) 、g r a d yb o o t h 、j a m e s0 c o p l i e n 等,该团体是p l o p ( p a t t e r nl a n g u a g e so fp r o g r a m m i n g ,程序设计模式语言) 国际会议的发起者 之一。国外软件工程界对于模式的研究较为深入,已经把模式列入到了软件生命 周期的各个过程中,如需求工程、软件过程、项目计划、开发组织等,在各个层 次各个方面都产生了很多优秀的研究成果,其理论成果主要体现在从1 9 9 4 年开 始的p l o p 年会论文集中。 国内对于软件模式的研究与应用还处于起始状态,研究方向以设计模式为 主,对于其它的模式关注甚少,虽然近年来取得了一定的成果,仍需要大力加以 发展。 1 3 论文工作重点 软件模式是在软件业发展到一定的规模和程度之下才可能出现的,是对以往 软件开发经验的抽象总结,是经验在时间坐标轴上积累而成的智慧结晶,可以帮 助软件开发人员复用成功的实践,帮助人们进行更好的沟通。研究模式是为了学 习、借鉴前人成功的经验,提高应用软件开发的效率和质量,提高应用软件的可 扩展性及可移植性,使应用软件更好地适应未来的发展变化。 然而,对于软件模式的研究尚处于发展阶段,还没有形成关于模式的统一的 理论体系,对于什么是模式、模式的分类等一些基本的问题的看法也不完全一致, 在各方面都有很多的研究工作需要开展。因此,本论文将对模式理论系统的一些 基本方面进行研究,并对相关问题提出自己的观点,同时,对如何在项目开发过 程中应用模式来改善设计进行研究。 1 4 论文文章结构 论文总体上分为三大部分,各章内容如下: 第二章:系统介绍了软件模式的理论,给出了广义和狭义上软件模式的概念, 对存在的一些问题提出了自己的观点,对模式使用效果提出了模糊综合评判方 法。 第三章:对软件体系结构模式进行了研究和比较,并以j 2 e e 为例,对其体 系结构及其中使用的模式进行了研究。 第四章:对模式的应用进行了研究。 2 应用软件开发中的模式应用技术研究 第五章:对本论文进行总结,并对软件模式的研究工作进行展望。 应用软件开发中的模式应用技术研究 2 软件模式理论研究 2 1软件模式的来源及发展 “模式( p a t t e r n ) ”一词作为正式的概念最早是由美国建筑大师 c h r i s t o p h e ra l e x a n d e r 于2 0 世纪7 0 年代提出来的。 “每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解 决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。1 。” “简单地说,模式是一个出现在世界上的实物,同时也是一条规则,告诉你 应该如何创建一个实物、应该在何时创建。它既是过程( p r o c e s s ) ,也是实物 ( t h i n g ) :既是对当前实物的描述,也是对创建实物的过程的描述。1 。” 尽管a l e x a n d e r 所指的是城市和建筑模式,但是这种模式的思想也同样适用 于很多其它的领域。包括软件领域,只不过在软件领域用对象和接口代替了建筑 领域的墙壁和门窗。其核心都在于提供了相关问题的解决方案。模式的出现是一 个领域逐渐走向成熟的标志,模式应用在软件领域,即为软件模式。 2 0 世纪8 0 年代,两位软件设计师w a r dc u n n i n g h a m 和k e n tb e c k 在用 s m a l l t a l k 设计用户界面时,决定采用a l e x a n d e r 的一些观点来开发一个含有5 个模式的很小的模式语言,用于指导那些年轻的s m a l l t a l k 程序员。他们整理出 这一结果,并在o o p s l a ( o b j e c t o r i e n t e dp r o g r a m s ,s y s t e m s ,l a n g u a g e sa n d a p p l i c a t i o n s ) 8 7i no r l a n d o 上发表了论文“u s i n gp a t t e r nl a n g u a g e sf o r o b j e c t o r i e n t e dp r o g r a m s ”,从而正式把模式的思想引入到了软件领域中。在 o o p s l a 9 0 会议上,由b r u c ea n d e r s o n 主持的“a r c h i t e c t u r a lh a n d b o o k ” 研讨会中,e r i c hg a m m a 和r i c h a r dh e l m 等人开始谈论有关模式的话题。在 o o p s l a 9 1 的一个由b r u c ea n d e r s o n 主持的研讨会上。模式成了讨论的焦点, 许多著名的模式方面的专家参加了这次研讨会。1 9 9 3 年8 月,k e n tb e c k 和g r a d y b o o c h 等人在科罗拉多主持了一次山顶度假,这是山边小组( h i l l s i d eg r o u p ) 的第一次会议。在o o p s l a 9 3 上召开了另外一次模式研讨会。1 9 9 4 年开始, 由h i l l s i d eg r o u p 和o o p s l a 联合发起了p l o p 国际会议,促进了软件模式的发 展,对软件模式研究的理论成果主要体现在p l o p 年会论文集中。如今,模式己 应用软件开发中的模式应用技术研究 成为软件工程领域内的一个热门话题,其在计算机领域的影响超过了在建筑界的 影响。 2 2 软件模式的定义 对于软件模式,不同的研究人员给出了各自的定义。 m a r t i nf o w l e r 在分析模式:可复用的对象模型中对模式的定义是:模 式是一种问题解决思路,它已经适用于一个实践环境,并且也可能适用于其它环 境。 g o f 在设计模式:可复用面向对象软件的基础中研究的是设计模式,给 出的定义是:设计模式针对面向对象系统中重复出现的设计问题,提出一卜通用 的解决方案,并予以系统化的命名和动机解释。设计模式是对被用来在特定场景 下解决一般设计问题的类和相互通信的对象的描述”1 。 r i c h a r dg a b r i e l 认为“:每个模式是一个由三部分组成的规则,它表达了 某种环境、该环境下不断重复出现的某种压力系统与允许这些压力自我释放的软 件配置三者之间的关联。 d i r kr i e h l e 和e i n zz u l l i g h o v e n 认为:模式是一种在特定的、非任意的 环境中不断反复出现的具体形式的抽象”3 。 虽然各种对于软件模式的定义不尽相同,所采取的角度和侧重点不同,但是, 不难看出,其共同之处是:都揭示了模式这一概念的本质模式是一种对于经 验的抽象。模式是对环境的抽象、对问题的抽象、对最优解决方案的抽象,是在 更高层次上对问题、环境、解决方案的再现。模式所描述的问题及问题的解答都 应当具有代表性。虽然问题及问题的解答以不同的形式重复出现,但其本质一样, 这就是模式。 因此,在广义上,可以将软件模式认为是: 软件模式是对软件开发实践过程中所积累的知识、经验等优秀成果用显式的 方式加以提炼,进行抽象总结,用以指导软件过程的知识传授形式。 而在狭义上,模式与各自的适用范围或者层次相结合,具有其不同的特点。 狭义上,可以将软件模式认为是: 软件模式是与各自适用范围或者层次相关的组有机联系的成功经验的表 达形式,用以改善相应的软件开发活动的质量。 应用软件开发中的摸式应用技术研究 同时,也可以看出:软件模式作为经验的总结,不是一成不变的,是需要通 过运用于软件开发过程中来不断地加以验证和修改的。因此,软件模式的发展过 程,必然是一个不断积累、不断完善的螺旋式上升的过程,软件模式必然是软件 开发人员长期集体智慧的精华。 2 3 软件模式的描述 相应于模式的多种定义形式,对于软件模式的描述也存在着多种形式。大体 上,可以将软件模式的描述形式分为两种:非形式化的描述形式和形式化的描述 形式。 2 3 1 非形式化描述 对于软件模式的非形式化描述通常是采用自然语言和图形符号,通过一种结 构化的形式来进行描述。 下面,以g o f 对于设计模式的描述形式“1 为例加以介绍。 每一个模式根据以下的模板被分成若干部分,模板具有统一的信息描述结 构。 ( 1 ) 模式名和分类 模式名简洁地描述了模式的本质。分类是该模式所归属的类别。 ( 2 ) 意图 意图是回答下列问题的简单陈述:设计模式是做什么的? 它的基本原理和意 图是什么? 它解决的是什么样的特定设计问题? ( 3 ) 别名 别名是模式的其它名称。 ( 4 ) 动机 动机用以说明一个设计问题以及如何用模式中的类、对象来解决该问题的特 定情景。 ( 5 ) 适用性 什么情况下可以使用该设计模式? 该模式可以用来改进哪些不良设计? 怎 样识别这些情况? 应用软件开发中的模式应用技术研究 ( 6 ) 结构 采用基于对象建模技术( o m t ) 的表示法对模式中的类进行图形描述,使用 交互图来说明对象之间的请求序列和协作关系。 ( 7 ) 参与者 指设计模式中的类和或对象以及它们各自的职责。 ( 8 ) 协作 模式的参与者怎样协作以实现它们的职责。 ( 9 ) 效果 模式怎样支持它的目标? 使用模式的效果和所需做的权衡取舍? 系统结构 的哪些方面可以独立实现? ( 1 0 ) 实现 实现模式时需要知道的一些提示、技术要点及应避免的缺陷,以及是否存在 某些特定于实现语言的问题。 ( 1 1 ) 代码示例 用来说明怎样用c + + 或者s m a l l t a l k 实现该模式的代码片段。 ( 1 2 ) 已知应用 实际系统中发现的模式的例子。每个模式至少包括了两个不同领域的实例。 ( 1 3 ) 相关模式 与这个模式紧密相关的模式有哪些? 其间重要的不同之处是什么? 这个模 式应该与哪些其它模式一起使用? 虽然,在这种描述形式里,列举出了关于一个设计模式的诸多方面,但是, 在更广的范围里,笔者认为,对于一个软件模式的描述而言,最基本的是如下三 个方面: 模式名称( p a t t e r nn a m e ) 问题( p r o b l e m ) 解决方案( s o l u t i o n ) 即可以用三元组来表达一个软件模式,而将其余的描述部分作为可选的附加 成分: 模式= ( 名称,问题,解决方案) 应用软件开发中的模式应用技术研究 或者,用b n f 范式表示为: := 2 3 2 形式化描述 形式化描述方法基于数学方法,用严格的数学符号和数学法则对软件模式进 行描述。一般需要形式规格说明语言的支持,包括形式化描述和形式化验证两个 应用层次”】。 这种描述形式实现起来具有定的困难,目前国内的研究成果较少,国外学 者的关注程度较高,并且已经发展成为一个研究热点。 就设计模式来看”3 ,国内有由万剑怡、薛锦云提出的混合规范描述模型,该 模型采用图示化的手段描述设计模式的静态结构,采用图示化和时态逻辑方法相 结合的手段描述设计模式动态行为中各参与者( p a r t i c i p a n t s ) 行为操作的语义, 克服了一般图示化方法对设计模式进行完整描述需借助自然语言的补充从而引 起的二义性问题,比较精确、完整地描述了设计模式的静态结构和动态行为。1 ; 由杨炳儒、张德政提出的超图模型,对设计模式进行了初步的描述“”。 国外设计模式形式化研究的成果有: a l i l n o nh e d e n 等提出的设计模式形式化语言l e p u s 。l e p u s 可以描述高抽 象度的软件结构,精确地表达设计模式的内部元素的约束和逻辑关系,但是, l e p u s 侧重于设计模式结构方面的描述,而对于动态的交互行为和语义变化等方 面缺乏更为精确的描述,且其语言结构较为复杂。 t o m m im i k k o n e n 提出的d i s c o 。d i s c o “侧重于描述设计模式中参与者的交 互行为,d i s c o 通过参与者和协作来表达设计模式,使用类、关系和动作来描述 设计模式的动态行为。d i s c o 的动态描述是面向一个封闭系统的,不能由外部事 件触发或者触发外部事件。同时,其强调的是系统的整体行为,对于实例的独立 局部属性或者性质并不描述。d i s c o 同时支持多继承和属性细化,是实现设计模 式相互组合和属性检查、验证的基础。 k e n tb e c k 等提出的约束图( c o n s t r a i n td i a g r a m ) ,分别用角色模型、类 型模型和类模型来描述设计模式。约束图利用分层的抽象机制,对于提高设计模 式描述的精确性,消除二义性具有积极的作用。 应用软件开发中的模式应用技术研究 此外,还有l a y o m 、a d v a d o 、b p s l “2 1 等形式化描述方法。 2 3 3 非形式化描述与形式化描述的比较 非形式化描述形式通过自然语言和图形符号来描述软件模式,其优点是易 读、易理解;但是,这种描述形式通常也存在歧义性,容易引起对同一描述产生 不同的理解,导致模式使用的不准确等问题,难于得到计算机的有效支持,难以 引入c a s e ( c o m p u t e ra i d e ds o f t w a r ee n g i n e e r i n g ,计算机辅助软件工程) 环 境,不利于提高软件的质量和生产率。 形式化描述形式的优点是形式简洁、描述精确、无二义性,有利于发现软件 模式的不一致性、不完整性,有利于进行分析和推理,有利于实现软件自动化。 但是,其缺点也是明显的,形式化的描述难于理解、难于进行交流,需要具备一 定的形式化知识。 对于模式的形式化描述是模式研究进一步发展的必然阶段和有力支持。但 。是,现有的各种形式化描述对于模式的描述大多是不够完整的,侧重于某一个或 ! 者几个方面,无法描述整个的模式系统,而且描述形式比较复杂,多是利用逻辑 学和数学公式,并且定义了复杂的步骤和概念,难于理解和应用。此外,模式中 的有些部分,如设计模式中的动机、适用性等,本身具有某些不确定性,难以进 行形式化。 当前,对于模式的应用主要还是基于经验的、手工完成的,对于经验不足的 人来说,这是枯燥并且容易出现错误的。因此,形式化描述是对软件模式进行描 述的发展方向。对模式进行形式化描述,可以促进模式的应用、模式之间关系的 分析和模式应用支持工具以及自动化工具的发展。但是,纯粹的形式化方法并不 能够有效地促进模式研究的发展。现阶段,比较好的方式是将二者结合起来,取 长补短,促进对于软件模式的研究。 2 4 软件模式的分类 对软件模式的分类,根据不同的标准、不同的视角,可以有不同的方法。 p r a n kb u s c h m a n n 等把软件模式分为“3 1 :体系结构模式( a r c h i t e c t u r a l p a t t e r n s ) 、设计模式( d e s i g np a t t e r n s ) 和惯用法( i d i o m s ) 。 应用软件开发中的模式应用技术研究 体系结构模式是高层的抽象,关心的是大规模的构件或者子系统、系统的全 局特性和机制,提供对体系结构设计中所遇到的问题的解决方案;设计模式具有 中等规模的粒度,完善了子系统的结构和行为以及它们之间的关系,并不影响整 个系统的结构,提供对于具体设计中的问题的解决方案,使得设计的结果更具有 良好的可扩展性和重用性;惯用法是针对具体语言的使用模式,完善了构件的结 构或者行为的低层的内部和外部的细节,主要涉及的问题是:如何用特定的方法 来解决程序代码编写过程中所遇到的问题,如何提高程序代码编写的质量。 d i r kr i e h l e 和h e i n zz u l l i g h o v e n 按照抽象程度的不同“1 把软件模式分成 概念模式( c o n c e p t u a lp a t t e r n s ) 、设计模式( d e s i g np a t t e r n s ) 和编程模式 ( p r o g r a m m i n gp a t t e r n s ) 。可以看出,这与f r a n kb u s c h m a n n 等人的分类方法 是类似的。 m a r t i nf o w l e r 主要研究分析模式,按照用途将其划分为“:责任 ( a c c o u n t a b i l i t y ) 模式、观察和测量( o b s e r v a t i o n sa n dm e a s u r e m e n t s ) 模 式、企业财务分柝中的观察( o b s e r v a t i o n sf o rc o r p o r a t ef i n a n c e ) 模式、引 用对象( r e f e r r i n gt oo b j e c t s ) 模式、库存和帐目清单( i n v e n t o r ya n d a c c o u n t i n g ) 模式、计划( p l a n n i n g ) 模式和贸易( t r a d i n g ) 模式等。 g o f 根据两条准则对设计模式进行分类: ( 1 ) 目的准则,即模式是用来完成什么工作的。分为创建型( c r e a t i o n a l ) 、 结构型( s t r u c t u r a l ) 和行为型( b e h a v i o r a l ) 三种。创建型模式与对象的创建 有关:结构型模式处理类或对象的组合;行为型模式对类或对象怎样交互和怎样 分配职责进行描述。 ( 2 ) 范围准则,指定模式主要是用于类还是用于对象。类模式处理类和子 类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了。 对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具动态性。 其对设计模式的分类见表1 。 表lg o f 设计模式分类 f u 的 l 永 创建型结构型 行为型 应用软件开发中的模式应用技术研究 f a c t o r ym e t h o d a d a p t e ri n t e r p r e t e r 类 t e m p l a t em e t h o d a b s t r a c tf a c t o r y a d a p t e r c h a i no fr e s p o n s i b i l i t y b u i l d e r b r i d g e c o m m a n d p r o t o t y p ec o m p o s it ei t e r a t o r s i n g l e t o n d e c o r a t o rm e d i a t o r 对象 f a c a d e m e m e n t o f 1 y w e i g h to b s e r v e r p r o x ys t a t e s t r a t e g y v i s i t o r 创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它 延迟到另一个对象中。结构型类模式使用继承机制来组合类,而结构型对象模式 则描述了对象的组装方式。行为型类模式使用继承描述算法和控制流,而行为型 对象模式则描述一组对象怎样协作完成单个对象所无法完成的任务。 软件模式的思想已经应用到了软件开发活动的各个方面,在每个阶段,我们 都可以有相应的模式产生。因此,根据软件活动的阶段,可以将软件模式分为: 需求模式、分析模式、体系结构模式、设计模式、编码模式、测试模式、维护模 式,以及配置模式、组织模式、过程管理模式、支持模式等。 另外,根据软件模式的应用目的可以将其分为模式和反模式( a n t i p a t t e r n ) 两种。反模式的概念由a n d r e wk o e n i g 在1 9 9 5 年的c + + 报告中提出。顾名思义, 反模式与模式的目的正相反,模式是对于成功的、优秀的经验的记录,而反模式 则是以模式的格式对于失败的教训、负面的效果( 不能运作的或者具有破坏性的 实践经验) 的记录。 现有的反模式包括两类: ( 1 ) 描述一种失败的、导致糟糕局面的问题解决方案。有时候这种解决方 案看起来很诱人,而且往往可以在一定的范围内工作,但最终证明是难以维护和 重用的。 ( 2 ) 描述如何摆脱不利的局面,并朝着正确的解决方案转化。通过反模式 应用软件开发中的模式应用技术研究 来对坏的解决方案进行重构( r e f a c t o r i n g ) ,使软件开发人员了解如何避免陷阱 ( p i t f a l l s ) ,以及在碰到问题时如何进行解决,从而提高软件的质量。反模式 的最终目的即在于此。 2 5 软件模式集合 当软件模式不断涌现的时候,各个模式之间是存在着相互关联和依赖的,它 们共同构成了一个软件模式的网络,需要对这些模式加以整理,使其条理化、层 次化,从而形成具有不同内在关联性的软件模式的集合。 软件模式集合依据模式之间关系的强弱可以分为模式目录、模式系统和模式 语言。 2 5 1 模式目录 在模式目录中,各模式之间仅含有少量的组织和结构关系,这种相关性是松 散的或者是非正式的。例如,g o f 的设计模式即可看作是一个模式目录。 2 5 2 模式系统 模式系统中,模式之间的关系介于模式目录和模式语言之间。一个模式系统 是一个相关模式的集合,这些模式相互合作以支持整个结构的建立和演化。模式 系统不仅在不同的粒度级别上可以组织成为相关的组,而且也描述了模式以及这 些模式组之间的相互关系,以及怎样将模式组合以解决更为复杂的问题。模式系 统中的各个模式应该以一致的形式加以描述。 2 5 3 模式语言 模式的集合形成理解和交流思想的词汇表。这样的一个集合可以精心地编织 成为一个内聚的整体,这个整体显示了为实现一个共同目标的各要素成分之间的 继承层次和关系。这就是a l e x a n d e r 所指的模式语言。如果说模式是对于一个问 题在有限定条件的环境下的可反复利用的解决方案,那么模式语言就是这些解决 方案的集合,它表现在整个领域的各个层次,相互协作,针对一个预定的目标, 应用软件开发中的模式应用技术研究 以一定的顺序共同解决这个问题。 c o p e 将模式语言定义为“”:模式语言定义了一个模式的集合和将它们互相 组合成为一个体系结构的规则,模式语言描述了软件框架或者相关系统的系列。 可以看出,模式语言是紧密结合在一起的、结构化的、具有一定的规则和语 义的模式集合。一个模式独立地解决一个相对独立的问题,而模式语言则构建一 个系统,模式通过模式语言可以获得最佳的性能。模式语言不是模式的简单集合, 也不仅仅是多种模式的决策树,而可能是模式的有向图。 好的模式语言指导设计者构造持久的、满足功能的、优雅的体系结构,好的 模式组合能够平衡系统中的各个因素以完成整体的目标,好的模式语言能够给设 计者提供足够的自由来表达他们的思想,并且根据模式应用环境的特定要求来裁 减解决方案。一个模式语言包含规则和指导方针,它们解释如何以及何时应用这 些模式来解决单个模式所不能解决的复杂问题,为应用这个语言中的模式提供了 顺序和粒度。模式语言可以被看成是模式词汇加语法。在理想情况下,好的模式 语言的生成能力应该很强,能够用这些丰富的、充满表达力的模式词汇生成所有 可能的句子。 2 5 4 各模式集合的比较 模式可以以松散的组织方式形成模式目录,但这种组织方式不能反映模式之 间的多方面关系,没有模式语言所特有的系统性。模式目录只是在模式集合中添 加了少量的结构和组织关系,表示了最为明显的一些相关特性。相对于模式目录, 模式系统和模式语言都形成了连接紧密的、相互交织在一起的模式集合,增加了 模式之间更深层次的结构和相互作用关系。相比较而言,模式系统比模式语言松 散得多,它不强调完整性,不宣称可以生成整个设计,没有模式语言中的规则和 指导方针。相对于模式系统,模式语言具有健壮性、完整性,模式语言可以生成 整个的设计。但是,这样的语言通常局限在较小的领域。 在理想的情况下,模式语言是计算完整的,表示了模式及其变化之间的各种 可能的连接关系以产生完整的结构。但是,在实践中,模式系统和模式语言之间 的区别是难以明确确定的。在一个模式系统中,各模式也许是关于一个相对来说 广泛的主题集合在起的,而在模式语言中,这个主题的范围就需要有更多的限 应用软件开发中的模式应用技术研究 定。这样,模式语言中的模式形成了一种“超级模式”,因为整个的语言具有 个基本的、共享的问题及其上下文、压力、解决方案、结果上下文和基本原理等。 模式语言并不是一次生成的,它是由模式系统通过不断的扩充发展演化而来。相 应地,模式系统由模式目录发展演化得来。模式语言有助于增量地产生整个系统 结构,而模式系统则有助于增量地产生模式语言。 2 6 软件模式的使用效果 通过在软件开发过程中应用软件模式,可以给我们带来短期的或者长期的利 益,改进软件开发的质量和效率,改善软件系统的性能,增强软件产品的可适应 性、可靠性、可移植性、可维护性等。然而,关于软件模式,在看到其带来的优 点的同时,我们也应该注意其缺点,这种缺点的存在限制了模式在某些领域的使 用。模式的缺点在于:模式是以牺牲时间和空间作为代价的。一般来说,为了实 现灵活性和可靠性,在通信接口中预留有防止用户需求变化的抽象行为,而这些 抽象行为的存在决定了通信实体的行为必须提供相应的实现,在无事可做的情况 下则要提供默认的空的实现方法,这样,必然会导致占用内存空间的增加和基于 段页式系统中的o s 的中断次数的增多,这也相应地增加了系统的执行时间。正 是由于这个缺点的存在,在构建软件系统时,对于模式的使用必须要考虑可能对 于系统性能造成的影响。在诸如实时性要求较高的系统中难以使用模式,原因就 在于此。 同时,在使用软件模式的时候,也应该避免过分设计和设计不足。所谓过分 设计,就是在软件开发过程中使用了过多的模式或者一些不必要的模式,将问题 变得过于复杂,反而降低了系统的性价比。而设计不足,则是设计模式的使用不 够充分,未能发挥模式的有效作用,从而不能给软件系统带来有价值的改进。 对于软件模式的使用给软件系统带来的效果的评判,目前,大多数是从定性 角度给出的,这样的形式不够精确,而且主观性强。下面,笔者将给出一个定量 的模糊综合评判方法。 在实际工作中,对于一个事物的评价,常常涉及到多个因素或者指标,这时 就要求根据这多个因素( 或者指标) 对于事物做出综合的评价,而不能只从某一 因素( 或者指标) 的情况去评价事物,这就是综合评判“”。同时,由于诸因素( 或 者指标) 在评价中所处的地位或者所起的作用不尽相同,因此,对于诸因素( 或 应用软件开发中的模式应用技术研究 者指标) 的重要程度应该加以区分,于是,就引入了权重的概念,这就是加权评 分法。加权评分法体现了诸因素( 或者指标) 在评价中的不同地位或者不同作用, 般表示为: e = a s 。 i = 1 其中,e 表示加权平均分数,s 。表示第i 项的得分,a 。( i = 1 ,2 ,n ) 是第i 项所占的权重,并且要求a = 1 。 扭】 在模糊综合评判中,权重是至关重要的,它反映了各个因素在综合评判过程 中所占有的地位或者所起的作用,直接影响到模糊综合评判的结果。对于权重的 确定,可以采取专家估测法、加权统计法、频数统计法等方法。 对于软件模式的使用效果,其模糊综合评判方法步骤如下: 第一步,我们可以找出模式的使用对于软件系统的哪些方面会带来影响,比 如软件系统的可适应性、可靠性、可移植性、可维护性等等,将这些方面作为因 素集u 。 、 u = u i ,u 2 ,“,u 。 o 第二步,选取评判集v 。 v = v i = l ,2 ,m v ,v :,v 是m 种评判,其元素个数和名称可以根据实际问题确定,如 可以取为优、良、一般、较差、差等等。 由于各种因素所处的地位不同,作用不一样,权重当然也就不同,因而评判 就会不同。对于m 种评判,一般来说,不是绝对的肯定或者否定,因此,模糊综 合评判应该是v 上的一个模糊子集: b = ( b 。,b 。,b 。) p ( v ) 其中,p ( v ) 为v 的幂集,b 。( j = l ,2 ,m ) 反映了第j 种评判v ,在模 糊综合评判中所占的地位( 即v 。对于模糊集b 的隶属度,b ( v ,) = b ,) 。 模糊综合评判b 依赖于各个因素的权重,它应该是u 上的模糊子集: a = ( a :,a :,a 。) p ( u ) 其中,p ( u ) 为u 的幂集,a 表示第i 种因素的权重,且a ,= 1 。 应用软件开发中的模式应用技术研究 因此,一旦给定权重a ,相应地可以得到一个模糊综合评判b 。 第三步,单因素模糊评判。 对于每一个因素u 。,作模糊评判f ( u 。) ,f 是u 到v 的模糊映射,即 f :u 专p ( v ) , u ihf ( u 。) = ( r ,r 。,r 。) p ( v ) 对于( r ,r 。,r 。) ,取其中最大的元素r 。则r 。j 即为对于因素u 。的 模糊评判结果。 由不同的u ;所对应的( r ,r 。,r i , ) ,可以得到模糊矩阵r u 。x ,如 下: r = r i2 r 1 - r 2 2 r 2 r 称为单因素模糊评判矩阵。三元组( u ,v ,r ) 构成一个模糊综合决策模 型,u 、v 、r 是此模型的三个要素。 第四步,模糊综合评判。 对于权重a = ( a 。,a :,a 。) ,进行m a x m i n 合成运算,即使用模型m ( 八

温馨提示

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

评论

0/150

提交评论