欢迎来到163文库! | 帮助中心 精品课件PPT、教案、教学设计、试题试卷、教学素材分享与下载!
163文库
全部分类
  • 办公、行业>
  • 幼教>
  • 小学>
  • 初中>
  • 高中>
  • 中职>
  • 大学>
  • 各类题库>
  • ImageVerifierCode 换一换
    首页 163文库 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    《软件工程——理论、方法与实践》课件第9章.ppt

    • 文档编号:7924391       资源大小:424KB        全文页数:60页
    • 资源格式: PPT        下载积分:15文币     交易提醒:下载本文档,15文币将自动转入上传用户(momomo)的账号。
    微信登录下载
    快捷注册下载 游客一键下载
    账号登录下载
    二维码
    微信扫一扫登录
    下载资源需要15文币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    优惠套餐(点此详情)
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、试题类文档,标题没说有答案的,则无答案。带答案试题资料的主观题可能无答案。PPT文档的音视频可能无法播放。请谨慎下单,否则不予退换。
    3、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者搜狗浏览器、谷歌浏览器下载即可。。

    《软件工程——理论、方法与实践》课件第9章.ppt

    1、1 1第9章 面向复用的设计第9章 面向复用的设计9.1 软件复用的概念9.2 基于组件的开发9.3 设计模式本章小结习题2 2第9章 面向复用的设计9.1 软件复用的概念我们可以把复用分为两类形式:组件复用和概念复用。3 3第9章 面向复用的设计表9.1中所列的方法的使用取决于所要开发系统的需求,可复用技术和组件的有效性以及开发团队的经验。总的来说,进行软件复用时应考虑以下因素:(1)软件开发的进度。如果系统要求的进度较紧,复用时应采用大粒度组件的复用,尽量选择买来即可用(Off-the-shelf)的复用组件而不是采用独立(Individual)的复用组件。这样可以最大限度地减少开发工作量

    2、和风险。(2)期望的软件生命周期。如果系统要求生命周期长,则应关注系统的可维护性,复用时应考虑代码开源和具有稳定生命力的软件供应商。4 4第9章 面向复用的设计5 5第9章 面向复用的设计(3)开发团队的技能和经验。复用技术通常比较复杂,要花费较大的代价理解和有效地应用。因此有经验的团队十分必要。(4)软件和其非功能性需求的重要程度。对于关键的系统,通常需要更高的可依赖性和性能,因此这类系统通常不赞成用生成器方法,那样会生成一些无效的代码。(5)应用域。有些应用域有着成熟的复用产品,比如制造业,只需配置这些产品来完成相应的需求。(6)系统运行的平台。一些复用组件适用于特定平台,如COM/Act

    3、ive X是Microsoft平台的产品,因此需要根据平台选择复用组件。6 6第9章 面向复用的设计9.2 基于组件的开发基于组件的软件工程是20世纪90年代后软件复用的重要方法,随着软件系统规模越来越大,复杂性也越来越高,虽然对象的封装特性可以完成一定程度上的复用,但由于对象类粒度过细,通常在编译时与具体的应用程序要进行绑定,因此需要对其有详细的了解方可使用,这样增加了复用的难度,使得单个的对象类组件没有市场化的价值。7 7第9章 面向复用的设计9.2.1 组件组件的特性主要包括:(1)规范性和通用性。(2)完整性和独立性。(3)可组合性。(4)可实施性。(5)灵活性。(6)文档特性。8 8

    4、第9章 面向复用的设计9.2.2 组件模型一个组件模型是有关组件实现、文档构建和组件部署(Deployment)等标准的定义。这些标准对组件开发者来说是保证组件互操作性的重要部分。典型的组件模型包括OMG的CORBA、Sun公司的EJB(Enterprise Java Bean)模型和Microsoft的COM+模型。图9.1是Ian Somerville总结出的基本的组件模型,主要包括接口元素、在程序中使用组件的相关信息以及与组件实施相关的元素。9 9第9章 面向复用的设计图9.1 基本的组件模型1010第9章 面向复用的设计9.2.3 中间件中间件是一种类型的组件,在系统中通用的接口起到连

    5、接上层系统和下层系统的作用,故名中间件,如图9.2所示。中间件可以屏蔽下层异构、异质、分布式的环境,为上层系统提供统一的、透明的、简化的平台接口,以便于快速、方便地构造系统,是一种应用范围广泛的可复用技术。中间件主要分为过程中间件、对象中间件、事务中间件和消息中间件等几种类型。1111第9章 面向复用的设计图9.2 中间件的作用1212第9章 面向复用的设计9.2.4 基于组件的软件工程过程基于组件的软件工程过程和其他的软件过程有一定的区别,主要包括需求定义、组件分析、需求的修正、基于复用的系统设计、组件集成等活动。基于组件的软件工程过程如图9.3所示。1313第9章 面向复用的设计图9.3

    6、基于组件的软件工程过程1414第9章 面向复用的设计(1)需求定义:初始的需求定义无须太详细。(2)组件分析:选择可信的组件库搜寻符合需求或接近需求的组件。(3)需求的修正:需求在过程早期可能因组件是否与需求吻合而做一定范围内的修改,这是由于组件是封装的成熟产品,不能更改,如果组件能满足需求的主体,而需求的定义有一定的柔性,适当修改需求以适应组件也是基于组件开发的重要环节。(4)基于复用的系统设计:在决定了所用的组件后,应根据组件和需求确定系统的体系结构,完成系统的设计。(5)组件集成:组件集成是组装组件构建系统的过程。1515第9章 面向复用的设计9.2.5 企业应用系统集成(EAI)企业应

    7、用系统集成是一种对已有老(遗产)系统的复用技术。一个企业、机构的软件系统可能是其发展过程中不同阶段、不同需求的若干个相对独立的子系统,它们可能运行在不同的平台上,使用不同类型的数据库,有着不同的数据访问方式,同样的数据却存在着多个版本。1616第9章 面向复用的设计用户界面集成是一种最简单的集成,仅为已有系统通过集成的方式构建新的用户界面,如图9.4所示。已有的老系统在不改变其原有业务逻辑和表示逻辑的基础上,为系统建立新的、公共的用户界面。Web浏览器模式、Windows的GUI都是常用的统一界面风格。用户界面的集成是低风险和低代价的,技术成熟且容易达到目标。但仅仅实现了统一用户界面,并非是系

    8、统的实质性整合。1717第9章 面向复用的设计图9.4 用户界面集成1818第9章 面向复用的设计数据集成则是完成若干个应用系统之间数据的统一存储、管理和访问机制的集成。数据集成分析来自多个数据源的数据,形成统一的数据存储访问策略,如图9.5所示。数据集成可以通过数据访问中间件或一些工具来完成,如ODBC(Open Database Connectivity)、JDBC、数据仓库工具ETL(Extract,Transform and Load)。1919第9章 面向复用的设计图9.5 数据集成2020第9章 面向复用的设计功能集成则建立应用系统之间功能的相互调用。功能集成通常使用分布式处理中间

    9、件完成各个系统业务逻辑的集成,如图9.6所示。分布式处理中间件可以提供软件系统组件之间的对象请求和消息通信,用于集成的中间件主要包括消息中间件MOM(Message Oriented Middleware)、分布式对象中间件DOT(Distributed Object Technology)和事务处理中间件TPMs(Transaction Processing Monitors)。2121第9章 面向复用的设计图9.6 功能集成2222第9章 面向复用的设计功能集成是最具鲁棒性的集成,是企业应用系统真正的代码复用,是企业应用系统的真正解决方案。但功能集成是三种集成方式中最复杂、代价最高的。表9

    10、.2列出了Sun公司提供构建和集成企业应用系统的组件和软件技术。2323第9章 面向复用的设计2424第9章 面向复用的设计9.3 设 计 模 式9.3.1 设计模式概念设计模式主要支持面向对象的复用,模式经常依赖于对象的继承、多态等特征。Gamma等四人的设计模式一书第一次将设计模式提升到理论高度,并将之规范化。书中提出了23种基本设计模式,自此,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现。Gamma等人定义了设计模式的四个基本元素:模式名称(Pattern Name)、问题域(Problem)、解决方案(Solution)以及效果(Consequence)。2525第9章

    11、 面向复用的设计设计模式在粒度和抽象层次上各不相同,根据其使用目的,设计模式可以分成三类:创建模式、结构模式和行为模式。创建模式与类和对象的创建有关;结构模式处理类和对象的组合;行为模式描述类或对象间的交互和职责分配,关注对象间如何协作完成工作。根据其作用于类或对象,设计模式又分为类模式和对象模式。类模式主要是指处理类之间关系的模式。表9.3列出了23种经典的设计模式,表9.4则给出了这些模式的分类情况。2626第9章 面向复用的设计2727第9章 面向复用的设计2828第9章 面向复用的设计2929第9章 面向复用的设计9.3.2 Composite模式一种好的解决方案是定义一个抽象类Gra

    12、phic,如图9.7所示,它既可以代表图元类也可以表示容器类。Graphic类定义了基本图形和组合图形类一般都具有的通用操作接口draw()、add()、remove()等,也定义了组合图形类特有的操作getChild()。Graphic的子类Line、Rectangle、Text是具体实现图元的类,而Picture子类则定义了一个组合图形类的具体实现,它是图形对象的聚合。Picture的接口和Graphic的接口是一致的,从图9.8可以看出Picture对象可以递归组合其他Picture对象。3030第9章 面向复用的设计图9.7 Composite模式示例3131第9章 面向复用的设计图9

    13、.8 一个Picture对象的组成3232第9章 面向复用的设计Composite模式适用于以下两种情况:(1)表示对象的整体-部分层次结构。(2)希望可以忽略组合对象和单个对象的不同。Composite模式的结构如图9.9所示。模式中的元素(参与者)包括:Component:部件抽象类,定义了通用的部件操作接口,例如Graphic。Leaf:基本的部件实现类,对应于图形编辑器中的基本图元,如Line、Rectangle等。Composite:复合部件实现类,由若干Leaf和Composite聚合而成,例如Picture。Client:使用Component接口操纵部件的对象。3333第9章

    14、面向复用的设计图9.9 Compostite模式结构图3434第9章 面向复用的设计例如,一个GUI系统的窗口对象既可以包含按钮、文本框、复选框等各类GUI组件(Widgets)的窗口对象,也可以包含Widget容器(Widget容器包含其他的Widget组件)。如果需要刷新窗口,那么对于不同的Widget组件,如何来设计刷新方法呢?一种方案是使用更新方法update()对每一个组件进行更新,如下列代码所示:3535第9章 面向复用的设计public class Window Button buttons;Menu menus;TextArea textAreas;WidgetContaine

    15、r containers;public void update()if(buttons!=null)for(int k=0;k buttons.length;k+)buttonsk.draw();3636第9章 面向复用的设计 if(menus!=null)for(int k=0;k menus.length;k+)menusk.refresh();if(containers!=null)for(int k=0;k containers.length;k+)containersk.updateWidgets();3737第9章 面向复用的设计显然,采用这种方案,如果需要增加一种新的窗口组件,则

    16、必须重写update()。一种好的方案是复用Composite设计模式。将Button、Menu等组件和窗口对象等设计为图9.10所示的结构关系。3838第9章 面向复用的设计图9.10 复用Composite模式结构图3939第9章 面向复用的设计则update()方法代码可简化为:public class Window Component components;public void update()if(components!=null)for(int k=0;k components.length;k+)componentsk.update();4040第9章 面向复用的设计为Java

    17、程序提供图形用户接口的Java图形和用户界面器件工具包awt即采用了Composite模式思想。图9.11为Java的awt包内组件设计示意图。4141第9章 面向复用的设计图9.11 java.awt包的结构4242第9章 面向复用的设计9.3.3 Abstract Factory模式在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。Abstract Factory模式可以绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧密耦合。该模式提供一个创建一系列相关或相互依赖对象的

    18、接口,且无需指定它们具体的类。Abstract Factory模式的目的是用于封装具体的平台,从而使应用程序可以在不同的平台上运行。4343第9章 面向复用的设计先考虑一下这种情况,如果需要设计出一个可支持多种所见即所得(look-and-feel)标准的用户界面工具包,如Motif标准和Presentation标准。不同的标准使得用户界面在滚动条、窗口、按钮等界面组件呈现不同的风格。在设计和实现中不应直接对一个界面组件类硬性指定其风格,这样在实例化处理中很难改变风格。为了解决这个问题,可以定义一个抽象的WidgetFactory类,这个类声明了一个用于创建标准窗口组件的接口。每一种标准窗口组

    19、件都有一个抽象类,而这种标准风格的窗口组件的具体实现则是由具体的实现子类来定义,如图9.12所示。4444第9章 面向复用的设计图9.12 Abstract Factory模式示例4545第9章 面向复用的设计Abstract Factory模式适用于以下一些情况:(1)一个系统要独立于它的产品的创建、组合和表示。(2)一个系统要由多个产品系列中的一个来配置。(3)要强调一系列相关的产品对象的设计以便进行组合使用。(4)提供一个产品库,但只想给出它们的接口而不是实现。4646第9章 面向复用的设计Abstract Factory模式的结构如图9.13所示。模式中的元素(参与者)包括:Abstr

    20、actFactory:定义创建抽象产品对象的操作接口,如WidgetFactory。ConcreteFactory:实现创建具体产品对象的操作,如MotifWidgetFactory、PMWidgetFactory。AbstractProduct:为一种产品定义一个接口,如Window、ScrollBar。Concrete Product:定义由ConcreteFactory创建的具体产品,如Motifindow、PMWScrollBar。Client:仅使用AbstractFactory、AbstractProduct的接口引用对象的程序。4747第9章 面向复用的设计图9.13 Abstr

    21、act Factory模式4848第9章 面向复用的设计例如,Java awt使用Abstract Factory模式为特定平台生成所需要的最终组件:public class List extends Component implements ItemSelectable .peer=getToolkit().createList(this);.public Toolkit getToolkit()/if we already have a peer,return its Toolkit ComponentPeer peer=this.peer;4949第9章 面向复用的设计 if(peer!

    22、=null)&!(peer instanceofjava.awt.peer.LightweightPeer)return peer.getToolkit();/if we are already in a container,return its Toolkit.Container parent=this.parent;if(parent!=null)return parent.getToolkit();return Toolkit.getDefaultToolkit();5050第9章 面向复用的设计9.3.4 Chain of Responsibility模式 Chain of Respo

    23、nsibility模式是一种行为模式,它将若干个对象请求的响应者组成一个链,沿该链传送对象的请求。假设要解决图形用户界面中的帮助问题,这种情况要求在界面上任何一处的点击都应该得到依赖于点击位置上下文的帮助信息,问题是帮助请求者并不能准确确定谁是最终提供帮助者。图9.14提供了链式请求的传递示意。5151第9章 面向复用的设计图9.14 链式请求的传递5252第9章 面向复用的设计 图中的箭头方向代表了请求的传送方向,每个对象收到请求后根据当前的请求上下文确定是否要响应处理该请求,若不处理则转交给链上的下一个对象。一般来说,处于链的前端(优先响应)的对象处理响应更有针对性,越往后递交请求,处理则

    24、越具一般性。如对界面一个部位点击帮助,而点击所处位置既非按钮也非对话框,则转交给对一般程序的帮助处理。在这种方案中,最终的处理者是一个隐式响应者(Implicit receiver)。链上的每一个对象都有一致的处理请求和访问后继者的接口。图9.15说明了这种解决方案。5353第9章 面向复用的设计图9.15 链式响应模式应用5454第9章 面向复用的设计 Chain of Responsibility模式适用于以下情况:(1)有多个对象可以处理一个请求,运行时才确定请求的处理者。(2)在不明确请求响应者的情况下,向多个对象中的一个提交请求。(3)可处理请求的对象集合需要动态指定。5555第9章

    25、 面向复用的设计Chain of Responsibility模式的通用结构如图9.16所示。模式中的元素(参与者)包括:Handler:抽象的请求处理类,定义了处理请求的接口。ConcreteHandler:请求处理的具体实现类,负责处理请求或转发请求给其后继。Client:向链提交请求的对象。5656第9章 面向复用的设计图9.16 Chain of Responsibility模式5757第9章 面向复用的设计本 章 小 结软件复用是软件工程的重要思想之一,软件复用主要分为组件复用和概念复用。组件复用即最大限度地利用已有的软件组件进行开发。概念复用是指对软件方法、模式的抽象的复用,概念复

    26、用通过将方法和模式具体化来适应需求。5858第9章 面向复用的设计组件是计算机软件中一个模块化的构造块,是一种独立的软件单元,可以和其他组件一起构建新的软件系统。设计模式是对一些典型问题的解决方案,主要支持面向对象的复用,模式经常依赖于对象的继承、多态等特征。对模式的复用是一种概念复用。基于复用的软件开发可以提高开发效率、降低成本和保证质量。5959第9章 面向复用的设计习 题1什么是软件复用?为什么要复用?2基于复用的软件开发过程有哪些活动?活动的主要内容是什么?3什么是软件组件,请举出一些组件的例子,说明它们具有哪些特点。4给出一个利用J2EE完成一个数据库和业务程序分布于网络各站点、带有Web式交互界面、站点之间的进程需要协作并具有邮件处理的企业应用系统的组件复用方案。6060第9章 面向复用的设计5什么是设计模式,与组件复用相比,设计模式的复用有何特点?6试举出一些可使用Composite模式的应用问题?7为什么模式是一种有效的设计复用形式?这种复用方式的缺点是什么?8请查阅资料再列出几种典型的设计模式,并加以描述。


    注意事项

    本文(《软件工程——理论、方法与实践》课件第9章.ppt)为本站会员(momomo)主动上传,其收益全归该用户,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!




    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库