第九章 软件复用之模式与框架_第1页
第九章 软件复用之模式与框架_第2页
第九章 软件复用之模式与框架_第3页
第九章 软件复用之模式与框架_第4页
第九章 软件复用之模式与框架_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

第九章软件复用之模式和框架2/3/20231提纲9.1软件复用9.2模式复用9.3设计模式9.4框架9.5模式和框架的关系2/3/202329.1软件复用复用(Reuse)—在一个新的语境(context)中(同一系统的其它地方或另一个系统中)使用已有的软件构件。可复用性(Reusability)—软件构件可以被复用的程度或范围(extent)。遵循一个适当的设计和编码标准将增强构件的可复用性。可复用软件构件(RSC)—可以被复用的软件实体;它可以是设计、代码或软件开发过程的其它产品。RSCs有时称为“软件资产”(softwareassets)。2/3/202339.1软件复用实践证明:软件复用可以有效地提高软件的质量和生产率,是解决“软件危机”的一条比较现实可行的途径。提高生产率。软件复用最明显的好处在于提高生产率,从而减少开发代价。生产率的提高不仅体现在代码开发阶段,在分析、设计及测试阶段同样可以利用复用来节省开销。用可复用的构件构造系统还可以提高系统的性能和可靠性,因为可复用构件经过了高度优化,并且在实践中经受过检验。2/3/202349.1软件复用减少维护代价。这是软件复用另一个重要的优越性。由于使用经过检验的构件,减少了可能的错误,同时软件中需要维护的部分也减少了。例如,要对多个具有公共图形用户界面的系统进行维护时,对界面的修改只需要一次,而不是在每个系统中分别进行修改。提高互操作性。软件复用一个更为专业化的好处在于提高了系统间的互操作性。通过使用接口的同一个实现,系统将更为有效地实现与其它系统之间的互操作。例如,若多个通讯系统都采用同一个软件包来实现X.25协议,那么它们之间的交互将更为方便。2/3/202359.1软件复用支持快速原型。复用的另一个好处在于对快速原型的支持,即可以快速构造出系统可操作的模型,以获得用户对系统功能的反馈。利用可复用构件库可以快速有效地构造出应用程序的原型。减少培训开销。复用的最后一个好处在于减少培训开销,即雇员在熟悉新任务时所需的非正式的开销。如同硬件工程师使用相同的集成电路块设计不同类型的系统,软件工程师也将使用一个可复用构件库,其中的构件都是他们所熟悉和精通的。2/3/202369.1软件复用软件复用的类型划分组装式(Compositional)复用与生成式(Generative)复用

组装式复用,也称产品复用:利用库中的底层构件自底向上地开发系统,关键是要解决构件的分类和检索技术,以及开发出一个自动化系统以支持组装过程。生成式复用,也称过程复用:是特定于应用领域的,它采用标准的领域构架(architecture)模型(即类属的构架)和一致的构件接口,目的是根据一个适当的参数规约生成新的系统。小规模复用与大规模复用

原样(As-is)复用与带修改的复用

2/3/202379.2模式复用ChristopherAlexander:每一个模式描述了在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。模式(pattern):是用来描述做某类事情所具有的一些共性特征的技术。模式是在某种特定的场景(context)下某个不断重复出现的问题的解决方案。模式本身并没有任何的创新性,它仅仅是对于一些已经被证明为优秀的解决方法的归类、总结,目的是为了重用该解决方案而又不用做重复的劳动。“特定场景”给出了什么时候以及为什么使用一个模式。"重复"说明了模式的可重复性从而可以被重用。2/3/202389.2模式复用一般而言,一个模式有四个基本要素:模式名称(patternname)一个助记名,它用一两个词来描述模式的问题、解决方案和效果。问题(problem)描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果。解决方案(solution)描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。效果(consequences)描述了模式应用的效果及使用模式应权衡的问题。2/3/202399.3设计模式设汁模式包含一组规则,描述了如何在软件开发领域中完成一定的任务。面向对象的设计模式解决如何在面向对象软件开发中完成一定任务。所谓设计模式,简单地理解,是一些设计面向对象的软件开发的经验总结。一个设计模式事实上是系统地命名、解释和评价某一个重要的可重现的面向对象的设计方案。设计模式的组成:设计模式使用的场景和解决的问题;设计模式的基本元素及其相互关系;应用设计模式后的结果和权衡。2/3/2023109.3设计模式常见的设计模式:AbstractFactory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。Adapter:将一个类的接口转换成客户希望的另外一个接口。Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。Builder:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。ChainofResponsibility:为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。Command:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。Composite:将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。Decorator:动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。2/3/2023119.3设计模式Facade:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。FactoryMethod:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Flyweight:运用共享技术有效地支持大量细粒度的对象。Interpreter:给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。Iterator:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。Mediator:用一个中介对象来封装一系列的对象交互。Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。Prototype:用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。Proxy:为其他对象提供一个代理以控制对这个对象的访问。Singleton:保证一个类仅有一个实例,并提供一个访问它的全局访问点。2/3/2023129.3设计模式State:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。Strategy:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。TemplateMethod:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。Visitor:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。2/3/2023132/3/2023149.4框架框架,即framework。其实就是某种应用的半成品,就是一组有结构的组件,供你选用完成你自己的系统。框架:指在一个特定的领域中的一组相互协作的类,它规定了应用系统的总体结构,定义了类的划分以及类的关键责任,定义了类间的协作,还定义了控制线程。框架更强调设计复用而不仅是代码复用。为什么要使用框架:在某些方面使用别人成熟的框架,就相当于一些基础工作已经完成,开发者只需要集中精力完成系统的业务逻辑设计。框架一般是成熟,稳健的,它可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。框架一般都经过很多人使用,结构很好,扩展性也很好,而且它是不断升级的,可直接享受框架代码升级带来的好处。2/3/2023159.4框架常见的Java框架:WAF(WEBAPPLICATIONFRAMEWORK),用于EJB层;Struts:用于Web层;JSPTurbine:用于web层;ServletCOCOON:用于web层ECHO:用于web层JATO(SUNONEApplicationFramework):用于web层TCF(Thin-Clien

温馨提示

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

评论

0/150

提交评论