(计算机软件与理论专业论文)设计模式在html解析器中的应用.pdf_第1页
(计算机软件与理论专业论文)设计模式在html解析器中的应用.pdf_第2页
(计算机软件与理论专业论文)设计模式在html解析器中的应用.pdf_第3页
(计算机软件与理论专业论文)设计模式在html解析器中的应用.pdf_第4页
(计算机软件与理论专业论文)设计模式在html解析器中的应用.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机软件与理论专业论文)设计模式在html解析器中的应用.pdf.pdf 免费下载

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

文档简介

重垦奎鲎堡主兰垡堡苎 主塞塑萋 摘要 设计模式是软件工程领域的一个热点研究方向。“四人帮”合著的设计模式 出版,引起人们开始对软件模式的热情关注。设计模式帮助人们超越个别的概 念化设计关系,抓住体系的重要结构以及评价对成功的解决方案进行革新时的簧 略。软件模式是一个由三部分组成的规则,它表达了某种环境、该环境下不断重 复出现的某种压力系统与允许这些压力自我释放的软件配置三者之间的关联。模 式是针对反复出现的问题的。如果问题只是个别的,则其解决方案的抽象不能称 为模式。设计模式来源于成功的经验,捕捉的是成功解决方案中的结构精华,而不 是具体的技术细节。灵活运用设计模式可以解决软件的维护性和复用性上存在的 问题,其目标是为软件系统构建灵活的可扩展的设计方案。 面向对象技术已经在软件领域得到广泛的运用,但是面向对象技术在进行系统 建模的过程中存在一些不足,本文在分析c o a d 方法不足的基础上,寻找一种通过使 用模式理论的方式来进行系统建模的方法,在不同的软件层次上通过使用相应的模 式,通过模式和需求分析结果的结合涞不断的细化软件的设计。 本文在对软件维护性和软件可复用性进行了研究。软件结构的复杂程度的不 断增加,在软件的开发过程中和软件交付后的维护中,由于软件在结构上的僵化,增 大了软件的维护难度。软件的复用在也是最近的一个研究热点,软件部件的构造过 程中,没有灵活的结构,部件之间的相互依赖性过大,当一个部件进行复用时需要满 足很多的先决条件,这影响了软件的复用性。本文希望通过使用模式理论,为软件系 统建立一个灵活的体系结构,来增强软件的可维护性和复用性。 本文对统一建模语言进行了简单的介绍,为设计模式的提供了表达方式。本文 中的所有用到的设计模式都用了统一建模语言进行表达。 在应用方面,本文作者在对h t m l 语言详细分析的基础上,找出了h t m l 语言 的特点,并且根据这些特点进行了结构上的抽象,为设计模式的使用创造了条件。在 系统中使用了观察者模式、合成模式、简单工厂模式和单例模式。 关键词:软件模式,设计模式,可维护性,软件复用,设计原则 薹压盔皇堡主堂鱼堡奎 茎塞垫矍 a b s t r a c t i nt h es o f t w a r ee n g i n e e r f i e l d ,d e s i g n p a t t e r ni st h e h o t s p o td u r i n g t h er e c e n ty e a r s t h e p u b l i c a t i o no fg o f 、sd e s i g np a t t e r nb r i n gt h ei n t e r e s ta b o u tt h ed e s i g np a t t e r n s d e s i g np a t t e r n sh e l pp e o p l et o e x c e e dt h es i n g l e c o n c e p t i o nd e s i g n ,t og r a s pt h e i m p o r t a n t s t r u c t u r ea n de s t i m a t e s t r a t e g y a b o u tt h er e n o v a t i o nw i t ht h es u c c e s s f u l s o l u t i o n s o f t w a r ep a t t e r n sa r et h er u l e sf o r m e db yt h r e ep a r t s ,w h i c h e x p r e s st h e r e l a t i o n s h i pa m o n gs o m ek i n de n v i r o n m e n t , t h ep r e s s u r es y s t e mu n d e rt h a ta n dt h e s o i w a r ec o n f i g u r a t i o nt or e l e a s et h e p r e s s u r e p a t t e r ni sa i m e d a tt h e r e p e a t e dp r o b l e m s i ft h ep r o b l e mi ss i n g l e t h es o l u t i o no a nn o tb ea b s t r a c t e da sa p a t t e r n d e s i g np a t t e r n s c o m ef r o mt h es u c c e s s f u ls o l u t i o ne x p e r i e n c e d e s i g np a t t e r n sg r a s pt h es o u li nt h e s u c c e s s f i l ls o l u t i o n 。w h i c hd o e sn o ti n c l u d et h et e e h n i c a ld e t a i l s t h ea g i l eu s eo f d e s i g n p a t t e r n s c a i ls o l v et h e p r o b l e m w i t hs o f t w a r er e u s ea n dt h es o f t w a r e n l a i n t e n a n c e o r i e n t e d - o b j e c tt e c h n o l o g y h a db e e nm a d eu s eo fi nt h es o f t w a r ef i e l d ,b u tw h i c h s t i l lh a ds o m es h o r t a g ei nt h es y s t e mb u i l d i n gp r o c e s s t h i sa r t i c l ea n a l y z e dt h ec o a d m e a n sa n df o u n dan e ww a yt ob u i l ds o f t w a r es y s t e m ,w h i c hv i at h eu s eo fd e s i g n p a t t e r no nd i f f e r e n t1 e v e la n dc o m b i n a t i o no fp a t t e r na n ds o f t w a r er e q u i r e m e n tt o i n e e s s a n td e t a i lt h es o f t w a r ed e s i g n t h i sa r t i c l er e s e a r c h e dt h es o f t w a r er e u s ea n ds o f t w a r em a i n t e n a n c e s o f t w a r e s t r u c t u r eb e c a m em o r ea n dm o r ec o m p l i c a t e d d u r i n gt h ep r o c e s so fs y s t e mb u i l d i n g a n de v e na f t e rt h eb u i l d i n g ,t h er i g i d i t yo f t h es y s t e ms t r u c t u r em a d et h em a i n t e n a n c e m o r ed i f f i c u l t s o f t w a r er e u s ei sa n o t h e rh o t s p o ti ns o f t w a r ef i e l d d u r i n gt h ep r o c e s s o f u n i tb u i l d i n g t h er e l a t i o n s h i pa m o n g u n i t si st o om u c h w h e nw ew a n tt or e u s eau 1 】吨 w es h o u l d p r e p a r el o t so fp r e c o n d i t i o nf o rm e u n i tr e u s e t h i sa r t i c l eh o p et h a tt h eu s e o f d e s i g n p a t t e r nt ob u i l da na g i l es t r u c t u r ef o rs o f t w a r es y s t e m t h i sa r t i c l es i m p l yi n 仃o d u c e du n i f i e dm o d e ll a n g u a g et o o f f e ra ne x p r e s s i o n m e t h o df o rd e s i g no f p a t t e r n a l lt h ed e s i g n p a t t e r n si nt h i sa r t i c l ea r ee x p r e s s e db yt h e u n i f i e dm o d e ll a n g u a g e i nt h ea p p l i a n c ef i e l d ,t h ea u t h o ro f t h i sa r t i c l ea n a l y s i s t h es p e c i a l t y , a n dm a k eu s e o f t h es p e c i a l t yt oc r e a t et h ec o n d i t i o nf o rt h e u s eo f d e s i g np a t t e r n 。i nt h ep r o g r a m t h e a u t h o ra p p l yo b s e r v e rp a t t e r n ,c o m p o s i t ep a t t e m ,f a c t o r yp a t t e r na n ds i n g l e t o np a r e r n k e yw o r d s :s o f t w a r ep a a e r n d e s i g np a t t e r n ,m a i n t e n a n c e ,s o f b v v a r e r e u s e ,d e s i g n p r i n c i p l e i i 重庆大学硕士学位论文 l 引言 1 1 研究的学术和实用意义 软件作为一个抽象的产品,是系统的一个逻辑体现,而软件生产是一个高智 能的劳动过程,软件生产需要花费巨大的智力物力和财力。在2 0 世纪6 0 年代, 爆发了软件危机,而软件危机的实质就是软件的开发成本过高,软件的开发过程 难以进行控制,软件工作量难以准确地估计,开发出来的软件产品质量难以保证, 软件的维护和修改困难等。于是软件工程理论和实践被提了出来,软件工程的提 出是软件界向前发展迈出了关键性的步,尤其是经济学原理在软件工程中得到 越来越多的应用,刺激了软件方法学的研究和发展,以减少软件系统在开发,部 署和维护中的费用,提高软件的质量。 一 软件工程的最新发展是将制造工业中的产品线工程引了进来,形成了软件产 品线工程,软件产品线是降低软件费用,提高软件质量的一条最佳途径,它可以 实现软件生产的投资在多个软件系统中进行分摊,实现复用产品的产出经济最大 化,使各种资源,如系统的需求分析,软件的需求分析,整个系统软件的设计, 现有的软件组件,文档,测试策略与计划,测试案例与数据等。另外,项目人员 的知识与技能,软件过程方法,以及开发和进行系统的工具,计划安排与预算估 计等都可以在软件产品线中进行复用。 虽然从软件危机爆发以来,软件界一直在探索解决危机的方法与途径,但是 一直缺乏彻底的解决方法。软件的维护性和可复用性一直困扰着开发人员,尤其是 在在进行w e b 开发的时候,软件系统在需求上需要做出不断的修改才能适应最终的 委求,而且在软件的生命周期中,为了不断变化的实际需要,软件系统还必须进行修 改这就对软件的体系结构的灵活性有了更高的要求。 现在软件开发中,软件复用是一个必须面对的挑战,这种必须源于两个方面:成 本和质量。软件复用可以缩短软件系统的开发时间,从而减少成本;软件复用使用的 是经过验证的构件( 这里的构件是一个广泛的意义,不仅仅是指组件) ,从而使得系统 的质量得到提高。 软件复用方法虽然已经从代码的复用发展到软件方案复用( 包括数据结构与 算法的复用,框架的复用) ,但是复用的本质还是将已经存在的可复用单元( 代码, 组件或者结构) 插入到新的系统中去,然而随着软件的系统规模的扩大和复杂性的 增加,这就要求这些可复用单元可以灵活的插入到新系统中,对新系统的系统结构 和可复用单元都有了新的要求。 综上所述可维护性和复用性对软件的体系结构提出了更多的要求:系统必须容 重庆大学硕士学位论文 1 引言 易的进行扩展和修改,这种扩展要求对原系统的修改尽可能的小,而且不能破坏原 系统的体系结构;构成系统的构件必须在新的系统中得到快捷的应用,要求构件可 以单独的在新的系统中独立的进行插入。而解决以上问题的就是这几年在国外成 为热点的模式理论。模式理论在软件设计的不同层次上解决软件架构的问题,设计 模式表达的是一种或者一类设计策略,它在超越了算法层次上实现了系统设计策 略上的复用,可以帮助软件工程师实现对成功领域的解决方法的复用,帮助人们 更好的进行沟通,增强系统的灵活性和扩展性。 本文是在如下的背景下进行的: 1 ) 在课件转换项目中需要对h t m l 文件进行解析,由于h t m l 作为一 种网络语言,具有版本升级快的特点,所以对解析器的灵活性要求比较高,当 h t m l 版本发生改变时,希望通过对系统的最小修改来完成功能的增强。 2 1 该项目是作为国家科技部重点项目下的一个子项目,需要和其它的子项目 组进行沟通刊。能完成,由于不同的项目组来自于国内不同的大学,在地域上是分割 的,而且各个项目组之间仅仅是一种松散耦合的状态,在子项目组织之间交流存在 很大的问题,存在很多次的对系统结构的不断修改的需要。 由于设计模式是成功的软件实践的总结,是软件实践的抽象。设计模式研究的 最终目的是为了在软件分析和设计过程中得到应用,所以本文主要就是在h t m l 解析器的分析和设计中通过充分使用设计模式来提高软件体系的灵活性,为软件 复用奠定基础。并且通过对一些具体的设计模式在系统分析和设计过程中具体应 用来加深对设计模式的理解,探索进一步研究设计模式的技术和方法。 1 2 国内外研究现状 目前国内外研究最多的是设计模式和其他面向对象技术的关系,他们各自的优 劣和实用范围。目前人们还在总结各个不同领域的模式,以及让设计模式的使用 更加自动化。设计模式已经在多个领域的软件设计和构造,开发处理和组织中, 当代许多先进软件都大量采用了设计模式的概念a 国外从9 0 年代初就有人开始关注软件代码模式。 1 9 9 5 年,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 n ( 简称g o f ,四人帮) 合著的设计模式问世, 引起了国外软件工程界对软件模式的极大关注。此后,软件模式成了软件工程领 域中的热门研究课题。目前,国外软件工程界已把模式引入到软件生命周期的各 个过程中,如需求工程、软件过程、项目计划、开发组织等,其理论成果主要体 现在从1 9 9 4 年开始的程序设计模式语言( p a t t e r n l a n g u a g e o f p r o g r a m m i n g ,p l o p ) 年会论文集中。 国内对软件模式的研究与应用还处于起始状态,没有引起足够的关注。本文 重里奎兰堡主兰堡堡塞 ! ! ! 宣 作者分别以“软件模式”、“设计模式”、软件可维护性”、“软件复用,为关键字 就是希望本论能在这几个方面的联系上做一定的探讨。 1 - 3 研究目的 对设计模式的应用研究对计算机软件的发展具有重要的意义: 1 ) 促进软件生产的工程化:在其它的工程领域,都有相对较多基本结构体系, 有很详细操作手册,指出在什么时候应该使用什么样的结构体系,为什么要用, 以及如何使用。而在计算机软件工程领域数据结构和算法是很有的东西,但是回 答不了关于系统结构层次上的问题。设计模式就是为了在软件工程领域提供类似 于其他工程领域的操作手册,来告诉软件工程师在系统的设计过程中可以使用哪 些已有的成功的体系结构来解决目前项目中遇到的问题。 2 ) 提高软件质量:设计模式是成功经验的总结,是通过实践检验获得通过的实 施方法,代表了已有的优秀成果。而且这种优秀还体现在由于设计模式是经过对 很多设计方案的观察后进行抽象得出来的,相对于软件工程师在某个具体项目中 的具体解决方案,更为全面,具有更好的前瞻性。 3 ) 提高设计的效率:设计模式的目标是在软件工程领域建立,以帮助软件开发 工程师解决在软件开发的过程中遇到的困难和问题,模式显式的捕捉了经验丰富 的开发者在已经隐式知道的知识,为设计者提供了可复用的设计策略。学习设计 模式可以扩大设计者的视野,从而提高了软件设计的有效性。 4 ) 便于软件开发团体中成员之间的沟通:由于软件模式有明确的名称、环境, 以及相应的解决方案,并且都有相应的明确的含义,所以便于沟通与交流。模式 可提高对新手进行培训的效率,让新加入的队员尽快了解设计意图与策略。 以上所述研究与应用设计模式的意义也是本课题研究的意义。 将设计模式技术使用在语言的解析器中,由于h t m l 语言本身具有版本升级 快的特点,所以通过设计过程中使用设计模式来使h t m l 解析器的灵活性和复用 性得到提高。希望通过设计模式的具体应用来深入的体会设计模式在上述方面带 来的益处。 1 4 研究内容 1 ) 系统地理解软件模式,并在此基础之上,对软件模式中现存的问题提出自 己的看法与解决方案。寻找种具体的系统使用模式理论进行系统分析和设计的 方法。 2 ) 深入分析h t m l v e r s i o n4 的特点,找出与其他语言的不同之处,为设计模 式的使用建立基础。充分使用设计模式来达成对解析器的灵活性和复用性的提高。 重庆大学硕士学位论文 在系统的设计过程中具体使用:观察者模式,合成模式,简单工厂模式和单例模式。 1 5 论文结构 本文一共分为七章,第一章为引言,第二章简单介绍统一建模语言,第三章 介绍软件可维护性和软件复用性,第四章介绍面向对象以及面向对象设计中的设 计原则,第五章介绍模式理论相关概念,第六章介绍项目中设计模式的具体应用。第 七章对研究课题进行总结。 4 重庆大学硕士学位论文 2 统一建模语言 2 统一建模语言 2 1 来源 统一建模语言( u m l :u n i f i e dm o d e l i n gl a n g u a g e ) 也称作标准建模语言,是由 b o o t h ,j a c o b s o n 和r u m b a u g h 联合设汁的。该方法的目标如下: 1 ) 为用户提供一个易于使用的可视化建模语言: 2 ) 为o o 建模核心概念提供扩充和细化的机制; 3 ) 使设计独立于特定的建模语言和开发过程; 4 ) 为o o 设计模型提供一套正式的标准; 统一建模语言融合了b o o c h 、o m t 和o o s e 方法中的基本概念,而且这些基 本概念与其他面向对象技本中的基本概念大多相同,因而,u m l 必然成为这些方 法以及其他方法的使用者乐于采用的一种简单一致的建模语言;其次,u m l 不仅仅 是上述方法的简单汇合,而是在这些方法的基础上广泛征求意见,集众家之长, 几经修改而完成的,u m l 扩展了现有方法的应用范围;第三,u m l 是标准的建模 语言,而不是标准的开发过程。尽管u m l 的应用必然以系统的开发过程为背景, 但由于不同的组织和不同的应用领域,需要采取不同的开发过程。 2 2 u m l 的功能 在实际建立软件系统的过程中,u m l 语言具有以下重要的功能: 1 1 可视化功能:可视化可以促进对问题的理解和解决,并且方便熟悉u m l 的 设计师彼此之间相互交流和沟通。可以比较容易的发现设计草图中的逻辑错误,保 证最后完成的软件确实能按照要求运行,避免和减少意外。 2 1 说明功能:对一个系统的说明应当通过一种通用的、精确的、没有歧异的通 信机制进行,显然u m l 的特性使得u m l 很适合于这种说明工作。系统的整体设计 可以指导软件的开发过程。由于重要的决定均可以在开始写代码之前就做出,因此 可以提高代码的质量,进一步降低开发成本。 3 1 建造功能:u m l 有自己的语法规则,这使得人们可以使用建模工具软件对一 个系统设计模型加以解释,并将设计模型映射到一种编程语言上。这也就是说,使用 一种建模工具可以大大加快建模和系统设计的过程。通过u m l 可以看到总体的图 象,这样一来可以均衡调配系统所消耗的计算机资源,使系统更有效率。因为系统的 设计首先完成,所以很容易就能发现可以复用的代码。代码能够高效率的实现复用, 可以降低开发成本。 4 、建文档功能:使用u m l 进行设计可以同时产生系统设计文档。由于使用了 二里堕查鲎堡主兰垡笙奎 ! 竺二垄堡堡童 u m l 进行设计的软件系统在写出代码之前就有了专业化的设计和文当,所以程序 员事先精确的知道他们的计划是什么。当需要修改一个已有的系统时,如果能找到 那个系统的u m l 资料,则会节约学习时间,使修改工作事半功倍。这样可以降低维 护的成本。如果在项目进行过程中,有新的程序员加入项目的话,这些程序员可以借 助u m l 图形文档资料很快熟悉开发中的系统。 2 _ 3 内容 作为一种建模语言,u m l 的定义包括u m l 语义和u m l 表示法两个部分: 1 ) u m l 语义:描述基于u m l 的精确元模型定义。元模型为u m l 的所有元 素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上 取得一致,消除了因人而异的最佳表达方法所造成的影响。此外u m l 还支持对元 模型的扩展定义。 2 1u m l 表示法:定义u m l 符号的表示法,为开发者或开发工具使用这些图 形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用 级的模型,在语义上它是u m l 元模型的实例。 建模语言u m l 的重要内客可以由下列五类图( 共9 种图形) 来定义: - 第一类是用例图( u s e rc a s ed i a g r a m ) ,从用户角度描述系统功能,并指出各 功能操作者。 - 第二类是静态图( s t a t i cd i a g r a m ) ,包括类图、对象图和包图。其中类图描述系 统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚 合等,也包括类的内部结构( 类的属性和操作) 。类图描述的是一种静态关系, 在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全 相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。 一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统 某一时间段存在。包由包或类组成,表示包与包之间的关系。包图用于描述系统 的分层结构。 第三类是行为 ( b e h a v i o rd i a g r a m ) ,描述系统的动态模型和组成对象间的交 互关系。其中状态图描述类的对象所有可能的状态以及事件发主时状态的转移条 件。通常,状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅 为那些有多个状态其行为受外界环境的影响并且发主改变的类画状态图a 而活动 图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活 动。 第四类是交互图( i n t e r a c t i v ed i a g r a m ) ,描述对象间的交互关系。其中顺序 图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对 6 量j ! i ! 堂堕圭堂垡笙塞 ! 竺二垄堡里童 象之间的交互;合作图描述对象间的协作关系,合作图跟顺序图相似,显示对象 间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。 如果强调时间和顾序,则使用顺序图;如果强调上下级关系,则选择合作图。这 两种图合称为交互图。 。第五类是实现图( i m p l e m e n td i a g r a m ) ,其中构件图描述代码部件的物理结 构及各部件之间的依赖关系。一个部件可能是一个源代码部件、一个二进制部件 或一个可执行部件。它包含逻辑类或实现类的有关信息。部件图有助于分析和理 解部件之间的相互影晌程度。 配置图定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备 节点以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。在节 点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应类素。显然 要描述一个设计模式的特征,使用类图和时序图就很合适。所以下面我们介绍类图 和时序图。 类图:显示出类,接1 1 1 以及他们之间静态结构和关系的图。类图的最基本元素是 类或接口。 描述类的类图:下图所示就是一个类: 图2 1 类的类图 f i g u r e 2 。1c l a s sd i a g r a m o f c t a s s 在上面的类图中可以看出,表示类的框分为了几层 1 ) 类名; 2 ) 属性清单; 3 1 方法清单; 在类的类图中,除了类名层不能省略,必须显示的以外,其他的凡层都可以在类 图中省略。第一层是类名,类名如果是正体字,表明类是具体的,如果是斜体字,表明 类是抽象的。第二层是属性层,一个属性可以是p u b l i c ,p r i v a t e 或者p r o t e c t e d a 一个 属性左面如果什么都没有,表示是p u b l i c ,如果是一个锁图形表示是p r i v a t e ,如果是钥 旦 一 帅 产署一 型州。m一旧卧一吲袖m一啪眦茹黜丽 重庆大学硕士学位论文 2 统一建模语言 匙表示是p r o t e c t e d 。第三层是方法层,一个方法层的左面如果什么都没有,表示是 p u b l i c ,如果是一个锁图形表示是p f i v a t e ,如果是钥匙表示是p r o t e c t e d 。 接口的类图基本上和类图几乎一模一样,唯一地区别是接口的名有i n t e r f a c e 的 字样。一个接口一般不会有有性质,可以有方法的申明,p u b l i c 和f i n a l 静态内部变量 类。 类图中的关系: 类与类之间会有连线指明他们之间的关系。类和类,类和接口,接口和接口之间 可以建立以下几种关系: 一般化关系:表示类和类之问的继承关系,接口与接口之间的继承关系,或者类对接 口的继承关系。一般化的关系是从子类指向父类的,或者从实现接口的类指向被实 现的接口,与继承或实现的方向相反。如下图所示: l f a t h er l ls u n l 图2 , 2 继承关系 f i g u r e 2 2t h eh e r i t a g er e l a t i o n s h i p 关联关系:表示类与类之间的连接,它使一个类知道另一个类的属性和方法。关 联可以是双向的也可以是单向的。双向的关联可以有两个箭头或者没有箭头。单 向的关联有一个箭头,表示关联的方向。如下图所示: 匡芏 图2 3 关联关系 f i g u r e 2 3t h ea s o c i a t i o nr e l a t i o n s h i p 重庆大学硕二 :学位论文2 统一建模语言 聚合关系:关联关系的一种,。是强的关联关系。聚合是整体和个体之间的关系。 如下图所示: 图2 4 聚合关系 f i g r e 2 4t h ea g g r e g a t i o nr e l a t i o n s h i p 合成关系:关联关系的一种,是比聚合关系强的关系。要求普通的聚合关系中代 表整体的对象负责代表部分的对象的生命周期,合成关系是不能共享的。代表整体 的对象需要负责部分对象的存活,在一些情况下负责将代表部分的对象湮灭掉。代 表整体的对象可以代表部分的对象传递给另一个对象,由后者负责此对象的生命周 期。 依赖关系:也是类与类之间的连接,依赖关系是单向的。表示一个类依赖于另一 个类的定义。 匪亟丑 r i 1一 图2 5 依赖关系 f i g r e2 5t h ed e p e n d e n c yr e l a f i o n s h i p 9 目留 重燮型堂垡堡奎 ! 篓二堡堡至宣 时序图: 时序图也叫作序列图,活动序列图。作为交互图的一种。序列交互图按照时间 顺序从上相下显示每个使用案例。在时序图中,垂直的虚线叫做生命线,它代表一个 对象存在的时间。每一个箭头都是一个调用,每个箭头聪调用者对象连接到接受者 对象的生命线上的激活条。每一个激活条代表调用持续的时间。下图显示一个银 行客户在a t m 机器上查询帐号信息的时序图: l 鋈圭也: ii 盟嗵羼矗;iii g m 的帐主:l 1 c a r d r e a d e r li 虹m s 鳇ll 工q :g q u 刮 读卡 提示选择事务 厂1 图2 6 时序图 f i g u r e2 6s e q u e n c ed i a g r a m 2 4 小结 从应用的角度看,当采用面向对象技术设计系统时,首先是描述需求;其次 根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统的行为。 其中在第一步与第二步中所建立的模型都是静态的,包括用例图、类图、包、对 象图、组件图和配置图等五类图形,是统一建模语言u m l 的静态建模机制。其 中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关 系。它包括状态图、活动图、顺序图和合作图等四个图形,是统一建模语言u m l 的动态建模机制。因此,统一建模语言u m l 的主要内容也可以归纳为静态建模 1 0 关一 重庆大学硕士学位论文 2 统一建模语言 机制和动态建模机制两大类。统一建模语言u m l 的主要特点可以归结为三点: 1 ) u m l 统一了b o o c h 、o m t 和o o s e 等方法中的基本概念。 2 1u m l 还吸取了面向对象技术领域中其他流派的长处,其中也包括非o o 方法的影响。u m l 符号表示考虑了各种方法的图形表示,删掉了大量易引起混乱 的、多余的和极少使用的符号,也添加了一些新符号。因此,在u m l 中汇入了 面向对象领域中很多人的思想。这些思想并不是u m l 的开发者们发明的,而是 开发者们依据最优秀的0 0 方法和丰富的计算机科学实践经验综合提炼而成的。 3 1u m l 在演变过程中还提出了一些新的概念。在u m l 标准中新加了模板 ( s t e r e ot y p e ) ,职责( r e s p o n s i b i l i t y ) ,扩展机制( e x t e n s i b i l i t ym e c h a n i s m s ) ,线程 ( t h r e a d ) ,分布式( d i r 砸b u t i o n ) , 过程( p r o c e s s ) ,并发( c o n c u r r e n c y ) ,模式( p a t t e r n ) ,合作 ( c o l l a b o r a t i o n ) ,活动图( a c t i v i t yd i a g r a m ) 等新概念a 垩塑型塑塑生生塑堡塞 i 鏊堡墨旦竺塑丝塑些 3 软件的维护性和复用性 3 1 软件的特点及技术发展 软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及 其说明文档。其中程序是按照事先设计的功能和性能要求执行的指令序列;数据 是程序能正常操纵信息的数据结构;文档是与程序开发维护和使用有关的各种图 文资料。软件同传统的工业产品相比有其独特的特性: 1 ) 软件是一种逻辑实体,具有抽象性。这个特点使它与其它工程对象有着明 显的差异。人们可以把它记录在纸上、内存、磁盘、光盘上,但却无法看到软件 本身的形态,必须通过观察、分析、思考、判断,才能了解它的功能、性能等特 性。 2 ) 软件没有明显的制造过程。一旦研制开发成功,就可以大量拷贝同一内容 的副本。所以对软件的质量控制,必须着重在软件开发方面下工夫。 3 1 软件在使用过程中,没有磨损、老化的问题。软件在生存周期后期不会因 为磨损而老化,但会为了适应硬件、环境以及需求的变化而进行修改,而这些修 改有不可避兔的引入错误,导致软件失效率升高,从而使得软件迟化。当修改的 成本变得难以接受时,软件就被抛弃。 4 1 软件对硬件和环境有着不同程度的依赖性,这导致了软件移植的问题。 5 ) 软件的开发至今尚未完全摆脱手工作坊的开发方式,生产效率低。 6 1 软件是复杂的,而且以后会更加复杂软件是人类有史以来生产的复杂度 最高的工业产品之一。软件涉及人类社会的各行各业、方方面面,软件开发常常 涉及其它领域的专门知识,这对软件工程师提出了很高的要求。 7 ) 软件的成本相当昂贵。软件开发需要投入大量、高强度的脑力劳动,成本 非常高,风险也大。现在软件的开销己大大超过了硬件的开销。 8 1 软件工作牵涉到很多社会因素。许多软件的开发和运行涉及机构、体制和 管理方式等间题,还会涉及到人们的观念和心理。这些人的因素,常常成为软件 开发的困难所在,直接影响到项目的成败。 随着软件需求量的快速增长,由于软件本身所具有的这些特点,加之软件开 发和维护方法的不当,导致了六十年代的“软件危机”。软件开发和维护的方法不当 主要表现为忽视软件开发前期的需求分析;开发过程没有统一的、规范的方法论 的指导,文档资料不齐全,忽视人与人的交流;忽视测试阶段的工作,提交用户 的软件质量差;轻视软件的维护。这些大多数都是软件开发过程管理上的原因。 软件危机主要表现在以下几个方面: 至璺型苎堑堂垡堡壅 ! 墼堡墨旦竺塑丝芝丝 1 ) 对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度 一再拖延的现象并不罕见: 2 ) 用户对“已完成”系统不满意的现象经常发生: 3 ) 软件产品的质量往往靠不住: 4 ) 软件的可维护程度非常之低: 5 ) 软件通常没有适当的文档资料: 6 ) 软件的成本不断提高; 7 ) 软件开发生产率的提高赶不上硬件的发展和人们需求的增长: 3 2 软件的维护性 通常认为,一个易于维护的系统,就是复用率高的系统;而一个复用率高的 系统,就是一个易于维护的系统。但实际上,可维护性和可复用性是两个互相独 立的目标,就像两只奔跑的兔子,方向总是不一致。 在面向对象的软件系统设计来说,在支持可维护性的同时,提高系统的可复 用性是一个核心的问题。一个软件业者必须认识到,软件的维护就是软件的再生。 一个好的软件设计,必须能够允许新的设计要求以较为容易的方式平稳的加入到 已有的系统中去,从而使系统不断的焕发出青春。一个可维护性好的系统,应当 允许维护工作能够以容易,准确,安全和经济的形式进行。但是现有的软件系统 往往不具有这样的特性。 3 2 1 软件生命周期 一个软件项目开始了,系统设计师拿到了系统的设计要求,这个设计要求可 能包含一系列正规的文档或是一些简单的口头描述文稿。现在系统设计师开始进 行系统的设计,这是系统的设计方案应该是一个完美的系统,系统的设计首先出 现在设计师头脑之中,然后通过设计软件落实在设计图纸上,接着变成为个原 型系统,最后变成为一个真实的,可以交付客户的产品。 一切都在正常的进行,但是随着系统的使用,客户会根据正在运行中的系统, 提出一些小小的修改要求,这些修改要求都是用户在提出系统的设计要求时忽略 或者忘记的。设计师在经过讨论后,对原有的系统设计方案进行了一定的修改。 由于这些修改与现有的系统的设计并不一定相容,所以系统的设计师只能为了达 到用户的功能修改要求而采取一些权宜之计,但是随着时间的流失,会有越来越多 的修改因为客户的要求而产生,这些系统上的缺陷逐步积累,最后成为了系统的 肿瘤,原有的设计方案,代码日益“腐烂”,最后再也没有人愿意去修改和维护它。 这样做的后果是导致在抱怨了系统的维护费用昂贵之后,客户投入新的资金,来 进行系统的开发,但是这只不过是刚才讲过的恶性循环的另外一个周期而已。面 对客户的抱怨,系统设计师总是辩解:客户要求的变化无常,使得系统的设计无 重盎奎兰堡主堂垡堡奎 ! 堑生塞旦丝塑丝塑些 法跟上如此快速的变化。如果维护设计师与原有的不是同一组人的话,还会有很 多与技术无关的辩解出来。 按照这样的逻辑,一个系统的原始设计不可能预测系统的性能要求会发生什 么样的改变,这就导致一个系统的设计无法与新的要求相容。这样以来,即便新 的性能可以添加到系统中去,但是却不得不以某种破坏原是设计意图和框架的方 式加入进去。 在很多的情况下,系统的维护设计师并不是系统的原始设计师。这样一来, 这个维护设计师并不熟悉原始设计师的设计意图,而系统的设计也不会帮助维护 设计师理解这些。因此,即便原始设计的意图和框架可以容纳新的性能,维护设 计师也可能将某种破坏原始设计意图和框架的方式将新的性能加入进去。由于这 些改动是日积月累的方式进行的,因此维护设计师无法形成自己的设计意图和新 的设计框架,所以这些破坏都不会带来新的设计意图和框架的建设,而只能是一 些东拼西凑的权宣之计。这样的破坏式增强功能越来越多,以至于后来原始的设 计意图和框架已经被彻底被这些没有总体考虑和固定规律的东西取代,系统就腐 烂了。 3 2 2 真正的原因 过于僵硬:很难在一个系统中加入新的功能,即使是很小的功能。这是因为 加入一个新的功能。不仅意味着建造一个新的功能模块,而且因为这个新的功能 会波及其它很多的功能模块,最后跨越几个模块的功能改动。使得一个起初只要 几天时间就可以完成的工作,最后演变成持续两个月的连续作战。由于这种设计 上的缺陷,使得项目经理不敢轻易向系统增加新的功能。这就造成了软件一旦完 成,就很难增加新的功能的僵硬化情况。 过于脆弱:于软件僵硬同时存在的,是软件系统在修改已有的代码的是过于 脆弱。对于一个地方的修改,往往会导致看上去没有什么关系的地方也发生故障。 尽管在修改以前,设计师会尽量预测可能出现故障的地方,但是在修改完成以前, 系统的原始设计师们甚至都无法预测到可能波及到的地方。 复用率低:每当程序员发现已有的代码可以在新的函数,模块或者予系统中 进行重新使用时,也总是会发现,这些已有的代码依赖于一大堆其他的东西,以 至于很难将他们分开。最后的结果就是,不去碰这些已有的东西,而是重新编写 自己的代码,这样系统的复用效率就会很低。 黏度过高:有的时候,一个改动可以以保存原始设计意图和原是设计框架的 方式进行,也可以以破坏原是意图和框架的方式进行。第一种方法无疑会对系统 的未来有利,第二种方法是权宜之计,可以解决短期的问题,但是会牺牲长期的 利益。如果第二种方法比第一钟方法要容易很多的话,程序员就可能牺牲长期利 1 4 重j 堂堡主堂垡笙壅 ! 竺堡壅旦生塑丝萱堡 益,在模块之间搭建一座短路桥,以便解决眼前的问题。一个系统如果总是使用 第二种方法比第一种方法容易,就叫作黏度过高。一个黏度过高的系统会引诱维 护设计师采取错误的维护方案。 3 2 3 设计的目标 可扩展性:新的功能可以很容易的加入到系统中去,就是可扩展性。从而解 决系统设计过于僵化的问题。 灵活性:允许代码的修改可以平稳的发生,而不会波及到很多其他的地方, 这就是灵活性。从而解决系统过于脆弱的问题。 可插入性:可以很容易的将个类抽出去,同时将另一个又同样接口的类加 入进来。这就是可插入性。从而解决系统黏度过高的问题。 3 3 软件的复用性 3 3 1 软件复用的定义 软件复用是一种由预先定义好的,为复用目的而设计的软件构件来建立或者 组装软件系统的过程。软件复用的基本思想非常简单,即放弃那种原始的,一切 从头开始的软件开发方式,而利用复用,由公共的可复用构件来组装新的系统。 随着软件理论与技术的发展,软件复用的内容也发生了巨大的改变,软件复用方 法已经从代码的复用发展到软件方案复用( 包括数据结构与算法的复用,框架的 复用) ,尤其是软件产品线的提出对软件复用技术有了新的要求。 3 3 2 软件复用的意义 软件对现代世界运作的介入越来越深,越来越多的公司依赖于关键业务信息 系统,以在这个从未有过的复杂和全球化的业务环境中,管理与客户的沟通,缩 短产品投放市场的周期,管理财务,公司常常还要在快速的引入创新服务方面展 开竞争。 在所有的这些情况下,企业想要获得成功,就意味着企业建立在软件之上的 产品和服务必须使自己的软件产品“更快,更好,更便宜”。 更快:软件必须满足市场的时间需求,具有竞争力的机构要制定时间目标。 更好:软件必须满足其所支持的过程的要求,必须能够对过程提供支持,且故 障很少。 更便宜:生产和维护的成本必须较低。 要达到以上的这些目标要求,只有两个方法可供选择:更有效的软件生产,软件 复用。让我们观察一下周围的计算机系统就会得出以下的结论: 1 1 少数系统是全新的,大多数系统是已有系统的变种。 2 ) 重复或者部分重复构建一个同样的系统花费是非常昂贵的,这是工程领域 重壁奎兰堡主兰篁笙奎 ! 堑堂堡旦堡塑丝芏竺 普遍存在的问题,但在软件工程领域更加突出。 3 ) 解决新问题的的方法通常有多种,但是他们可能只是能提供系统的一个部 分好的解决的方法。 通过以上的分析,得出软件生产过程中存

温馨提示

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

评论

0/150

提交评论