《软件工程教学课件》07_设计优化幻灯片资料.pptx

《软件工程教学课件》07_设计优化幻灯片资料.pptx

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《软件工程教学课件》07_设计优化幻灯片资料.pptx

软件工程大连理工大学软件学院较差的系统和设计大连理工大学软件学院从来不碰一个运行的系统(Never Touch a Running System):新功能只是在现有代码的基础上来“编织”新的代码,旧代码尽量保持不变。副作用的产生(Side Effects):对文档进行小的修正却导致不可预期的其它问题的产生。昂贵的细节性修改:对代码的某处局部的修改,却导致很多地方大量级联修改。复制-粘贴:使用复制和粘贴使代码在其它方法中运行,而不是对代码进行有意义的重构。这与另外一种原则DRY是相悖的,即不要简单重复自我(Don’t Repeat Yourself)。设计结构的优化大连理工大学软件学院设计应对分析类图细化和补充,以帮助实现:设计类图应能够容易修改。设计类图中微小的改动不应该导致在实现中的多处修改。设计类模型应能够很容易的进行扩展。新加入的类,尤其是那些与已有的类具有某些相似内容的类,应能够很容易的集成到现有的类图结构中,并具有较好的可理解性。类模型应以模块的结构进行组织。那些在一起工作的应该是联系紧密的类,而与其它类之间则具有尽量简单的关系,即追求包内的高内聚和包间的低耦合。设计的基本原则大连理工大学软件学院软件设计是一门艺术,是对“变化”的辩证处理:发现变化,隔离变化,以不变应万变。最基本的设计原则是对面向对象思维的深化和具体。基本设计原则的综合使用是产生高质量软件设计的基石。接口隔离原则大连理工大学软件学院接口隔离原则(The Interface Segregation Principle, ISP)有两层含义:应尽量使用“接口继承” ,而非“实现继承”。接口关注对象的概貌,将对象中“不变”的信息抽象出来,不涉及细节,因此是“稳定”的。通过接口只将需要的操作“暴露”给客户类,而将不需要的操作隐藏起来。接口在这里充当类的视图。接口类IManeuverable是具体交通工具的抽象,提供了驾驶的接口,如加减速、转弯类Client在使用(drive)交通工具时,使用的不是具体类,而是其接口类好处就是当业务需求变化时,更容易发生改变的是具体类,而这些变更可以通过稳定的抽象类进行隔离,使得Client不受变化的影响,从而提高了系统的可维护性。接口指的是广义上的抽象类,可以是编程语言中的interface或abstract class。如C++通过继承纯虚类来实现接口继承;Java对接口继承具有单独的语言构造方式。大连理工大学软件学院如果系统中还存在另一类使用者,比如维修者,则他们专注的应该是这些交通工具的运转,而与驾驶相关的操作是不应该暴露给这些维修者类。大连理工大学软件学院面向接口的作用大连理工大学软件学院面向接口的设计能够使Client只需关注如何进行业务活动(如:驾驶),而不必关心其使用对象的具体实现。一个对象可以很容易地被(实现了相同接口的)另一个对象所替换,这样对象间的连接不必硬绑定(hard wire)到一个具体类的对象上,因此增加了灵活性。这是一种松散的耦合,同时增加了重用的可能性。依赖倒置原则依赖倒置原则(Dependency Inversion principle, DIP)宗旨是应依赖于抽象,而不要依赖具体扩展的基础越具体,扩展的难度也越大,具体类的变化无常势必造成扩展类的不稳定依赖倒置原则使细节和具体实现都依赖于抽象,抽象的稳定性决定了系统的稳定性一个基础稳定的系统要比一个基础不稳定的系统在整体上要更“稳定”一些大连理工大学软件学院开放封闭原则大连理工大学软件学院开放封闭原则(The Open-Closed Principle, OCP):一个模块对扩展应是开放的,而对修改应是封闭的。这条原则是面向对象思想的最高境界,即设计者应给出对于需求变化进行扩展的模块,而永远不需要改写已经实现的内部代码或逻辑。两个基本的特点:模块的行为可以被扩展,以需要满足新的需求。模块的源代码是不允许进行改动的。OCP是相对的,没有绝对符合OCP的设计,而且一个软件系统的所有模块不可能都满足OCP,要做的是尽量最小化不满足OCP的模块数量。一个满足OCP的设计,Client很容易的计算所有零件的价格之和,并且当有新的零件加入时只需继承Part抽象类即可,现有的代码不需要做任何修改。可是,但需求发生了变化,如在计算零件价格和的时候还需要考虑市场的价格波动情况,则可以修改代码如图中的注释部分,但这将导致该设计不符合OCP。大连理工大学软件学院作为对以上设计的一种改进,需要将波动系数的处理融入业务逻辑中,引入折扣(discount)属性。但这一属性放在什么地方?显然它不是类part的自然属性,因为这一属性是与价格策略相关的,为此引入类PricePolicy,与类Part呈关联关系,这样做的好处是零件对象与价格策略对象的对应是动态的,可以在程序运

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档