《软件体系结构》课件 09-可修改性_第1页
《软件体系结构》课件 09-可修改性_第2页
《软件体系结构》课件 09-可修改性_第3页
《软件体系结构》课件 09-可修改性_第4页
《软件体系结构》课件 09-可修改性_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

ModifiabilityanditsTactics1软件体系结构课程组可用性复习可用性的关注点故障提升可用性的策略故障检测故障恢复故障避免2目录可修改性的含义1提升可修改性的策略23目录可修改性的含义1提升可修改性的策略24可修改性的含义-概述(1/2)关注点修改的成本系统的哪些部分被修改修改发生的时间修改由谁来进行5可修改性的含义-概述(2/2)衡量指标修改完成的时间修改所花的人力成本修改所花的经济成本……6可修改性的含义-可修改性场景(1/3)刺激源谁进行的修改(开发者/管理员/用户)刺激要进行的具体修改7可修改性的含义-可修改性场景(2/3)制品修改系统的功能orUI

or交互的其他系统?环境在什么时间进行的修改?设计期间or开发期间or运行期间?修改的时间越迟,越不利8可修改性的含义-可修改性场景(3/3)响应操作人员要理解如何修改、进行修改操作、测试、部署响应衡量指标时间、成本9可修改性的含义-场景实例10本页图片来自网络目录可修改性的含义1提升可修改性的策略211提升可修改性的策略-概述目标降低修改的时间和成本方向1:限制修改范围让修改所影响的

软件范围尽可能的小方向2:延迟绑定时间让软件在运行期间仍可进行灵活修改12提升可修改性的策略修改发生、测试、部署(满足时间和预算要求)修改到来提升可修改性的策略-限制修改范围(1/6)模块高内聚、低耦合尽量把对程序的修改控制在一个模块内可以借助框架、中间件考虑到可能会发生的修改有助于评估模块间责任的划分让一个点的修改只影响一个模块避免完全无关的多个修改会影响同一个模块13提升可修改性的策略-限制修改范围(2/6)让模块通用“解释器”风格的思路14本页图片来自网络提升可修改性的策略-限制修改范围(3/6)隐藏信息面向对象机制中的可访问性(public/private)维持接口不变在接口不变的情况下,接口连接的双方可以独立变化15本页图片来自网络提升可修改性的策略-限制修改范围(4/6)限制通信路径设计模式中的Façade模式16提升可修改性的策略-限制修改范围(5/6)使用中介数据中介:共享数据的风格服务中介:设计模式中的bridge、factorymethod等模式17本页图片来自网络提升可修改性的策略-限制修改范围(6/6)命名服务器(nameserver)查询所需资源/对象的位置,解决位置依赖按需创建实例借助设计模式中的创建型模式18提升可修改性的策略-延迟绑定时间(1/4)配置文件修改配置文件,而不用修改代码19[Global]MessageTitle=智能自制内容工具Button[0]=确定(&O)Button[1]=取消(&C)Button[2]=关闭(&C)[Project]Title=新建项目Button[0]=名称:Button[1]=位置:Button[2]=浏览(&B)...Text[0]=当前目录已经存在,是否覆盖此目录?[PutCode]Title=请输入相应数字Button[0]=编号:Button[1]=如果存在相同编号直接覆盖<?xmlversion="1.0"encoding="utf-8"?><!--TheconfigurationfileforSMSvcHost.exe--><configuration><runtime><gcConcurrentenabled="false"/></runtime><system.serviceModel><!--SMSvcHostETWtracesareredirectedbydefaulttoanetwProviderIddifferentfromWCF'sdefault.--><diagnosticsperformanceCounters="Off"etwProviderId="{f18839f5-27ff-4e66-bd2d-639b768cf18b}"/></system.serviceModel></configuration>提升可修改性的策略-延迟绑定时间(2/4)发布-订阅模式软件体系风格部分已有介绍(事件系统)设计模式中的“观察者模式”20本页图片来自/langxuanlovehai/article/details/48375919提升可修改性的策略-延迟绑定时间(3/4)发布-订阅模式微博的例子21提升可修改性的策略-延迟绑定时间(4/4)多态用不同的子类,实现不同的功能22本页代码修改自/Shaun_Guo/article/details/79460421publicclassTest{publicstaticvoidmain(String[]args){

//定义为狗

Animal

a=newDog();a.eat();//变成猫a=newCat();a.eat();classAnimal{publicvoideat(){System.out.println(“进食");}}classDogextendsAnimal{publicvoideat(){System.out.println("狗吃肉");}}classCatextendsAni

温馨提示

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

最新文档

评论

0/150

提交评论