(计算机软件与理论专业论文)软件poad开发方法及支持环境的研究.pdf_第1页
(计算机软件与理论专业论文)软件poad开发方法及支持环境的研究.pdf_第2页
(计算机软件与理论专业论文)软件poad开发方法及支持环境的研究.pdf_第3页
(计算机软件与理论专业论文)软件poad开发方法及支持环境的研究.pdf_第4页
(计算机软件与理论专业论文)软件poad开发方法及支持环境的研究.pdf_第5页
已阅读5页,还剩76页未读 继续免费阅读

(计算机软件与理论专业论文)软件poad开发方法及支持环境的研究.pdf.pdf 免费下载

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

文档简介

软件p o a d 开发方法及支持环境的研究 摘要 设计模式有助于将复用度提升到设计阶段,因为它们提供了一套公共设计 词汇,提供了理解设计的方式,并且是经证实的构造快,通过这些构造快,可 以构造出更加复杂的系统。为了获得利用这些经证实解决方案的好处,需要定 义运用模式构造应用设计的系统化开发方法。 本文探讨了一种全新的基于u m l 语义和语法的面向模式分析和设计方法 p o a d 。这种方法在设计层次上将模式利用成构造块( 组件) ,引入具有接口的作 为设计组件的构造型设计模式,在高层设计上运用一种结构化组合方法对模式 进行胶合,从而促进了基于模式的软件开发。 运用模式进行应用系统开发是一项繁琐的任务,在实践上,p o a d 方法的应 用需要一种有效工具的支持。p o a d 工具应该明确支持模式视图和模式接口等概 念,在体系结构层次上对模式进行集成,提供一种在各种不同的抽象层次之间 追踪模式的机制,产生一套捕捉了模式之间交互的层次化可追踪设计模型。但 在当前,可以获得的可视化建模工具并无法对p o a d 方法提供明确的支持。 在探讨p o a d 方法以及y a c o u b 和a m m o r 等人提出的p o a d 工具应该具备的若 干需求基础上,本文分析了p o a d 方法的不足,进行试验工作和相关研究,对p o a d 方法的运用以及p o a d 支撑工具环境所涉及到的若干关键技术进行研究,提出了 一个用于面向模式分析和设计的设计模式可视化组合工具环境,并给出了原型 实现。 关键字:设计模式,p o a d ,构造型设计模式,模式组合,u m l r e s e a r c ho fp o a dm e t h o d o l o g ya n ds u p p o r t i n g e n v i r o n m e n t a b s t r a c t d e s i g np a t t e r n sh e l pi nl e v e r a g i n gr e u s et ot h ed e s i g np h a s eb e c a u s et h e y p r o v i d eac o m x m nv o c a b u l a r yf o rd e s i g n ,t h e yp r o v i d em e a n so fu n d e r s t a n d i n g d e s i g n s ,a n dt h e ya r ep r o v e nb u i l d i n gb l o c k sf r o mw h i c hm o r ec o m p l e xa p p l i c a t i o n s a r eb u i l t t or e a pt h eb e n e f i t so fd e p l o y i n gt h e s ep r o v e nd e s i g ns o l u t i o n s ,w en e e dt o d e f i n es y s t e m a t i cd e v e l o p m e n ta p p r o a c h e st oc o n s t r u c ta p p l i c a t i o nd e s i g n su s i n g p a t t e r n s t h ed i s s e r t a t i o ns t u d yan e wp a t t e r n - o r i e n t e da n a l y s i sa n dd e s i g n ( p o a d ) a p p r o a c ht h a tu t i l i z e sp a t t e m sa sb u i l d i n gb l o c k s ( c o m p o n e n t s ) a tt h ed e s i g nl e v e l t h ea p p r o a c hu s e su m l m o d e l i n gc a p a b i l i t i e st oc o m p o s et h ed e s i g ns t r u c t u r eo f p a t t e r n sa tv a r i o u sl e v e l so fa b s t r a c t i o nf o rd e v e l o p i n gp a t t e r n - o r i e n t e dd e s i g n s a s o p p o s e dt ob e h a v i o r a la n dr o l ea n a l y s i sa p p r o a c h e s ,t h i sa p p r o a c hi n t r o d u c et h e n o t i o no fc o n s t r u c t i o n a ld e s i g np a t t e m sa sd e s i g nc o m p o n e n t sw i t hi n t e r f a c e ,t a k ea s t r u c t u r a lc o m p o s i t i o na p p r o a c ht o g l u ep a t t e r n s a tt h eh i 曲l e v e ld e s i g n ,t h u s p r o m o t e ss o f t w a r ed e v e l o p m e n tb a s e do np a t t e r n s , a p p l i c a t i o nd e v e l o p m e n tb yu s i n gp a t t e r n si sat e d i o u st a s k i np r a c t i c e ,i tn e e d s h e l pp r o v i d e db ye f f e c t i v ep o a dt o o l s t h i st o o ls h o u l dm a k et h en o t i o no fp a t t e r n i n t e r f a c e se x p l i c i ta n di n t e g r a t e sp a t t e r n sa tt h ea r c h i t e c t u r el e v e l i ts h o u l df a c i l i t a t e s t h ep r o c e s so fd e s i g n i n ga p p l i c a t i o n su s i n gp a t t e r n sa sd e s i g nc o m p o n e n t sa n d p r o v i d e sam e c h a n i s mt ot r a c ep a t t e m st h r o u g hv a r i 0 u sl e v e l so fa b s t r a c t i o n , p r o d u c e sh i e r a r c h i c a l t r a c e a b l ed e s i g nm o d e l st h a t c a p t u r ei n t e r a c t i o nb e t w e e n p a t t e r n s b u t ,c u r r e n tv i s u a lm o d e l i n gt o o l sd on o te x p l i c i t l ys u p p o r tt h ep o a d m e t h o d b a s e do nt h es t u d yo np o a dm e t h o da n ds e v e r a lr e q u i r e m e n t st h a tp o a dt o o l s s h o u l dh a v e ,t h i sd i s s e r t a t i o na n a l y z e st h ed r a w b a c k so f p o a dm e t h o da n ds t u d y s s o m ec r i t i c a lt e c h n o l o g i e sc o n c e r i n gp o a ds u p p o r t i n gt o o le n v i r o n m e n t l a s t l y , t h e d i s s e r t a t i o np r o p o s e sat o o le n v i r o n m e n tf o rv i s u a lc o m p o s i t i o no fd e s i g np a t t e m s f o rd e v e l o p i n gp a t t e r n - o r i e n t e dd e s i g n s ,a n dp r o v i d e si t sp r o t o t y p e k e yw o r d s :d e s i g np a t t e r n s ,p o a d ,c o n s t r u c t i o n a ld e s i g np a t t e r n s ,p a t t e r n c o m p o s i t i o n ,u m l 合肥工业大学 本论文经答辩委员会全体委员审查,确认符合合肥工业大学 硕士学位论文质量要求。 主席: 委员: 导 答辩委员 臻孔。和研 会签名 础静,敞 乳尔鸣韵2 盐弋y 者方垆仓昧 新骏 “ - - 4 棚 叩 讯磋, 咧可 鼢磺 4 合肥工业大学教授 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。 据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写 过的研究成果,也不包含为获得盒世王些态堂或其他教育机构的学位或证而使 用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明 并表示谢意。 学位论文作者签名:吾仁辆吨 签字日期:7 7 哆。年j _ 事m 日 学位论文版权使用授权书 本学位论文作者完全了解金胆工墅太堂有关保留、使用学位论文的规定,有权保留 并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权二金 蟹! :些左堂可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学饶论文作者签名:名萨j 为咽 导师签名 签字日期:了刃疹年妇;。日 学位论文作者毕业后去向 1 作单位: 通讯地址: 菇玳 签字日期凶d 笋f 月一日 电话: 邮编: 致谢 值此论文完成之际,谨向我的导师袁兆山教授表示最真挚的谤 意! 袁老师 为我的论文工作倾注了大量的心血,对我论文的选题、修改直至定稿一直给予 精心的指导,并提出了大量的修改意见。没有导师付出的辛勤劳动,本论文是 不可能完成的,几年的研究生活中,袁老师严谨的治学态度、渊博的知以、对 事业兢兢业业的精神以及平时对我们的谆谆教诲给我留下了深刻的印象,这一 切都将使我终生受益。 感谢王珏、刘栋等同学,与各位的交流与讨论丰富了我的知识,给予我有 益的启示。 向合肥工业大学研究生部以及计算机与信息学院的老师付出的辛勤工作表 示感谢。 最后,也要感谢我的家人,正是他们给予我的大力支持与一如继往的鼓励, 使我得以顺利完成学业。 张艳明 2 0 0 5 年5 月 第一章绪论 1 1 引言 “软件危机”的出现导致了软件工程( 1 9 6 8 年) 的产生,软件工程的提出 表明了软件界的向前发展迈出了一大步,但这并没有完全地消除“软件危机”。 随着软件规模的不断增大和软件复杂度的增加,软件的生产能力和软件的质量 无法满足人们日益增长的需求。软件开发不仅要求系统功能准确,也要求具有 可复用性、易维护性、可移植性等非功能性特征,同时要求缩短开发周期、降 低成本、增加软件开发的成功可能性。 现在,人们逐渐达成的共识是:解决软件开发困境的卓有成效的一种途径 就是软件复用。软件开发在提高软件生产率和可维护性上所发生的一个重大的 转变就是人们不再从无所有开始设计开发应用系统,而是复用那些频繁出现 的问题的现存解决方案,而这些解决方案已经在其它应用中得到了应用和测试。 软件复用不仅是软件工程学研究的一个重要领域,也是解决软件危机和推动软 件产业化发展的一个重要研究方向。 引进软件生产线是降低软件费用、提高软件质量的一条最佳途径,它能最 大化地复用多种多样的资源,包括系统的需求分析、软件的需求分析、整个系 统与软件的设计、现有的组件、文档、测试策略与计划等等。而软件模式就是 实现软件生产线这个梦想的第一步,也是最重要的一步。 本章从设计角度阐述软件复用方法,并对论文组织进行介绍。 1 2 论文方法学背景 软件复用的概念由m c l l r o y 首先提出。软件复用技术是实现软件系统工程化 的有效途径,随着软件理论与技术的发展,软件复用方法已经从原先的代码复 用发展到了软件方案的复用( 包括数据结构与算法的复用、框架的复用) 。也就 是说,软件复用涉及了领域知识、软件需求规格说明、概要设计以及详细设计、 功能模块、测试计划、测试用例和程序设计结果等可复用部件的复用。 1 2 1 软件复用的意义 软件复用给软件开发带来的好处是明显的,主要包括: 在软件开发中使用可复用的软件部件可以降低软件的开发成本。同时, 由于可复用部件都经过严格的测试,所以还可以降低软件的维护成本。 使用经严格测试的可复用部件可以提高软件的开发质量,增强软件产品 的竞争力。 可复用部件的使用还可以提高软件开发的效率,缩短软件开发周期。 1 2 2 软件复用的研究现状 作为软件工程中一个很有活力的领域,软件复用已逐渐成为研究和开发的 主流方向之一。系统的软件复用是一种软件工程方法,涉及软件开发的全过程, 是技术、方法和过程的结合,包括体系结构、需求、分析、设计等方方面面。 在实际应用系统中,复用软件是一项非常困难的任务,但它对于减少开发 工作量以及确保更高的软件质量来说是非常重要的。在面向对象被普遍采用以 前,最流行也最普遍的软件复用是程序代码的复用。系统化的复用以及把复用 当作软件开发的新范例,则是在面向对象技术被软件界认可并成为主流技术以 后。过去十年中,软件复用已经逐渐融入软件工程研究的主流。 组件复用是目前发展最快的复用方式,它其实是代码一级的复用,而设计 复用比代码复用更为重要。这主要是因为:首先,设计复用更加灵活,可应用 于更广阔的背景,因此更为通用;其次,设计复用应用于软件开发周期更早的 阶段,因而对软件项目的影响更大;最后,设计复用的粒度通常是粒度更大的 复用。但当前的事实是,设计复用和框架复用相比代码复用不太经常发生,而 且也不够成熟,这是由于为通用工程问题构造一般性设计是比较复杂而困难的。 设计模式有助于将复用提升到设计阶段,因为它们是经证实的构造块,通过这 些构造块,我们可以构造出更加复杂的系统。 可复用度由应用开发人员实施的设计决策而决定。一个简单的设计决策, 比如个库类或a p i 的复用,是最常用也是最容易复用的。复用度根据被重用 组件粒度的不同而不同。小粒度可复用组件可以是类、方法或例程。一个类库 是一系列的可复用类。设计模式将复用层次提升到复用协作类的层次,协作类 有时候也被称做是微体系结构。面向对象框架是更高程度的复用,它以大量协 作类的形式而出现。体系结构包括了关于如何构造总体应用系统的可复用思想 概念。可复用应用系统是最高级的复用层次。总之,我们可以根据粒度将可复 用制品分类成:应用系统、体系结构、o o 框架、设计模式、类库、类和例程。 目前,关于设计复用的研究主要集中在框架、软件体系结构、设计模式等若干 方面。 1 3 软件复用的途径 1 3 1 框架 框架( f r a m e w o r k s ) 是类的扩展集合,这个集合中的类相互合作以产生完 整的应用结构或应用模型,从而比一个简单的类库提供了对应用开发的更完全 的支持。框架通常包含模式和一些宏观机制以协调类间关系,满足特定应用领 域的公共需求。最常见的框架是应用框架,比如m i c r o s o f t 的m v c 、b o r l a n d 的 o w l 、i b m 的o p e n c l a s s 等。 框架是复用技术的一种,主要是面向对象的复用,即使用了面向对象的主 要特征:类、继承和多态。简单地说,一个框架是一个描述设计的可复用的骨 架。它表示了大规模的设计,描述了程序如何分解成相互交互的对象集,通常 被表示成一些抽象类和它们的实例交互。框架部分复用设计,部分复用代码。 框架复用代码是因为我们通过它可以容易地在现有组件库的基础之上构造应 用,还有,一个新组件可以从它的抽象超类继承大部分的实现。当然,框架复 用代码的本质在于框架是可复用的设计。它提供了可复用的抽象算法和高层设 计,将大的系统分解成较小的组件,并描述了组件之问的内部接口。这些标准 的接口使得组件之间的匹配和组装成为可能,我们可以通过较少数量的组件构 造出系统。 1 3 2 软件体系结构 软件体系结构s a ( s o f t w a r e a r c h i t e c t u r e ) 定义了组成系统的计算组件以及 组件之间的相互作用关系。在体系结构层次定义的组件包括:客户软件、服务 器软件、数据库、过滤器等。组件之间的交互可以是非常简单的,比如过程调 用、共享数据访问、消息;也可以是复杂并具有丰富语义的,比如客户机一服务 器协议、数据访问协议、异步事件广播和管道等。 体系结构的重要性是勿容置疑的。良好的体系结构可以为软件开发、复用 和维护等带来显著的好处,这主要体现在以下几个方面: 软件开发实践已经经历了4 0 多年的时间,今天,很少存在一个待开发的 软件系统同以前的系统没有任何相似之处。识别出相似系统的通用结构,有助 于理解系统问的高层联系,使得新系统可以作为以前系统的交体来构造。 软件体系结构可以作为一种可变换的模型。它是一个系统的可转移抽象。 对于系统是如何被组织的以及系统的组件是如何共同工作的,它体现了一个相 对小的、可掌握的模型。这个模型可以跨越系统而转移;尤其,它可应用于其 他表现出类似需求的系统,能够促进大规模的复用。软件体系结构级别的复用 意味着体系结构的决策能在具有相似需求的多个系统中发生影响,这比代码级 别的复用有更大的好处。 合适的体系结构是软件系统成功的关键,而不适合的体系结构往往导致 灾难性的后果。 对体系结构的准确理解使得开发人员可以在不同的设计方案中做出理性 的选择。 体系结构对于分析和描述复系统的高层属性是十分必要的。 1 。3 3 设计模式 “模式”这个术语来源于美国建筑大师c h r i s t o p h e r a l e x a n d e r 的研究工作, a j e x a n d e r 在他的著作建筑模式语言中全面阐述了模式理论 1 】。而设计模式 ( d e s i g np a t t e r n ) 则是成功的软件实践经验的总结,是软件实践的抽象。它们 在收集熟练的设计者和软件工程师的经验方面起到了“根基”的作用。模式以 容易获取的方式和所希望的良好书写的格式捕获了已证实的解决方案,从而使 得人们在提高软件生产率和可维护性上产生了一个重大的转变。就是不再从一 无所有开始设计开发应用程序,而是复用那些频繁出现的问题的现存解决方案, 而这些解决方案已经在其它应用中得到了应用和测试。 设计模式出现的前提是设计复用,设计复用出现的前提则是因为我们知道 软件构造过程中最困难的部分并不是代码,而是在早期设计层次做出的决策。 设计模式是解决设计复用的众多方法中前景广阔的一种,它使得我们有可能在 开发周期的早期阶段获得新的复用利益。设计模式描述了软件开发过程中反复 出现的具体问题以及其解决方案,解决了特定背景下一般的设计问题。 模式的目标是在软件开发中创立一个文化主体,以帮助人们解决在开发活 动中遇到的重复出现的问题,为开发人员创建共享的语言以交流问题和问题求 解的经验。它们通过描述问题、解决方案,以及其它重要因素之间的关系和规 则,成功捕捉了软件开发的知识经验,奠定了建立优秀软件系统的基础。 1 4 面向模式分析和设计p o a d 大量可利用的模式文献激励着研究人员对如何应用这些经证实解决方案实 现应用系统的开发进行深入的探索。尽管设计模式被当作是复用面向对象设计 的有效方式,但我们依然缺乏如何系统化地部署和胶合这些经证实解决方案的 技术。为了获得部署施用这些经证实解决方案的好处,我们需要开发使用模式 构造应用系统的技术。 面向模式分析和设计p o a d ( p a t t e r n o r i e n t e da n a l y s i sa n dd e s i g n ) 方法是 西弗吉尼亚州大学计算机科学和电子工程学院的s h e r i f m y a c o u b 和a m m a r 等 博士提出的一种建立在u m l 语法和语义基础之上的使用设计模式进行软件开 发的新方法 2 】。在软件工程环境下,作为一种设计方法,p o a d 涵盖了三个内 容:技术,过程和组织。技术方面包括概念、记号表示以及可视形式化模型。 p o a d 的主要概念是把设计模式定义和利用成构造的设计组件,并定义了用来 结构化地组合模式以开发面向模式设计的可视化模型( 模式层视图,具有接口 模式层视图和详细模式层视图) 。面向模式的设计把具有接口的构造型设计模式 用做设计组件。模式接口的引入是为了将一个模式具体说明成一个组件,以及 用来刻画在高级设计层次上组合模式的方式。这种方法讨论了用于支持该方法 的u m l 表示的一些语义和语法上的局限性,并正式对u m l 元模型进行了一些 扩展。在过程方面,p o a d 定义了开发面向模式设计的主要任务和基本步骤, 在所提出的可视化模型的基础之上定义了分析和设计步骤。p o a d 定义了每一 个步骤的输出可交付制品,并对支撑该方法的自动化支持工具进行了论述。在 4 组织方面,p o a d 定义了企业如何有效地利用这种方法。 p o a d 是一种具有创新意义的运用模式进行软件开发的新方法。作为一种 新方法学,尽管它仍然处于一个进化中的阶段,也还没有开始得到众人广泛的 接受,但它如此强调设计模式的系统化运用,是其它任何一种方法所不曾具有 的。它的开发步骤非常容易使用,在得到恰当c a s e 工具的有力支持,一些部 分甚至可以实现自动化。当然,它最为重要的意义在于,这种方法的目标非常 清晰而且很有远见:系统化运用模式进行应用系统的开发。这种新思维很有可 能在软件工程领域产生比较深刻的影响。 1 5 论文的主要工作 模式已然成为软件工程领域内一个非常热门的研究话题,面向模式分析和 设计方法更是最近一两年爿提出的一种系统化运用模式进行软件开发的新方法 学。对这个领域进行一定的研究工作,发现其不足,找到改进的方向,将此方 法所包含的新思想新技术引入国内,在我看来,是非常有意义的。论文的主要 工作是: 对软件模式进行比较细致深入的综述,并介绍了模式领域一些有待进一 步解决的问题,为未来的研究工作指明方向。 着重讨论了p o a d 方法的一些基础技术概念,提出这种新方法存在的一 些不足,指出该方法非常强调系统化地使用设计模式进行软件开发。它的目标 ( 系统化使用模式进行优秀的软件开发) 是一个非常有吸引力和前途的方向, 对于软件工程领域有着比较深刻的影响。 研究面向模式分析和设计方法及其支撑工具环境,提出p o a d 方法支撑 环境的基本构成元素,给出p o a d 方法支撑环境的功能框架。并对构成p o a d 支撑工具环境的关键技术点进行研究。 - 根据p o a d 方法,以及p o a d 工具应该具备的若干需求和不同开发阶段, 进行了试验工作和相关研究。结合面向模式分析和设计过程,开发p o a d 工具 原型系统。 1 6 论文组织 本论文主要分两大部分,第一部分包括第一、第- z 章;第二部分包括第三、 四、五章。第一部分主要是综述,第二部分针对所做的课题研究,对面向模式 分析和设计方法p o a d 和支撑工具环境进行深入研究。 具体说来: 第一章绪论。介绍论文研究背景,讲述软件复用技术,介绍论文主要研究 内容。 第二章软件模式。本章对软件模式及其相关基础知识概念进行了详细的介 绍:模式的起源、模式定义、模式生命周期、模式分类、模式描述格式、模式 目录、模式系统、模式语言等。本章在最后讨论了当前模式的研究实践现状, 并介绍了模式领域些有待进一步解决的问题,为未来的研究工作指明方向。 第三章面向模式分析和设计方法。本章对面向模式分析和设计方法学 p o a d 的相关知识进行全面阐述,并着重讨论了p o a d 方法的一些基础技术概 念,包括模式组合、设计组件、构造型设计模式、模式接口、模式视图等。提 出这种新方法存在的一些不足,这主要集中在它的自动化支持工具方面。指出 该方法非常强调系统化的使用设计模式进行软件开发,目前还没有其它一种方 法如此突出设计模式的使用。它的目标( 系统化使用模式进行优秀的软件开发) 是一个非常有吸引力和前途的方向,对于软件工程领域有着比较深刻的影响。 第四章面向模式分析和设计方法支撑环境构成。本章讨论了p o a d 这种面 向模式分析和设计支持工具的构造需求,以及它所支持的模式视图,提出p o a d 方法支撑环境的基本构成元素,给出p o a d 方法支撑环境的功能框架。p o a d 工具有助于层次设计,因为它使得我们可以在设计复杂系统的过程中复用精心 文档化的设计模式,并且可以从这些模式很容易地追踪到较低级的面向对象设 计层次。p o a d 工具应该有助于我们在进行层次化地可追踪到低层设计的体系 结构开发的同时,依然可以维护应用系统的体系结构视图。 第五章p o a d 环境的关键技术和原型实现。本章着重介绍围绕p o a d 方法 和支撑环境开展的试验工作,对该方法的运用所涉及到的若干关键技术进行研 究。根据p o a d 方法,以及p o a d 工具应该具备的若干需求和不同开发阶段, 进行了相关研究。首先讨论模式的描述形式,其次研究如何使得开发人员在设 计过程中快速迅捷地选取合适的模式。在此基础上对设计模式的信息进行建模, 提出基于设计模式自动获取的建模方案,之后进行模式存储机制的研究,创建 中心模式库。最后结合一种当前可获得的恰当的模式工具进行原型实现和试验。 第六章结束语。对论文所做的工作进行总结,并展望下一步有待继续研究 的工作。 6 第二章软件模式 2 1 引言 软件模式近来获得了人们特别的注意力,已经引起人们的广泛关注,成为 软件工程领域的一个非常热门的研究领域。软件模式在收集熟练的设计者和软 件工程师的经验方面起到了“根基”的作用。模式以容易获取的方式和所希望 的良好书写的格式捕获了这些已证实的解决方案,从而使得人们在提高软件生 产率和可维护性上产生了一个重大的转变,就是不再从一无所有开始设计开发 应用程序,而是复用那些频繁出现的问题的现存解决方案。 不论如何,模式已经引起了研究人员和实践人员的兴趣。r a l p hj o h n s o n 说 “模式是一种使得软件开发人员能够更好地思考他们所做的一切,更好地在彼 此之间进行交流以标准化软件制造方式,以及鼓励新开发人员更快地提高技术 的一个低成本的手段方法。 3 】”一般来说,一个模式描述了在软件设计和实现 中所频繁出现的一个问题,并通过一种可被复用的方式描述了该问题的解决方 案。模式是知识的传输渠道,它捕捉和传达经时间证实的实践,但模式绝不仅 仅只是技巧,它们传授的是理解。它们不仅仅告诉你w h a t 和h o w ,更包括了 w h y 和w h e n ,这才是模式的真正力量之所在。它们可被认为是为总体系统体系 结构做出贡献的可复用微型体系结构。模式通常与具体实现语言独立无关,可 被用来描述组件之间的联系。通过关联组件对象、组件对象之间的合作以及职 责分配,模式捕捉了设计决策的意图。此外,它还通过一个精心定义的反映了 成功解决方案的模式名称词汇表增强了人们之间的交流通信。总而言之,“模式” 的长期目标是为软件工程师们提供开发指导手册,尽管我们距离这个目标还有 很长的一段路要走,但模式已经证明了它们有助于人们复用成功的实践。可以 这样说,模式发挥了一种智能杠杆作用,它也许能从根本上改变人们对软件设 计的看法。 2 2 软件模式以及相关概念 2 2 1 模式来源和模式团体 以规范的形式记录设计知识可以追溯到建筑大师c h r i s t o p h e ra l e x a n d e r 的 关于城市设计与建筑结构的模式理论。a l e x a n d e r 是美国加里福尼亚大学的建筑 学知名教授,他和他的研究小组花费了超过2 0 年的时间,开发了一种使用模式 进行建筑设计的方法。可以说,“模式”这个术语也被归功于a l e x a n d e r 的研究 工作。a l e x a n d e r 在他的著作( ( t h e t i m e l e s s w a y o f b u i l d i n g ) ( 建筑的永恒之道) 中描述了超过2 5 0 个的具有各种不同抽象层次的模式,从结构一直跨越到房屋 设计,详细说明了如何将模式应用到房屋构建以及领近地区和整个城市的规划 之中。他建立了模式的一种基础描述模板形式:上下文一问题一解决方案。 a l e x a n d e r 的工作基础主要是居住场所的设计,不仅注重功能性和流行趋势,而 且要讲究舒适感和欣慰感。在他的作品中,他论述了模式语言的理论并做出说 明,提出了基于“质”、“门”、“道”三个基本概念的体系结构模式 4 ,在他看来, 建筑或城市只有踏上了永恒之道,才会生机勃勃。所谓的“质”是有生命的、有 用的事物的根本,即:生气,完整,舒适,自由,无我,永恒等。而为了具备 这些“质”,我们就必须建立一种有活力的模式语言做为大门,一旦我们建成了 大门,也就可以通过它进入到永恒之道的实践中了。 由于软件工程界与a l e x a n d e r 的建筑界之间存在着惊人的相似性,使彳导他的 模式理论在软件界生根发芽。1 9 8 7 年,k e n tb e c k 和w a r dc u n n i r 。g h a m 首先将 模式思想引入软件界。他们编写了第一批的软件模式,这些模式与用户接口设 计具体相关,k e n t 关注于s m a l l t a l k 语言惯用法,而w a r d 捕捉了它的业务系统 开发经验,他们在 u s i n gp a r e ml 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 ) ) 一书 中描述了模式应用的结果和思想【5 。不久,j i mc o p l i e n 在1 9 9 2 年编写了一组 c + + 惯用法,尽管不是以模式的格式而被描述,但在某种程度上,它们也与对 频繁出现问题的解决方案进行文档化这样种思想相关。第一本正式出版的关 于在软件开发中使用模式的著作是e r i c h g a m m a 在1 9 9 1 年所写的博士论文,他 已经意识到,重复出现的设计模式非常重要,关键是如何获取和描述。此论文 是以德语形式发表的,在当时并未引起太多的关注,但我们将在稍后提到的引 起轰动影响的设计模式一书中的模式其实有将近一半都出现在这篇论文中。 从1 9 9 0 年到1 9 9 2 年,四位软件设计专家被称为模式团体的“四人组g o f ” ( 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 ) 逐渐 走到一起,并着手编写了系列的模式。这段时期,模式开始引起更多一部分 人的关注。b r u c ea n d e r s o n 是模式团体的领导人之,1 9 9 1 年和1 9 9 2 年,他 在o o p s l a ( 面向对象程序设计、系统、语言和应用) 会议上主持召开了关于 模式的研讨会,模式界许多著名的人物都参与了这几次会议的研讨,包括j i m c o p l i e n ,d o u gl e a ,d e s m o n dd s o u z a ,n o r mk e r t h ,w o l f g a n gp r e e 等。1 9 9 3 年8 月,k e n tb a c k 和g r a d yb o o c h 等人在美国科罗拉多州发起了讨论模式的论 坛,形成了著名的山腰小组( h i l l s i d e g r o u p ) 。山腰小组逐渐成为模式团体的非 官方指导委员会,它是一个非赢利组织,宗旨是深入探索模式思想,促进模式 在软件开发过程中的应用,领导模式团体并对软件工程这个学科中的新来者给 予支持。该组织的成员包括w 矾c u n n i n g h a i n 和k e n tb e c k 、“四人组”,g r a d y b o o c h 和j a m e so c o p l i e n 等一批著名模式人士。山腰小组的“精神之父”是k e n t b e c k 。此外,该组织也是p l o p ( 程序设计的模式语言) 会议的组织者和发起者, 并在1 9 9 4 年召开了第一界p l o p 会议。 随后,模式开始进入良性的发展阶段,1 9 9 4 年,四人组合著出版了( ( d e s i g n p a t l e m s :e l e m e n t so f r e u s a b l eo b j e c t o r i e n t e ds o f t w a r e ) ) ( 设计模式:可复用面向 对象软件的基础) 【6 ,这本书被誉为软件模式方面的开山之作,它引起了众多 人士开始对软件模式的热情关注。从这一刻起,软件模式开始被广泛接受,四 人组成员们也成为了模式团体内的几位领军人物。设计模式一书提供了用于面 向对象设计的第一批精心描述的文档化的设计模式目录,对面向对象范例中经 证实的为众人所知的设计解决方案进行了分类。他们文档化了2 3 个设计模式, 并将之分类为三个范畴:行为型,结构型和创建型。 p e t e rc o a d 在1 9 9 2 年发表了一篇文章,其中描述了一些面向对象分析和设 计的简单模式。他主要研究用于分析具体应用领域的模式,并使用面向对象技 术来构造应用系统。j a m e so c o p l i e n 是关于惯用法尤其是c + + 惯用法方面的一 位重要模式专家。d o u g l a sc s c t u n i d t 是模式团体中另一位值得注意的人物,他 的模式主要是与电信系统和分布应用相关。 f r a n kb u s c h m a r m ,r e g i n em e a n i e r ,h a n sr o h n e r t ,p e t e rs o m m e r l a d 和m i c h a e l s t a l 是模式团体内另外一个引人注目的五人组( g a n go ff i v e ) ,他们于1 9 9 6 年编写出版了软件模式领域另一部经典作品书籍: p a r e n a so r i e n t e ds o f t w a r e a r c h i t e c t u r e : a s y s t e mo f p a t t e m s ) ) ( 面向模式的软件体系结构:模式系统) 。相 比四人组的设计模式仅仅覆盖了面向对象开发中的一个抽象层,他们将软 件模式分类成体系结构模式、设计模式和语言特定的惯用法【7 。但他们所作出 的绝大多数贡献主要是在体系结构模式方面。这本书,连同上面提到的g o f 书 籍,是模式新手们的经典入门指导。 每年一次的程序设计模式语言( p a t i e ml a n g u a g eo f p r o g r a m m i n g p l o p ) 会议 是模式评估和分类的主要研讨场所。国外软件工程界已经把模式引入到软件生 命周期的各个过程中,如需求工程、项目计划、开发组织等,而其理论成果就 主要体现在从1 9 9 4 年开始的p l o p 年会论文集中。 2 。2 2 什么是模式? 一般来说,一个模式描述了软件设计和实现中频繁出现的一个问题,然后 以一种可被复用的方式描述了此问题的解决方案。它们是将知识和经验从专家 传递给新手们的有效工具。模式所表示的抽象层次比体系结构层和框架层略低, 但高于面向对象设计构造体( 类和对象) 所代表的抽象层次。模式文档化了经 证实的高质量设计经验,它们提供了一套用于理解设计原则的词汇。同时,它 们还是对复杂异构系统的体系结构进行文档化的有效方式,从而也帮助我们管 理了系统复杂度。模式提供了传达软件概念和经验的简明有效的方式,它们还 被用做指导教学的一种重要手段。 软件工程领域存在许多模式,软件工程的专家从实践经验中获知这些模式, 并在开发具有特定属性的应用中遵循这些模式,下面,我们通过软件工程领域 的一个著名例子来进一步地说明什么是模式。 9 开发人员在设计人机界面软件时通常考虑这样一种模式:模型视图控制器 ( m o d e l v i e w c o n t r o l l e r ) 。用户界面容易改变需求,比如,当扩展一个应用程序 的功能时,必须修改菜单以访问新功能,而且用户界面必须适合特定的用户。 一个系统可能经常以不同的视觉和感觉标准运行在另一个平台上。甚至升 级一个新的窗口系统就意味着需要更改你的代码。总之,经久耐用的系统用户 界面是一个不断变动的目标。 如果用户界面和功能核心紧密交织在一起,则建立一个具有所要求灵活性 的系统的代价是昂贵的,而且容易出错。这导致开发和维护几个实质上不同的 软件系统,一个系统针对一个用户界面的实现。因此,在开发这样一个交互软 件系统时,你必须考虑两方面的因素: t 用户界匿应该是容易改变的,在运行期间也是可以改变的。 ,用户界面的修改或移植应该不影响应用程序功能核心的代码。 为解决此问题,我们把一个交互应用程序划分成三个部分:处理、输出和 输入: ,篌z 亭( m o d e l ) 组件封装核心数据和功能,它独立于特定的输出和输入行 为。 扭留( v i e w ) 组件向用户显示信息。视图获得来自模型的待显示数据。 一个模型可以具有多个视图。 每一个视图具有一个相关的搓锄器( c o n t r o l l e r ) 组件。控制器接受输入, 通常就是象鼠标移动、鼠标点击或键盘输入等事件。事件被转换成服务请求, 而服务请求又被传送给模型或视图。用户仅仅通过控制器与系统交互。 将模型与视图和控制器组件分离允许同一模型具有多个视图。如果用户通 过一个视图的控制器而改动了模型,则所有其他依赖于这个数据的视图应该反 映这个改动。为达到这一目的,数据一旦改动,模型就通知所有视图。视图依 次从模型获得新数据并更新显示信息。这种解决方案可以改动应用程序的一个 子系统而不对其他子系统产生重要影响。这种模式还有一个变体是文档视图, 这个变体放松了视图与控制器的分离,如果你运用过v i s u a lc + + 的话,你对这 种文挡视图结构应该是比较熟悉的,因为它已经被集成到v i s u a lc + + 环境中。 通过上面这个介绍性的例子,我们可以从中导出模式的几个属性:一个模 式关注一个在特定设计环境下出现的重复设计问题,并为之提供一个解决方案; 模式用文档记录下现存的经证实的设计经验;模式为设计原则提供一套公共的 词汇和理解。 说到这里,我们总结模式的定义,应该说,关于模式的定义,目前尚未存 在统一的认识。c h r i s t o p h e r a l e x a n d e r 在建筑的永恒之道一书中,这样定义 “模式” 4 】: 每个模式是一条由三个部分组成的规则,它表示了一个特定环境、一个问题和一个勰 o 决方案之间的关系。 作为现实世界的一个元素,每个模式是一个特定环境,在该环境中重复出现的一个特 定强制条件体系( s y s t e m so ff o t c c $ ) 以及给这些强制条件自求解提供一个特定空间配置等 三者之间的相互关系。 作为语言的个元素,一个模式是一种说明,它说明了如何可以反复不断的使用这个 空间配置,不断求解给定的强制条件体系,只要环境是与它相关的。 简单地说,模式是在同一时间里发生在世界上的一件事物和如何创建这个事物以及我 们何时必须创建它的规则。它既是一个过程,又是一个事物:既是一个活生生事物的描述, 又是产生这个事物的过程描述。 我们可以这样理解a l e x a n d e r 的话的含义,他认为,每一个模式描述了一个 在我们周围一个环境下不断反复发生的问题,以及该问题的解决方案的核心。 这样,你就能次又一次地使用该方案而不必做重复的劳动,每一个模式是一 个包括三个部分的规则,这个规则表达了一个特定上下文( 语境) 、一个问题以 及一个解决方案这三者之间的一种关系。结合以上示例,开发具有人机界面的 软件是模型一视图控制器模式的语境。这个模式关心的是用户界面频繁变化的 这样一个人们经常碰到的问题。而这个模式的解决方案给出了如何解决此再现 问题,简单的描述就是“把一个交互应用程序分成三个部分:处理、输出和输 入”。 在 ( u n d e r s t a n d i n ga n du s i n gp a t t e r n si ns o f t w a r ed e v e l o p m e n t ) ) 中,d i r k r j e h l e 和h e i n z z u u i 曲o v e n 给出了模式的另一种定义【8 ,他们认为模式是一种 在特定的、非任意的环境中不断反复出现的具体形式的抽象。简

温馨提示

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

评论

0/150

提交评论