《设计准则》PPT课件.ppt

上传人:小飞机 文档编号:5605377 上传时间:2023-08-01 格式:PPT 页数:29 大小:294.49KB
返回 下载 相关 举报
《设计准则》PPT课件.ppt_第1页
第1页 / 共29页
《设计准则》PPT课件.ppt_第2页
第2页 / 共29页
《设计准则》PPT课件.ppt_第3页
第3页 / 共29页
《设计准则》PPT课件.ppt_第4页
第4页 / 共29页
《设计准则》PPT课件.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《《设计准则》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《设计准则》PPT课件.ppt(29页珍藏版)》请在三一办公上搜索。

1、第三章 设计准则 I:正确性和健壮性,Design Principles ICorrectness and Robustness,软件设计的目标:,正确性、健壮性、灵活性、可重用性和高效性,正确性、充分性,灵活性、可重用性,纯粹的极限程序设计XP(extreme programming),适应未来许多需求变化的设计,3.1 正确性和充分性 目标:每个项目都要满足指定的需求,然后一 起满足所有应用程序的需求。Goal:That each artifact satisfies designated requirements,and that together they satisfy all of

2、 the applications requirements.,3.1.1 实现正确的途径3.1.1.1 达到正确性的非正式方法 在确定最终结果之前,应该进行简单和模块化设计。,一个设计足以实现需求,设计必须完全可理解,设计非常模块化,一个正确设计,有时称为,最小目标,接下来,达到这个目标的常用方法是,3.1.1.2 达到正确性的正式方法 包含了用数学逻辑的方法来分析变量变化的方向。,类不变式,例:Invariants for Class Automobile,mileage=0mileage=-300(300美元是一辆报废车的处理价格)originalPrice=0(type=“REGULA

3、R”&value=originalPrice),Automobile类的方法要考虑这些不变式,这正是我们经常将变量设为私有的原因。,3.1.2 模块接口3.1.2.1 类的接口,Shipment,原始形式,Shipment,setVehicle()perishable()getWidth()printRoute()describeType()getLength()getDuration()setType()getWeight(),Dimensions,getWidth(),getLength()getWeight(),TransportationMeans,getDurationsetVehi

4、cle()printRoute(),GoodsType,describeType()setType()perishable(),Shipment,Dimensions,TransportationMeans,GoodsType,通过接口使Shipment类的结构变清晰:两种表示方法,Java 部分实现代码:interface Dimensions public double getWidth();public double getLength();public double getWeight();class Shipment implements Dimensions,Transportat

5、ionMeans,GoodsType public double getWidth(),3.1.2.2 包的接口,purchases购买,Furniture家具,Clothing衣服,Appliance设备,PurchasesIF,Pricing,Selection,ClothingTryout,chatServer,ger,聊天应用程序的模块,包含了服务包及客户包接口,chatClient,Conversation 会话,ConversationManager会话管理,ServerComm服务器通信,Conversation-Services,Participant-Services,Dis

6、play显示,ClientComm客户端通信,Message-Reception,float computerConversationCharge(),Conversation getConversation(int aCoversationID),3.1.3 模块化3.1.3.1 选择类,领域类:应用程序特有的类 domain class 例如:BankCustomer BankTransaction Teller 足以让所有需求清晰化,非领域类:一般类 nondonmain class 例如:抽象类 实用类 用于补充设计和实现,3.1.4 为正确性和充分性而重整 极限编程(extreme

7、programming,XP)是首先为给定的需求进行设计,然后在额外的需求变得透明时对设计和实现进行修改,这个过程称为重整(refactoring)。,3.1.4.1 重整:为类提升一个原始属性,class Mileage int nominalMileageValue=0;int chassisMileageValue=0;int engineMileageValue=0;public int computerEffectiveMileage(),class Automobile Mileage mileage;,3.1.4.2 重整:引入抽象基类和接口,abstract class MyA

8、bstractClassClass AnotherClassMyAbstractClass m=new MyAbstractClass();/does not compileClass AnotherClassMyabstractClass m;/no problem:just a declarationm=getObjectOfMyAbstractClass();/returns obj.non-abstract subclass;m=new ConcreteSubclassOfMyAbstractClass();/no problem,3.2 健壮性 如果设计或实现能处理各种各样的异常情况

9、,比如数据错误、用户错误、环境条件,那么这个设计是健壮的。,3.2.1 检查输入(保证环境健壮性)例如:类型检查 检查与前置条件和不变式不符的输入,4.2.2 为提高健壮性而初始化,int i=0;Class AnotherClass MyClass c=new MyClass(1,“a”);,3.2.3 提高健壮性的参数传递技术,例如:int computerArea(int aLength,int aBreadth).,如果可行,捕获在类中的参数约束,int computerArea(RectangleDimension aRectangleDimension),在方法注释中说明所有的参数

10、约束,aLength 0 and aBreadth 0 and alength=aBreadth,调用者遵循参数的显示要求,问题时方法的设计者没有控制调用者,在方法代码内首先检查约束,if(aLength=0)如果预计这种情况将会出现,则抛出异常如果可能就终止程序/返回的默认值在上下文间有意思,就将其返回,在使用数据之前进行检查,可提高健壮性,3.3 设计细节:充分性,不熟悉的设计者,熟悉的设计者,减少设计者想象设计结果的能力,100%,0%,开始编码前推荐的设计详细百分比,应用程序类型,非常复杂,非常简单,最初编码之前设计的详细程度,设计准则II:灵活性、可用性和高效性,Design Pri

11、nciples II:Flexibility、Reusability and Efficiency,4.1 灵活性,4.1.1 灵活性的目标,预期,增加更多同类型功能例如(银行应用):处理更多类型的帐号而不需修改已存在的代码,增加不同的功能例如:在存款的功能的基础上增加提款功能,修改功能例如:可以透支,灵活性的表现,4.1.2 用于增加更多同类型功能的设计,WebSite,register(),Member,members,*,网站成员注册,WebSite,Member,members,*,YMember,XMember,StandardMember,灵活地注册网上成员,4.1.3 用于增加不

12、同类型功能的设计,增加一个新功能要依据其上下文和应用范围,在以下范围内,1.一系列相关的函数(方法),例如:在航空旅行函数中增加打印功能,2.一个已存在的基类 例如:增加打印航空旅行路线的功能,3.两者都不是 例如:增加同时打印航空和航海的路线的功能,向一个应用中增加功能:不同情况,考虑一下情况2,SomeApplicationClass,Trip,printItinerary(),一些方法调用printItinerary(),SomeApplicationClass,Trip,printItinerary(),StandardTrip,printItinerary(),LandTrip,pr

13、intItinerary(),SeaTrip,printItinerary(),通过继承基类的方法来增加功能,Additional Type of Flexibiliy,灵活性方面:可以通过运行时确定的变量来产生对象运行时表示变化的对象树或其他结构改变、重组或捕获一组对象的相互行为产生和存储复杂的类对象配置预定义的复杂类或类组的对象,从而以多种方式进行交互,描述点创建型设计模式结构型设计模式行为型设计模式组件技术组件技术,4.2 可重用性4.2.1 函数设计的可重用性,完全指定前置条件等,避免不必要的封装类耦合,如果可行,让方法称为静态的,让名字更具代表性,可理解性促进了可重用性,解释算法,重

14、用者要知道算法是如何工作的,使一个方法具有可重用性,4.2.2 基于重用的类选择,列出一些让类更易于重用的性质,完整地描述类,使类名和功能与实际情况相符,定义一个有用的抽象类,减少对其它类的依赖性,使一个类成为可重用的,4.2.3 用于重用的类组合,CustomercomputeBill(),RegularCustomercomputeBill(),CustomercomputeBill(),Billcompute(),CustomercomputeBill(Orders),Ordersvalue(),(1)Leveraging inheritance,(3)Leveragingdepende

15、ncy,(2)Leveragingaggregation,CustomercomputeBill(),依靠,聚合,继承,4.3 高效性,应用程序必须在指定的时间内完成特定的功能,先按其他原则设计,再考虑效率问题,一开始就按效率原则进行设计确认当前关键的效率需求在整个阶段都按需求进行设计,以上两种方法结合,针对时间效率的基本方法,4.3.1 执行效率,循环while、for远程调用需要网络LANThe Internet函数调用-如果函数调用导致以上情况发生对象创建,4.3.2 存储效率,只存储需要的数据在存储效率与数据提取及重整时间之间获得折中,压缩数据在存储效率与数据压缩及解压缩时间之间获得折中,按相关访问频率存储数据 在存储效率与决定存储位置的时间之间获得折中,获得存储效率,4.4 极限编程法与非极限编程法,极限编程法 非极限编程法,+工作完成迅速,+范围清晰,-未来应用可能 较少用到,-扩展需求代价很大,+未来应用可能 较多用到,+需求可变,-范围划分不清楚,-可能会比较费力,-需要更多关注效率,极限编程法与非极限编程法的比较,注:+正面因素-负面因素,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号