第9章基于复用开发_第1页
第9章基于复用开发_第2页
第9章基于复用开发_第3页
第9章基于复用开发_第4页
第9章基于复用开发_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、西安交通大学 刘海岩1l复用概述复用概述l设计模式设计模式l应用框架应用框架l应用系统复用应用系统复用西安交通大学 刘海岩2l大多数工程学科的设计过程都是基于组件的。大多数工程学科的设计过程都是基于组件的。如机械、电气如机械、电气l软件复用的好处是降低总体开发成本、增加软件复用的好处是降低总体开发成本、增加了系统的可靠性并可与标准兼容,加快了软了系统的可靠性并可与标准兼容,加快了软件开发速度。件开发速度。l被复用的软件的不同的粒度:被复用的软件的不同的粒度: 应用框架复用(如支持组件信息交换的应用框架复用(如支持组件信息交换的中间件集成框架);中间件集成框架); 应用系统复用(应用系统复用(

2、如商业现成产品);如商业现成产品); 源代码复用(如组件、标准函数)源代码复用(如组件、标准函数)西安交通大学 刘海岩3 支持软件复用的方法支持软件复用的方法l设计模式设计模式:将应用间发生的一般抽象表示为设计模式,:将应用间发生的一般抽象表示为设计模式, 这些设计模式给出了抽象和具体的对象与交互。这些设计模式给出了抽象和具体的对象与交互。l基于组件的开发基于组件的开发:通过集成符合组件模型标准的组件来开发。:通过集成符合组件模型标准的组件来开发。l应用框架应用框架:调整或扩展抽象类和具体类的集合来创建应用系统。:调整或扩展抽象类和具体类的集合来创建应用系统。l遗留系统包装遗留系统包装:定义一

3、组接口,通过接口访问遗留系统。:定义一组接口,通过接口访问遗留系统。l面向服务的系统面向服务的系统:通过连接来自外部的共享服务而建立。:通过连接来自外部的共享服务而建立。l应用产品线应用产品线:将某个应用类型在一个共同体系结构上进行泛化,:将某个应用类型在一个共同体系结构上进行泛化, 使之可以适应不同客户。使之可以适应不同客户。l商业现成产品集成商业现成产品集成:集成已有的应用系统。:集成已有的应用系统。l可配置垂直应用可配置垂直应用:通用系统的设计经过再配置以达到:通用系统的设计经过再配置以达到 特殊系统客户的需要。特殊系统客户的需要。l程序库程序库:复用通常使用的抽象的类和函数库。:复用通

4、常使用的抽象的类和函数库。l程序生成器程序生成器:生成器系统嵌入有特殊类型应用的知识,能生成:生成器系统嵌入有特殊类型应用的知识,能生成 该领域的系统或系统片断。该领域的系统或系统片断。l面向方面的软件开发面向方面的软件开发:在编译程序的时候将共享组件编织到:在编译程序的时候将共享组件编织到 应用的不同位置。应用的不同位置。西安交通大学 刘海岩4 复用需考虑的关键因素复用需考虑的关键因素l软件的开发进度:如要快速,考虑复用现成系统而不软件的开发进度:如要快速,考虑复用现成系统而不是单个组件。可能需适当修改需求。是单个组件。可能需适当修改需求。l所预计的软件生命期:长生命期系统要关注可维护性,所

5、预计的软件生命期:长生命期系统要关注可维护性,为适用新需求需改变组件及它们的使用方式。如果不为适用新需求需改变组件及它们的使用方式。如果不能得到源代码,避免使用外部供应商提供的组件或系能得到源代码,避免使用外部供应商提供的组件或系统。统。l开发团队的背景、技术和经验。开发团队的背景、技术和经验。l软件的可靠性及其他非功能性需求。软件的可靠性及其他非功能性需求。l应用领域:某些应用领域可复用的产品较多,可重新应用领域:某些应用领域可复用的产品较多,可重新配置。配置。l系统运行的平台:如系统运行的平台:如COM/Active X,是,是Microsoft平台平台专用的。专用的。西安交通大学 刘海岩

6、5l模式模式(Pattern)的概念最初来自于建筑学领域,的概念最初来自于建筑学领域,用模式描述建筑物的建筑元素(用模式描述建筑物的建筑元素(Alexander,1979),概括了被认为是好的设计的实践经验。),概括了被认为是好的设计的实践经验。l模式是对问题和解决方案的基本内容的描述。模式是对问题和解决方案的基本内容的描述。即模式是积累的经验的描述,可以帮助人们在即模式是积累的经验的描述,可以帮助人们在软件开发过程中对于经常重复出现的问题制定软件开发过程中对于经常重复出现的问题制定通用的解决方案,解决方案可以在不同的设置通用的解决方案,解决方案可以在不同的设置下被复用。下被复用。西安交通大学

7、 刘海岩6l94年年Gamma等等4人(简称人(简称“Gang of Four”)合合著的著的设计模式:可复用面向对象软件的基础设计模式:可复用面向对象软件的基础提出了用设计模式解决重复出现的软件设计问提出了用设计模式解决重复出现的软件设计问题,并对设计模式进行了分类描述和解释。题,并对设计模式进行了分类描述和解释。l96年由年由Buschmann等等5人合著的人合著的面向模式的面向模式的软件体系结构软件体系结构将模式跨越不同的抽象层次,将模式跨越不同的抽象层次,提出了高层的体系结构模式、中层的设计模式提出了高层的体系结构模式、中层的设计模式和低层的习惯用法。和低层的习惯用法。西安交通大学 刘

8、海岩7 Buschmann 在他们的模式系统中扩展了模式分类,在他们的模式系统中扩展了模式分类,增加了几种模式的类别,:增加了几种模式的类别,: 创建:包括实例化对象和递归对象结构的模式。创建:包括实例化对象和递归对象结构的模式。 服务变化:包括支持对象和组件行为改变的模式。服务变化:包括支持对象和组件行为改变的模式。 服务扩展:包括支持动态的给对象或对象结构添加服务扩展:包括支持动态的给对象或对象结构添加新服务的模式。新服务的模式。 适应性:帮助接口和数据转换的模式。适应性:帮助接口和数据转换的模式。 下表列出了模式系统的的分类,其中下表列出了模式系统的的分类,其中“GoF”的设的设计模式用

9、楷体黄色显示:计模式用楷体黄色显示:西安交通大学 刘海岩8 分类分类 体系结构模式体系结构模式 设计模式设计模式 惯用法惯用法结构化结构化 层层 解释器解释器 管道与过滤器管道与过滤器 黑板黑板分布式系统分布式系统 代理者代理者 管道与过滤器管道与过滤器 微核微核交互式系统交互式系统 MVC PVC适应性系统适应性系统 微核微核 映像映像 创建创建 抽象工厂抽象工厂 单件单件 原型原型 工厂方法工厂方法 生成器生成器西安交通大学 刘海岩9分类分类 体系结构模式体系结构模式 设计模式设计模式 惯用法惯用法结构化分解结构化分解 整体整体-部分部分 组合组合工作的组织工作的组织 主控主控-从属从属

10、职责链职责链 命令命令 中介者中介者访问控制访问控制 代理(代理(代理代理) 外观外观 迭代器迭代器服务变化服务变化 桥接桥接 模板方法模板方法 策略策略 状态状态 服务扩展服务扩展 装饰装饰 访问者访问者 西安交通大学 刘海岩10分类分类 体系结构模式体系结构模式 设计模式设计模式 惯用法惯用法管理管理 命令处理器命令处理器 视图处理程序视图处理程序 备忘录备忘录适应性适应性 适配器适配器通信通信 出版者出版者-订阅者订阅者 转发器转发器-接收器接收器 客户机客户机-适配器适配器-服务器服务器 观察者观察者资源处理资源处理 享元享元 计数指针计数指针西安交通大学 刘海岩11 对于对于设计模式

11、设计模式,Gamma等人定义了四个基本要素:等人定义了四个基本要素: (1)模式名称)模式名称 (2)问题描述)问题描述 描述设计模式所解决的问题,什么情况下可以应用描述设计模式所解决的问题,什么情况下可以应用该模式,或者说使用该模式可以在设计中避免的一些缺点。该模式,或者说使用该模式可以在设计中避免的一些缺点。 (3)解决方案)解决方案 通常以图形的方式描述设计方案的组成成分以及它们通常以图形的方式描述设计方案的组成成分以及它们之间的关系、职责和协作方式。它不是一个具体的设计描之间的关系、职责和协作方式。它不是一个具体的设计描述,而是一个设计方案的模版,可以用不同的方式实例化。述,而是一个设

12、计方案的模版,可以用不同的方式实例化。 (4)结果陈述)结果陈述 说明应用该模式的结果和折衷,侧重于对时间和空说明应用该模式的结果和折衷,侧重于对时间和空间的衡量,分析应用该设计模式之后的优点和缺点,帮助间的衡量,分析应用该设计模式之后的优点和缺点,帮助设计者了解在特定的环境条件下用该模式是否有效。设计者了解在特定的环境条件下用该模式是否有效。西安交通大学 刘海岩12 设计模式的分类设计模式的分类 根据根据“Gang of Four”的分类准则,按模式的使用目的分类准则,按模式的使用目的(即的(即“用来完成什么工作用来完成什么工作”)来划分,可分为以下几种)来划分,可分为以下几种类型:类型:

13、创建型创建型:创建对象。如:创建对象。如:Abstract Factory(抽象工厂)、抽象工厂)、 Builder(生成器)等。生成器)等。 结构型结构型:处理类和对象的组合。如:处理类和对象的组合。如:Flyweight(享元享元)、 Proxy(代理)等。代理)等。 行为型行为型:对类或对象如何交互、如何分配职责进行描述。:对类或对象如何交互、如何分配职责进行描述。 如如 Command(命令)、命令)、 Observer(观察者)等。观察者)等。 下面举一个下面举一个Proxy(代理)模式的使用例子:代理)模式的使用例子:西安交通大学 刘海岩13 例:使用例:使用Proxy模式的设计模

14、式的设计 Proxy模式有许多用途:提高效率、易于存取、防模式有许多用途:提高效率、易于存取、防止越权访问等。一个客户机需要访问另一个组件的服务,止越权访问等。一个客户机需要访问另一个组件的服务,但对组件进行直接和无限制的访问可能是低效的甚至是但对组件进行直接和无限制的访问可能是低效的甚至是不安全的,需要额外的控制机制。不安全的,需要额外的控制机制。 Proxy模式使客户机模式使客户机与组件代表而不是组件本身通信。这种代表(称为代理)与组件代表而不是组件本身通信。这种代表(称为代理)提供组件接口并执行附加的前期处理和后期处理。提供组件接口并执行附加的前期处理和后期处理。 Proxy模式的模版为

15、:模式的模版为: 抽象原件抽象原件服务服务1()()服务服务2()() 原件原件服务服务1()()服务服务2()() 代理代理服务服务1()()服务服务2()()客户机客户机 任务任务西安交通大学 刘海岩14其中:其中: 客户机的责任客户机的责任: 利用代理提供的接口来请求特殊服务。利用代理提供的接口来请求特殊服务。 完成它自己的任务。完成它自己的任务。 抽象原件的责任抽象原件的责任: 抽象基类,对代理和原件提供公共接口。抽象基类,对代理和原件提供公共接口。 原件的责任原件的责任: 实现一个特殊服务。实现一个特殊服务。 代理的责任代理的责任: 对客户机提供原件接口。对客户机提供原件接口。 确保

16、安全、有效和正确的访问原件。确保安全、有效和正确的访问原件。 下面给出了下面给出了2个具体例子说明使用个具体例子说明使用Proxy模式提高运模式提高运行效率的设计和防止越权访问的设计。行效率的设计和防止越权访问的设计。西安交通大学 刘海岩15(1)考虑将表示图片的对象存入文件。从文件中装入所有)考虑将表示图片的对象存入文件。从文件中装入所有组成图片像素的代价是昂贵的,显示图片之前没有必要组成图片像素的代价是昂贵的,显示图片之前没有必要装入所有图片数据。用装入所有图片数据。用Proxy模式可以实现这种优化。模式可以实现这种优化。 Imagefilename:Stringdata: byte wi

17、dth( ) height( ) paint( ) Imagefilename:Stringwidth( ) height( ) paint( ) RealImage data: byte width( ) height( ) paint( ) ImageProxyfilename:Stringwidth( ) height( ) paint( )转换前的设计转换前的设计 转换后的设计转换后的设计 图像图像 1 0.1西安交通大学 刘海岩16 ImageProxy提供了和提供了和Image一样的接口,某些操一样的接口,某些操作(如作(如width( )和和height( ))由)由ImageP

18、roxy处理,但处理,但是当需要画出是当需要画出Image的时候(如请求的时候(如请求paint( ) 操作),操作),ImageProxy才从磁盘中读入数据并生成一个才从磁盘中读入数据并生成一个RealImage对象。如果客户不调用对象。如果客户不调用paint()操作,就不操作,就不用创建用创建RealImage对象,节省了实际的计算时间。对象,节省了实际的计算时间。西安交通大学 刘海岩17(2)银行信息系统的一个例子规定:)银行信息系统的一个例子规定: 经纪人不能访问由其他经纪人管理的一些档案。因经纪人不能访问由其他经纪人管理的一些档案。因此必须对系统的访问权限动态建模。下图给出了用此必

19、须对系统的访问权限动态建模。下图给出了用Proxy模式实现的访问。模式实现的访问。 对每一个档案,创建了档案代理以保护档案并检查对每一个档案,创建了档案代理以保护档案并检查访问权限。合法经纪人与档案代理之间的访问关系指访问权限。合法经纪人与档案代理之间的访问关系指出了经纪人可以访问哪个文件。为了访问档案,经纪出了经纪人可以访问哪个文件。为了访问档案,经纪人先给档案代理发送消息,档案代理先检查发出调用人先给档案代理发送消息,档案代理先检查发出调用的经纪人是否与档案代理有访问关系。如果授权访问,的经纪人是否与档案代理有访问关系。如果授权访问,档案代理将认证操作发给实际的档案对象。档案代理将认证操作

20、发给实际的档案对象。西安交通大学 刘海岩18 图中访问关系类包含有一组经纪人可以访问档案的操图中访问关系类包含有一组经纪人可以访问档案的操作。档案代理中的每个操作首先调用作。档案代理中的每个操作首先调用isAccessible()操作,操作,检查发出调用的经纪人是否具有合法的访问权。一个访检查发出调用的经纪人是否具有合法的访问权。一个访问关系可以用于多个授权的访问控制。问关系可以用于多个授权的访问控制。档案代理档案代理buy( )sell( )estimateYield() 档案档案buy( )sell( )estimateYield()1 1 访问访问isAccessible()1经纪人经纪

21、人*西安交通大学 刘海岩19l设计模式的使用是一个非常有用的复用形式,设计模式的使用是一个非常有用的复用形式,但引用设计模式的成本是很高的。但引用设计模式的成本是很高的。l由于模式的复杂性,为了有效的使用,设计者由于模式的复杂性,为了有效的使用,设计者需要对许多设计模式有详细的了解。需要对许多设计模式有详细的了解。l模式不是一个可执行组件,不像组件那样只需模式不是一个可执行组件,不像组件那样只需了解组件的接口。有经验的程序员才能辨别出了解组件的接口。有经验的程序员才能辨别出一个模式所能适用的一般条件。因此,使用设一个模式所能适用的一般条件。因此,使用设计模式需要积累经验。计模式需要积累经验。西

22、安交通大学 刘海岩20 框架(框架(Frameworks)是一个)是一个“半成品半成品”,它,它包含抽象类和具体类的集合以及这些类之间的接包含抽象类和具体类的集合以及这些类之间的接口。应用系统的构建是通过口。应用系统的构建是通过增加组件和通过对框增加组件和通过对框架中的抽象类提供具体的实现(特化)架中的抽象类提供具体的实现(特化)来完成,来完成,或者通过继承或组装创建额外的类,用以对框架或者通过继承或组装创建额外的类,用以对框架所包含的功能进行补充。所包含的功能进行补充。 Fayad and Schmidt 于于1997年提出了三种类年提出了三种类型的框架:型的框架: (1)系统基础实施框架:

23、支持系统基础实施)系统基础实施框架:支持系统基础实施(包括通信、用户界面、编译器等)的开发。(包括通信、用户界面、编译器等)的开发。西安交通大学 刘海岩21 (2)中间件集成框架:由一组支持组件通信和)中间件集成框架:由一组支持组件通信和信息交换的标准和相关对象类构成。提供对标准信息交换的标准和相关对象类构成。提供对标准化的组件模型的支持。如化的组件模型的支持。如CORBA、COM+、EJB。 (3)企业应用框架:关注的焦点是专门的应用)企业应用框架:关注的焦点是专门的应用域,如通信或金融系统。这些框架嵌入了应用域域,如通信或金融系统。这些框架嵌入了应用域知识并支持终端用户的开发。知识并支持终

24、端用户的开发。 框架是一个一般化的结构,能够通过对它的框架是一个一般化的结构,能够通过对它的扩展(增加具体类来继承框架中抽象类的操作)扩展(增加具体类来继承框架中抽象类的操作)来创建更专门的子系统和应用。来创建更专门的子系统和应用。西安交通大学 刘海岩22 指的是对整个系统的复用,大粒度的软件指的是对整个系统的复用,大粒度的软件产品的复用。产品的复用。 (1)商业现成产品的复用)商业现成产品的复用 商业现成产品(商业现成产品(COTS)是无需购买者作)是无需购买者作任何修改即可使用的软件系统。如桌面软件、任何修改即可使用的软件系统。如桌面软件、数据库管理系统等。数据库管理系统等。西安交通大学

25、刘海岩23客户端客户端Web浏览器浏览器电子邮件系统电子邮件系统电子商务系统电子商务系统电子邮件系统电子邮件系统订货和发票系统订货和发票系统适配器适配器适配器适配器服务端服务端例如,基于例如,基于COTS的采购系统:的采购系统:已由软件已由软件提供商集提供商集成在一起成在一起 电子商务系统有自己的订单格式、交货方式,都需要转电子商务系统有自己的订单格式、交货方式,都需要转换为订货系统所使用的格式。电子商务与电子邮件系统固换为订货系统所使用的格式。电子商务与电子邮件系统固定集成在一起,能发送通知单给客户,遗留系统无此设计,定集成在一起,能发送通知单给客户,遗留系统无此设计,需要一个适配器组件将通

26、知单转换成邮件消息。需要一个适配器组件将通知单转换成邮件消息。遗留系遗留系统统西安交通大学 刘海岩24 (2)软件产品线)软件产品线 是相关联的一组应用系统,具有相同的领域相关的是相关联的一组应用系统,具有相同的领域相关的体系结构。应用族的体系结构。应用族的核心部分核心部分在每次构建一个新应用时在每次构建一个新应用时都要都要复用复用。新的开发可能包括对一些特殊的组件的配置、。新的开发可能包括对一些特殊的组件的配置、编写一些额外的组件或调整某些组件来适应新的需要。编写一些额外的组件或调整某些组件来适应新的需要。 对软件产品线各类特化处理需要做的工作有:对软件产品线各类特化处理需要做的工作有: 平

27、台特化平台特化: 为不同的平台开发应用程序的不同版本。为不同的平台开发应用程序的不同版本。如一个应用程序可能存在如一个应用程序可能存在Windows NT、Linux等各种平等各种平台上的版本,程序的功能不变,修改与硬件和操作系统台上的版本,程序的功能不变,修改与硬件和操作系统的接口。的接口。 西安交通大学 刘海岩25 功能特化功能特化: 为不同需求的客户创建不同的应用程序版为不同需求的客户创建不同的应用程序版本。如图书馆系统根据用于大众图书馆还是大学图书馆来本。如图书馆系统根据用于大众图书馆还是大学图书馆来修改实现功能的组件,并需要添加新组件。修改实现功能的组件,并需要添加新组件。 过程特化过程特化:调整系统使之与特殊的业务过程配套。如:调整系统使之与特殊的业务过程配套。如订单系统需要调整,以应对公司的集中式订购过程以及其订单系统需要调整,以应对公司的集中式订购过程以及其他公司的分布式过程。他公司的分布式过程。 环境特化环境特化: 创建应用程序的版本来处理特殊的操作环创建应用程序的版本来处理特殊的操作环境和外部设备。如应急服务系统会有多个版本,每个版本境和外部设备。如应急服务系统会有多个版本,每个版本依赖于所使用的无线电系统类型,在此情况下,要改变系依赖于所使用的无线电系统类型,在此情况下,要改变系统组件来反映所使用的通信设备的功能

温馨提示

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

最新文档

评论

0/150

提交评论