(计算机软件与理论专业论文)软件设计模式库构建及应用研究.pdf_第1页
(计算机软件与理论专业论文)软件设计模式库构建及应用研究.pdf_第2页
(计算机软件与理论专业论文)软件设计模式库构建及应用研究.pdf_第3页
(计算机软件与理论专业论文)软件设计模式库构建及应用研究.pdf_第4页
(计算机软件与理论专业论文)软件设计模式库构建及应用研究.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机软件与理论专业论文)软件设计模式库构建及应用研究.pdf.pdf 免费下载

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

文档简介

中文摘要 摘要 软件设计模式的复用是软件复用的一种主要形式,是解决软件开发效率和质量问题 的重要途径。软件设计模式的复用将软件复用的层次由代码层提高到设计层。把复用的 重点放在抽象层次更高的设计层上是软件工程领域的发展方向,能更好的解决软件开发 中的质量和效率问题。通过建立模式库统一管理软件设计模式,为模式复用提供支持。 本文研究了设计模式和设计模式库的相关研究成果,对已有的模式库相关工作进行 了分析和总结。综述了模式库构建关键技术,包括有模式的分类、描述、存储、检索以 及模式库的演化和管理等。模式库采用模式分类图式和模式模板对模式进行分类和描 述。针对模式分类图式和模式模板的不确定性,提出了开放的、协作的、易用的和柔性 可配置的软件设计模式库的概念。用户可以根据需要配置不同的分类策略和描述策略, 也即选用不同的模式分类图式和模式模板。该模式库的实现采用了w i k i 系统,不仅弱 化了模式库存储策略对分类和描述策略的依赖,而且引入了开放、协作和易用等特性。 本文给出了该模式库的设计和实现,并以一个具体实例介绍了模式库中模式的应用。最 后,总结了所做的主要工作,提出了下一阶段的工作。 本论文研究目的和意义在于,通过研究软件设计模式库构建关键技术,建立软件设 计模式库,将模式合理的分类、描述和管理,从而更好的为设计模式的复用提供支持。 在软件系统的设计和开发过程中应用这些软件设计模式,可提高系统的开发效率和质 量。 关键词:软件复用;软件设计模式库;软件模式;模式分类;模式描述 英文摘要 r e s e a r c ho nc o n s t r u c t i o na n da p p l i c a t i o no f s o f t w a r ed e s i g np a r e ml i b r a r y a b s t r a c t r e u s eo fs o f t w a r ed e s i g np a t t e r n si sap r i m a r yf o r mo fs o f t w a r er e u s e ,w h i c hi sa n i m p o r t a n ta p p r o a c ht os o l v et h ee f f i c i e n c ya n dq u a l i t yp r o b l e m so fs o f t w a r ed e v e l o p m e n t i t e n h a n c e st h es o f t w a r er e u s ef r o mc o d el e v e lt od e s i g nl e v e l t oe m p h a s i z et h er e u s ea td e s i g n l e v e l ,ah i g h e ra b s t r a c tl e v e l ,i st h ed e v e l o pt e n d e n c yo fs o f t w a r ee n g i n e e r i n g i t sab e t t e r w a y t os o l v et h eq u a l i t ya n de f f i c i e n c yp r o b l e m si ns o f t w a r ed e v e l o p m e n t p a t t e r nl i b r a r yi s i m p l e m e n t e dt om a n a g et h es o f t w a r ed e s i g np a t t e r n sf o rs u p p o r t i n gt h ep a t t e r nr e u s e c o r r e l a t i v er e s e a r c hr e s u l t so fd e s i g np a t t e ma n dd e s i g np a t t e ml i b r a r ya r er e s e a r c h e d e x i s t i n gr e l a t e dw o r ko fp a t t e ml i b r a r ya r ea n a l y z e da n ds u m m a r i z e d k e yt e c h n o l o g i e so f i m p l e m e n t i n gp a t t e r nl i b r a r ya r es u m m a r i z e d ,i n c l u d i n gp a t t e r nc l a s s i f i c a t i o n ,p a t t e m d e s c r i p t i o n ,p a t t e ms t o r a g e ,p a t r e mr e t r i e v a la n d t h ee v o l u t i o na n dm a n a g e m e n to f t h ep a t t e m l i b r a r y a c c o r d i n gt ot h eu n c e r t a i n t yo fp a t t e r nc l a s s i f i c a t i o ns c h e m aa n dp a r e mt e m p l a t e ,a c o n c e p to fo p e n e d ,c o l l a b o r a t i v e ,e a s y u s e da n df l e x i b l es o f t w a r ep a t t e r nl i b r a r yi sp r o p o s e d u s e r sc a nc o n f i g u r ed i f f e r e n tc l a s s i f ya n dd e s c r i b es t r a t e g i e sa c c o r d i n gt ot h e i rr e q u i r e m e n t s , w h i c hm e a n st h a ta d o p t sd i f f e r e n tp a t t e r nc l a s s i f i c a t i o ns c h e m aa n dp a t t e r nt e m p l a t e t h e i m p l e m e n t a t i o no f t h ep a t t e r nl i b r a r ya d o p t sw i k is y s t e m i tn o to n l yw e a k e n st h ed e p e n d e n c y o ft h ep a t t e r ns t o r a g es t r a t e g yt oc l a s s i f ya n dd e s c r i b es t r a t e g i e s ,b u ta l s oi n t r o d u c e st h e o p e n e d ,c o l l a b o r a t i v ea n de a s y - u s e df e a t u r e s d e s i g na n di m p l e m e n t a t i o no ft h ep a t t e r n l i b r a r ya r eg i v e n ,a n da ni n s t a n c ei si n t r o d u c e dt od e m o n s t r a t et h ea p p l i c a t i o no ft h ep a t t e r n s i np a t t e r nl i b r a r y a tl a s t ,ac o n c l u s i o na n df u t u r ew o r ka r eg i v e n t h er e s e a r c ho fk e yt e c h n o l o g i e so fs o f t w a r ed e s i g np a t t e ml i b r a r yc a l lb ea p p l i e dt o i m p l e m e n tt h es o f t w a r ed e s i g np a t t e r nl i b r a r y i tc a l lw e l lc l a s s i f y ,d e s c r i b ea n dm a n a g et h e p a t t e r n s ,w h i c hp r o v i d e sab e t t e rs u p p o r tf o rd e s i g np a t t e mr e u s e a p p l y i n gt h e s es o f t w a r e d e s i g np a t t e r n si n t ot h ed e s i g na n dd e v e l o p m e n to ft h es o f t w a r es y s t e mi m p r o v e st h e d e v e l o p m e n te f f i c i e n c ya n dq u a l i t y k e yw o r d s :s o f t w a r er e u s e ;s o f t w a r ed e s i g np a t t e r nl i b r a r y ;s o f t w a r ep a t t e r n ; p a t t e r nc l a s s i f i c a t i o n ;p a t t e r nd e s c r i p t i o n 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果,撰写成 硕士学位论文 :筮鲑遮让搓式匪捡建盈廑旦婴窥:。除论文中已经注明 引用的内容外,对论文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。 本论文中不包含任何未加明确注明的其他个人或集体已经公开发表或未公开发表的成 果。 本声明的法律责任由本人承担。 论文作者签名:筏蟛勺妈月冲日 学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连海事大学研究生学位论文提交、版权使 用管理办法”,同意大连海事大学保留并向国家有关部门或机构送交学位论文的复印件 和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本学位论文的全部或 部分内容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编 学位论文。 保密口,在年解密后适用本授权书。 本学位论文属于:保密口 不保密矾请在以上方框内打“”) 论文作者签名:枢谚 日期: 灭 以吖 弘日 了中 孙月 登了 师年 导叩 软件设计模式库构建及应用研究 第1 章序论 1 1 选题背景及意义 出现于二十世纪六、七十年代的软件危机导致了有关软件复用的研究。在其后的几 十年里,软件复用引起了学术界和工程界广泛的关注。所谓软件复用,就是在开发一个 新的应用系统时,重复使用以前在别的应用系统开发活动中所建立和使用过的软件【“。 在软件的发展过程中,复用的思想很早就出现了。人们通过对软件系统开发过程的分析 发现,在系统开发的过程当中,存在着大量的重复的劳动。这些重复不仅出现在编码阶 段,在需求分析、设计、测试、维护等阶段,都存在类似的情形。如果能够避免这些重 复的劳动,就会大大缩短软件开发的时间,同时软件系统的可靠性也会提高。在进行了 许多探索性的、实践性的复用活动的基础上,软件工程界普遍认为软件复用具有以下优 势:提高软件生产率、提高软件产品质量、缩短开发周期、降低维护费用、便于软件 移植和实现互操作性、支持快速原型开发和降低程序员及终端用户培训费用。 当前,解决软件开发的效率和质量的问题,软件复用是重要途径。人们逐渐由原来 的代码拷贝粘贴式的复用,转到了基于软构件的复用,也产生了基于构件软件开发c b s d ( c o m p o n e n tb a s e ds o f t w a r ed e v e l o p m e n t ) 和基于构件软件工程c b s e ( c o m p o n e n t b a s e ds o f t w a r ee n g i n e e r i n g ) 等概念和研究【2 1 。基于软件构件的复用是抽象程度高、复用 粒度大的一种形式,是软件开发走向大规模工业化生产的有效途径。尽管如此,人们的 复用层次仍主要停留在代码实现层次。软件设计模式的复用将软件复用的层次提高到设 计层。把复用的重点放在抽象程度更高的设计层次上,能更好的解决软件开发过程中存 在的效率和质量等问题。 模式有很多种形式,如分析模式 4 8 】、设计模式、组织模式1 4 9 1 和过程模式【5 0 ) 等。在 本文中所讨论的模式为软件设计模式,也即在软件开发时用于指导设计工作的模式。软 件设计模式是在软件开发过程中解决在特定语境下重复出现问题的经过验证的成功设 计方案。把人们在设计软件体系结构和面向对象的类与对象的成功设计经验总结成为软 件体系结构模式和设计模式,分别为目标系统的软件体系结构和面向对象的设计提供指 导。通过对软件设计模式的学习,可使软件设计人员具有众多专家的成功设计经验;将 序论 这些软件设计模式应用于软件系统的设计和开发,可使得系统具有更好的开发效率的质 量;通过把这些成功的设计经验不断形成模式,将模式更加系统的组织成模式语言,并 通过建立软件设计模式库将这些模式和模式语言分类描述和存储,从而更好的为软件开 发设计提供支持。 近年来,为了推动具有自由知识产权的软件开发及软件产业发展,国家科技部批准 先后在北京、上海、沈阳、大连等十余个软件产业发展较好的城市建立国家级软件孵化 器,要求各孵化器结合本地区的软件产业特色,建立相应的软件资源库、软件开发与生 产支持平台等。在8 6 3 项目“基于高性能宽带通信网络的软件支撑体系研究”( g r a n t n o 2 0 0 4 a a l1 6 0 1 0 ) 中。我们已经完成了对软件构件库系统的开发并对构件组装机制和 验证测试做了大量工作,对代码层次上基于软构件的软件复用做了研究。 本课题来源于正在进行的国家自然科学基金项目“面向分布式软件开发的软构件协 同计算模型及形式化验证”( g r a n t n o 6 0 5 7 3 0 8 7 ) 的子课题“软构件协同计算模式研究 及模式库的建立”。我们的研究工作之一是实现一个软件设计模式库,对软件设计模式 进行分类组织、描述和存储,为软件设计模式的复用提供支持。通过需求的参数化,结 合该软件设计模式库以及我们之前在8 6 3 项目及其它项目中所建立的软件构件库和软构 件组装测试平台等相关系统和平台,实现基于软件体系结构、软件设计模式和软构件的 智能化软件开发。 1 2 国内外研究现状 模式起源于建筑学,c h r i s t o p h e ra l e x a n d e r 在其著作中首先提出模式的思想,将建 筑设计时重复出现的问题的解决方案归结为模式【3 川。w a r dc u n n i n g h 枷和k e n tb e c k 将 c h r i s t o p h e ra l e x a n d e r 的这一思想引入软件业,总结软件设计中重复出现的问题的被证 明了的、有效的设计方案,用于指导人们的软件开发设计。e r i cg a m m a 等( g o f ,g a n go f f o u r ) 通过其著作将软件设计模式组织成模式目录,并采用统一模式模板对这些模式进 行描述,指导人们应用模式解决软件设计的问题【5 l 。由k e n tb e c k 等领导的模式团体山 腰组( h i l l s i d e ) 维护着一个在线模式目录,将权威的讨论模式和模式研究的相关网站的 链接相对较全面的列出来f 6 】。山腰组的这个在线模式目录是对模式相关的书籍、文章、 软件设计模式库构建及应用研究 研究、论文、链接和会议的一个分类目录。还有一些学者将模式组织成模式目录【7 1 、模 式系统【8 1 和模式年鉴【9 】。 以上的研究主要是将模式组织成模式目录的形式于书籍或文档之中,使用自然语言 对模式进行描述,并结合图示来辅助描述模式的结构和动态特性以便于入们的理解,从 而指导人们应用模式解决软件开发的设计问题。这种方式不便于描述模式间的关系,不 能支持模式的动态增长,不能支持模式的演化,不能很好的支持模式的应用。于是人们 将软件设计模式有效组织并存储于模式库中,使用模式分类图式和模式模板来分类和描 述模式。软件设计模式库支持模式的动态增长和演化,提供方便的检索系统以便于查找 所需的模式,从而对人们学习和应用软件设计模式进行软件开发提供有力的支持。 一些学者对模式的复用和模式库的构建做了一些工作。孟祥文等讨论了与模式库组 织结构密切相关的泛化、具体化关系,并提出了模式库的维护方案和检索方法o l 。杨睿 等研究了设计模式复用支持系统的相关技术,如设计模式的描述、存储和管理等【1 1 】。此 外,还有一些个人、组织或公司建立了设计模式库。 1 、波特兰模式库( p o r t l a n dp a r e mr e p o s i t o r y ) w a r d c u n n i n g h a m 为了方便模式社区的交流和收集设计模式而建立了一个系统一一 波特兰模式库【1 2 1 。该模式库主要讨论和收录面向对象软件设计的设计模式。波特兰模式 库没有使用模式分类,而是在一个页面里列出设计模式的名称,使得波特兰模式库更像 是一个模式目录而非模式库。波特兰模式库采用波特兰形式( p o r t l a n d f o r m ) 来对面向 对象的设计模式进行描述。 在创建波特兰模式库时还提出了一个w i l d 的概念并实现了它,这是一个协同创作 工具。基于w i k i 技术的波特兰模式库是一个协作式写作平台,为模式社区提供了一个 方便的交流场地。它允许每个社区成员都能修改页面的内容和创建新页面,讨论模式相 关问题。它将模式和模式语言分类组织,让人们学习和理解模式并指导人们应用其解决 设计问题。 波特兰模式库有如下优点:提供简便的方式让模式社区协作式的创作和讨论模式、 模式语苦及相关内容;提供模式演化的版本管理:页面间通过关键字超链接相互联结在 一起而形成一张知识网。然而,它又有如下的不足:模式和模式语言的分类目录仅在目 序论 录入口页面,在其它页面没有一个清晰的、方便的导航;人们创建的模式文档相互关联 在一起,随着文档的不断增多,模式库的不断增长,这个关联将会越来越复杂;几个页 面问有相关内容,但页面内容的存储独立,修改一处页面,与之相关的页面的内容不会 自动变更;页面里的内容是非结构化的,随着数据量的增长将会出现数据灾难,无法有 效的组织和利用这些数据。可见,w i k i 技术的采用给它带来了优点的同时,也带来了许 多缺点。 2 、y a h o o ! 设计模式库( y a h o o ! d e s i g np a n e ml i b r a r y ) y a h o o ! 公司建立并发布了他们的设计模式库 1 3 - 1 4 j 。该模式库主要是w e b 的用户界 面设计相关的设计模式。作为一个超大规模公司,y a h o o ! 存在的一个问题是y a h o o ! 的众多业务部门在解决同一个问题时可能会使用不同的设计方案,这会影响y a h o o ! 产 品的可用性,破坏y a h o o ! 的品牌。 y a h o o ! 公司要解决以上问题,并实现如下两个目标: 1 ) 形成一个标准,增强设计的一致性、可预测性和可用性,最终增强产品的品牌。 2 ) 复用设计方案,节省开发时间。 基于以上的问题和目标,y a h o o ! 提出的解决方案即是建立一个设计模式库。该设 计模式库收集并分类和描述公司的w e b 用户界面设计,从而形成一个统一的杯准。公 司的各个部门和开发团队以模式库中的设计模式为标准,复用其设计方案,从而实现设 计的统一,并节省了开发时间。 y a h o o ! 设计模式库将库中的设计模式进行了很好的分类,使得模式更易于被查找 和浏览。模式库还使用统一的模式模板对设计模式进行描述。 y a h o o ! 设计模式库的设计要求具有如下特性: 可伸缩( b es c a l a b l e ) 可定制( b ec u s t o m i z a b l e ) 易使用( b ee a s y t ou s e ) 协作性( e n c o u r a g ec o l l a b o r a t i o n ) 可分类( a l l o wc a t e g o r i z a t i o n ) 3 、w e l i e 的设计模式( p a t t e r n si ni n t e r a c t i o nd e s i g n ) 软件设计模式库构建及应用研究 m a r t i j nv a i lw e l i e 所建立的网站收集了大量的交互式模式,包括网站设计模式,图 形用户界面设计模式,移动电话用户界面设计模式等陋6 1 。该网站的前身是阿姆斯特丹 交互式设计模式集( a m s t e r d a mc o l l e c t i o no f i n t e r a c t i o nd e s i g np a t t e r n s ) 。网站对这些 模式进行了分类,并使用一个统一的模式模板来描述所有模式。 w e l i e 的设计模式集收录了大量的用户交互的设计模式,并使用一个易于识别的名 字对这些设计模式命名。设计模式的分类和描述结构清晰,易于从w e b 访问。该模式 集的设计模式相对独立,没有相互关联,是一个设计元素的清单。设计模式倾向于从可 用性的角度进行描述。 4 、其它模式目录或模式库 除了以上几个模式库之外,还有其它一些模式目录或模式库: 1 ) d i e m e nr e p o s i t o r yo fi n t e r a c t i o nd e s i g np a t t e r n s 2 0 l 采用t w i k i 来构建模式库。与波特兰模式库类似,将模式组织成模式目录。它没有 对模式进行有效的分类。 2 ) h y p e r m e d i ad e s i g np a t t e r n sr e p o s i t o r y 2 1 】 这个设计模式库的目标是通过提供有用的设计模式,使得众多设计人员可以复用由 大量的超媒体、w e b 应用和系统的设计人员所收集的设计经验。 3 ) p a t t e r n sf o rp e r s o n a lw e bs i t e s1 2 2 】 指导网站设计的模式,如内容模式,页面结构模式、站点结构模式、链接模式、浏 览模式和技术模式等。 4 ) w e bp a t t e r n s 2 3 - 2 4 w e b 模式就是用于网站开发的设计模式。w e bp a t t e r n s 提供了一个场地来讨论和文 档化w e b 的设计和开发的模式。 5 ) u s e ri n t e r f a c ed e s i g np a t t e r n s 【2 5 】 收集和分类用户见面设计模式。没有使用一个好的模式模板描述设计模式,给出了 简要掐述并提供了参考文献。 6 ) u ip a n e r n sa n dt e c h n i q u e s 2 6 - 2 7 序论 收录了一些用户界面设计相关的模式。有一个清晰的分类,并使用一个统一的模式 模板来描述模式。 1 3 本文的主要研究工作 本文在收集和阅读了大量国内外相关文献的基础上,对模式和软件设计模式库的研 究现状进行了综述。随着在软件设计过程中总结的设计经验越来越多并不断形成设计模 式,人们已经意识到了要更好的复用这些设计模式,必须使用相关的软件系统对这些设 计模式进行很好的分类、描述和管理。然而现在的大多数工作仅仅是将设计模式组织成 模式目录。存在形式主要有如下几种: 模式知识库( p a t t e r nr e p o s i t o r y ) 模式集合( p a t t e r nc o l l e c t i o n ) 模式目录( p a t t e r nc a t a l o g u e ) 本文收集了大量的模式库、模式集合和模式目录,对它们的组织形式、分类策略、 描述策略以及优缺点等进行了比较和研究。以上几种形式都是一个简单的模式集合和模 式目录。与静态的模式书籍相比,它能够不断的添加新的模式,支持模式集合的增长; 它能修改模式,支持模式的演化。但这些系统没有对模式进行分类或只进行了简要分类。 不同类型的模式,其采用的模式分类图式就不同。而模式描述的模式模板也有很多种, 每种模式模板都有其特点,没有一个统一的标准。一些模式集合缺乏开放性和协作性, 模式的增长和演化只能由少数人完成,不能利用众多软件设计师的经验、智慧和力量。 本文针对以上情况,提出了开放的、协作的、易用的和柔性可配置的软件设计模式 库( p a t t e r nl i b r a r y ) 的概念。 开放性使得模式库可以借助众多软件人员的力量来不断增长和演化,为软件设 计师提供一个开放的平台来共享其软件设计经验。 协作性使得模式库可以集众人的智慧和力量,尽可能保证模式库中模式的完整 性和可靠性。 易用性的目的是降低模式库内容维护的门槛,使得软件人员易于加入到协作的 团体当中,便于共享他们的软件设计经验。 软件设计模式库构建及应用研究 可配置指的是软件设计模式库具有一定的柔性,可以根据需要配置不同的分类 策略和描述策略,也即选用不同的模式分类图式和模式模板。 本文在综述了软件设计模式库构建的相关关键技术后,给出了软件设计模式库的设 计方案,设计了模式的采掘、入库和演化的流程,系统框架以及实现方案。然后,给出 了原型系统的具体实现。该软件设计模式库可以动态的配置模式分类图式对模式进行分 类;可以选择适当的模式模板描述设计模式;可以支持新采掘模式的入库;可以支持模 式和模式库的演化。最后,给出了模式库的一个具体实例( 面向对象设计模式库) ,介 绍了模式库的应用,并结合一个具体模式( 工厂方法模式) 来说明模式的使用。 1 4 论文的组织与结构 本论文共分为五章,第一章为绪论,介绍了本文的研究背景和意义、设计模式及软 件设计模式库的国内外研究现状以及本文的主要研究内容。 第二章综述了软件设计模式库的相关概念和关键技术。分别对模式的分类、描述、 存储、检索以及模式库的演化和管理等方面进行了研究。 第三章在软件设计模式库相关概念和关键技术综述的基础上,提出了基于w i k i 的 软件设计模式库的设计方案。给出了模式库的系统框架、功能操作、存储策略以及数据 库设计。 第四章介绍了软件设计模式库的具体实现。给出了模式库的一个具体实例,介绍了 模式库的应用,并结合一个具体模式来说明模式的使用。 第五章总结了本文的主要工作,并且提出了下一阶段的工作展望。 软什设计模式库芙键技术 第2 章软件设计模式库关键技术 2 1 模式库相关概念 模式库的构建,主要包括对模式进行分类、描述、存储和管理,从而让软件人员或 其它系统利用模式库提供的检索功能找到满足需求的模式并应用之。可见,模式库的关 键技术包括有模式的分类、描述、存储和检索等。以下几节将分别对这些关键技术以及 模式库的演化和管理进行讨论。而在进一步的讨论之前,有必要先对模式库相关的概念 做一下说明: l 、模式 模式库中存储和管理的对象是模式。模式的定义主要有如下几种: a l e x a n d e r 最先在建筑业给出了模式的定义:模式是表达应用环境、问题和解决 方案之间关系的三元组,是在某种环境下如何解决某种问题的指导i 引。 g a m m a 等( 6 0 f ) 给出的模式定义:设计模式是在某语境中需被进一步具体化和 客户化以解决一个一般性设计问题的一组类和对象及它们之间关系的描述5 1 。 b u s c h m a n n 等( p o s a ) 的模式定义:模式描述在某设计语境中反复出现的设计问 题,并提供被证明对该问题行之有效的解决方案框架,这个框架是通过描述它 的组成构件、责任、关系及它们之闯的协作方式来说明的【8 】【1 7 】。 根据人们通常的理解,模式就是一个可在特定语境中解决重复出现问题的被证实了 的解决方案。 2 、模式语言 模式语言是定义了一些模式以及将这些模式联结在一起形成体系结构风格的规则 的集合。模式语言的要素是模式。有一个模式的结构,它描述模式本身是其他更小模式 的模式。还有一些嵌入在模式内的规则,它们描述创建模式的方式,以及有其它模式存 在时排列模式的方式4 】f 8 】。它描述了相关系统的软件框架和体系,覆盖某一特定领域的 每一个重要方面。 3 、模式库 模式库是用于结构化的组织和存储模式的一个软件系统。它就是存放模式的一个仓 软件设计模式库构建及应用研究 库,一个存放人们成功设计经验的知识库。模式库将各种模式分类、描述和存储,提供 方便的检索和浏览方式,指导人们理解和应用模式。模式库能支持新采掘模式的入库和 已有模式的演化。模式库能有效的分类、描述和管理模式以支持软件系统的开发。 4 、模式采掘 模式既然是人们的经验,显然我们不能够发明模式,而只能够从己进行的设计中总 结成功的经验发现模式,这个总结新模式的过程,就是模式采掘。有时解决一个具体的 设计问题,并不总是有个合适的模式适合于它,这就需要通过模式采掘,找到新模式来 解决这个问题。 2 2 模式分类 模式分类的主要目的是方便软件开发人员和开发平台选择正确的模式来应用。好的 模式分类能够让人们不用查看模式的详细信息就可获知和理解模式的主要属性,加快模 式查找的速度,进而提高应用模式进行软件开发的效率。随着模式库中模式的不断增多, 理解和使用模式库就越困难,而一个好的模式分类方法,有助于人们更好的理解模式。 在模式库中所采用的模式分类方法称为模式分类图式( c l a s s i f i c a t i o ns c h e m a ) ,好 的模式分类图式应具有如下一些特性【8 】= 分类图式应当简单和易学,易于分类和选择模式; 分类图式应当包含少而精的分类标准; 每个分类标准应当反映模式的自然属性; 根据该分类能让用户找到一组可能适用的模式,而不是找到唯一适用的模式: 分类图式应对新模式的集成是开放的,而不需要对现有分类进行重构。 好的模式分类图式除应具有以上的特性之外,文献 1 9 1 还做了如下补充: 分类图式应对新的分类标准是开放的,使得通过增加新的分类标准和增加维度 来扩展模式分类图式成为可能: 应当能够反映模式之间的关系。除了能捕获模式的主要特性外,分类图式还要 能突出模式之间的关系。 软件设计模式库关键技术 在设计模式分类图式时,需考虑采用哪些分类标准( c l a s s i f i c a t i o nc r i t e r i a ) 。不同 的分类标准从不同侧面对模式进行刻画。现在已知的用来分类模式的分类标准主要有以 下几种19 】: 按学科分类( d i s c i p l i n e ) 按领域分类( d o m a i n ) 按范例分类( p a r a d i g m ) 按粒度分类( g r a n u l a r i t y ) 按目的分类( p u r p o s e ) 按范围分类( s c o p e ) 通过采用以上的一种或几种分类标准对模式进行分类,就可形成一个模式分类图 式。例如,面向对象设计模式的模式分类图式主要有以下两种: 1 、g o f 分类 在e r i cg a m m a 等人关于设计模式的著作中瞄1 ,将设计模式按目的和范围进行分类, 形成一个二维的分类图式。使用此分类图式将2 3 种设计模式归类为一个设计模式目录。 按目的分类,可将设计模式划分为创建型模式( c r e a t i o n a lp a t t e r n ) 、结构型模式( s t r u c t u r a l p a t t e r n ) 和行为型模式( b e h a v i o r a lp a t t e r n ) 。创建型模式是处理如何创建对象方面的设计 模式;结构型模式主要是处理类或对象的组合;行为型模式则主要用来描述类或对象怎 样交互和怎样分配职责。而按范围分类,是将设计模式区分为是依赖于对象的组装还是 依赖于类的继承来实现该设计方案。 2 、p o s a 分类 在f r a n kb u s c h m a n n 等人的著作中【8 1 ,为了将模式组织成模式系统,而按照粒度和 目的对模式进行分类。按照模式的粒度分类,也即是按照模式的抽象程度和解决问题大 小的粒度进行划分。模式根据粒度由大至小可分为体系结构模式( a r c h i t e c t u r a lp a t t e m ) 、 设计模式( d e s i g np a t t e m ) 和惯用法模式( i d i o m s ) 。体系结构模式可作为具体软件体系结构 的模板,指定一个应用的系统范围的结构特性;设计模式确定更小的体系结构单元的构 成,描述类与对象之间的通信和职责分配等;而惯用法则是语言相关的底层模式,描述 软件设计模式序构建及应用研究 如何应用编程语言的特性来设计代码。按目的分类,也即按照模式用来解决的问题类型 来进行分类。问题的种类有很多,如解决分布式系统、交互式系统、访问控制、通信、 资源处理等问题。问题无法完全列举,因而该分类图式的实现应满足易于扩展问题这一 维度的问题类别的要求。 以上是两种使用最广泛的模式分类。由p o s a 的分类可知,按粒度分类可将模式分 为体系结构模式、设计模式和惯用法模式。g o f 分类方式只讨论了p o s a 分类的设计模 式这一层次,并将其细分为创建型、结构型和行为型模式。 2 3 模式描述 模式的描述,也就是通过一个统一的格式表述人们的设计经验,对模式的各个属性 进行文档化或形式化。模式描述的方法主要分为两个大类:一类是非形式化描述方法。 这种方法使用自然语言来描述模式,并结合图示( 如u m l ,o m t 等图示) 对模式的结 构和类与对象间的协作做更直观的描述。它面向的对象主要是人,指导人们理解和应用 模式;另一类是形式化描述方法。这种方法可对模式进行精确的、无二义的形式化描述。 它面向的对象主要是计算机,让其它软件系统能够精确理解模式并应用之。 以易于理解的方式对模式进行描述是人们学习和应用模式的前提。好的描述和表 达,可以让其它软件人员更容易理解模式的设计思想。当要对大量模式进行描述时,需 设计一个模式模板。模式模板是构成模式的属性或主题的集合。确定模式模板也即是确 定要从哪些方面对一个模式进行描述。在确定模式模板的要素对模式进行描述时,有过 于复杂和过于简单两个极端。如何做到不用将模式描述得太繁琐复杂,又能对模式描述 得足够清楚以便于人们学习、理解和应用,这是我们在设计模式模板时要考虑的问题。 现有许多用于描述模式的模板,其中最常用的两个模式模板形式是a l e x a n d e r 形式 f 加和g o f 格式1 5 1 。a l e x a n d e r 形式是a l e x a n d e r 在其著作中描述建筑学的模式时所采用的 模式描述格式,而g o f 格式则是g a m m a 等人在其设计模式书籍中被提出并用之描述软 件设计模式。此外,还有一些学者提出了一些其它模式模板,如b e c kf o r m 、c o c k b u mp m f o r m 、c o p l i e nf o r m 、f o w l e rf o r m 、p o r t l a n df o r m 、c a n o n i c a lf o r m 和c o m p a c tf o r m 等 s i l 。 软件设计模式库关键技术 模式的形式化描述是模式库支持智能化软件开发的基础。模式形式化的第一步工作 就是设计形式化的描述语言,然后,可借助相关工具使用形式化语言对模式进行描述。 有很多学者对此做了大量的研究,设计了一些用于描述模式的形式化语言。c o w a n 等提 出了一个抽象数据视图方法( a d v ,a b s t r a c td a t av i e w ) f 2 8 1 。a d v 将设计分割成对象和 对象视图两种类型的构件,有严格的设计规则集合,使用形式化模型对模式进行描述。 e d e n 等提出的一种形式化语言叫l e p u s ( l a n g u a g eef o r p a t t e r n s u n i f o r m s p e c i f i c a t i o n ) 印l 。l e p u s 专注于设计模式结构方面的形式化。m i k k o n e n 提出了 d i s c o ( d i s t r i b u t e dc o o p e r a t i o n ) 即】。d i s c o 被设计用来描述交互式系统,更多的是专注于 描述模式的行为方面特性,而对结构方面的描述支持很少。b p s l ( b a l a n c e dp a a e m s p e c i f i c a t i o nl a n g u a g e ) 则对以上两种进行了综合考虑和平衡,同时支持模式的结构和行 为特性方面的描述【3 l 】。w a r m e r , f j 对u m l 进行扩充,使用o c l ( o b j e c tc o n s t r a i n tl a n g u a g e ) 对u m l 的图形模型进行约束以改善其描述的模糊性问题口2 1 。 此外,一些学者还设计了一些专门针对描述软件体系结构的形式化语言,叫做体系 结构描述语言( a d l ,a r c h i t e c t u r ed e s c r i p t i o nl a n g u a g e ) 。a d l 可作为体系结构模式的解 决方案中所采用的软件体系结构的描述语言。他们提出了若干适用于特定领域的a d l 。 c 2 是一种基于构件和消息的a d l ,适用于大型频繁交互的层次型图形用户界面的软件 的体系结构描述 3 3 】。d a r w i n d 4 1 和w r i g h t 3 5 1 分别将演算和c s p 作为其数学基础,适用 于分布、并发类型的体系结构描述。a c m e 是一种体系结构互换语言,支持从一种a d l 向另一种a d l 规格说明转换。还有其他一些比较有影响的体系结构描述语言,如 a e s o d ,u n i c o n ,r a p i d e ,s a d l ,m e t a h ,w e a v e s 等3 6 1 。 使用模式模板对模式的各方面特性进行描述,是为了将软件专家的成功设计经验文 档化,让其它软件设计者学习和应用这些模式;而设计描述模式的形式化语言,是为了 将这些模式形式化,让软件开发支持系统能够理解并应用模式。模式库首先采用模式模 板将库中的模式进行描述,并以良好的方式呈现其内容,使模式库成为一个在线的模式 目录和模式书籍。然后用一种合适的形式化语言将库中的模式形式化,以支持软件系统 的开发。 软件设计模式库构建及应用研究 2 ,4 模式存储 模式分类和描述后的下一步工作就是模式存储。在设计存储策略之前,需要确定模 式库中要存储的实体是什么,然后根据这些实体的特点和模式库的需求选择适用的存储 系统。无论选用哪种存储系统,都要考虑版本管理的问题,以支持模式库系统的演化。 最后,确定总的存储方案。 当前可用的数据存储系统主要有数据库系统和文件系统两个大类。数据库系统根据 采用的不同理论模型和技术又可分为层次数据库、网状数据库、关系数据库、面向对象 数据库和x m l 数据库等,技术相对成熟和较为常用的是关系数据库系统。下面简要介 绍一下各种存储系统的情况【3 7 i 4 1 j : l 、关系数据库 关系数据库是已经比较成熟的数据存储系统。关系数据库以二维表为基本的存储形 式,通过关联和查询来表现数据间的关系。它已经广泛的应用在众多的系统中。关系数 据库具有储存和管理大量数据的高效性、理论的严密性和技术的成熟性。它不仅可以支 持存储不同的数据类型和复杂的数据结构,而且能够表示结构化的数据。它可以方便地 表达出数据之间的关系,并且还可以提供多种线索进行查询,具有很高的查询效率。 2 、面向对象数据库 由于关系数据库的局限,人们开始进行深入的研究,希望能够将面向对象技术与数 据库结合起来。面向对象技术使用丰富的数据类型来反映现实世界的数据关系,具有存 储数掘量大、易于维护、易于扩充、易于格式动态变动等优点。由于它本身具有的模块 化和强有力的内部操作能力,能够有效地提高开发者的主产率。一些大型的数据库厂商 都在积极的研究将面向对象技术结合到现有的关系数据库的数据模型中或扩展数据模 型以支持对象和多维的关系。虽然这方面的研究已经有相当的进展,但是在市场上还没 有形成主流的产品【3 羽。目前面向对象数据库尚无成熟产品,尤其在标准化和性能上令人 不满意,并且有些构件又不支持面向对象技术,因而从实用性考虑,面向对象数据库目 前还难于作为构件底层存储支持。 3 、x m l 数据库 软件设计模式库戈踺技术 现有的x m l 数据库有两类:x m l e n a b l e d 数据库和n a t i v ex m l 数据库1 1 1 】f 3 9 】。 x m l e n a b l e d 数据库是传统的关系和面向对象数据库的扩展,具有数据库与x m l 文档 之间转换数据的能力,但是在转换过程中,从x m l 到数据库的映射可能会损失一部分 元数据和最初的结构。从数据库中生成x m

温馨提示

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

评论

0/150

提交评论