软件工程技术与设计第二讲学生精品文稿.ppt

上传人:石*** 文档编号:91094913 上传时间:2023-05-21 格式:PPT 页数:57 大小:8.79MB
返回 下载 相关 举报
软件工程技术与设计第二讲学生精品文稿.ppt_第1页
第1页 / 共57页
软件工程技术与设计第二讲学生精品文稿.ppt_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《软件工程技术与设计第二讲学生精品文稿.ppt》由会员分享,可在线阅读,更多相关《软件工程技术与设计第二讲学生精品文稿.ppt(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、软件工程技术与设计第二讲学生第1页,本讲稿共57页正确性资源结构工程用法解的完全性和正确性;静态类和动态类的安全性;多线程的安全性;容错性处理能力;保密性和鲁棒性。执行效率,时间复杂度、消息数、带宽要求等;空间消耗,包括存储单元、对象、线程、过程、通信通道。处理器等的使用情况;增加的资源,一些随选信息;动态策略,包括公正性、平衡性、稳定性等。模块性、封装、耦合、独立性;可延展性,包括子类、可协调性、发展性、可维护性等;可重用性、开放性、可组合性。便携性、可插入性;前后依赖性;互用性;等等。可理解性、简单、高雅;执行中的易错性;与其他软件的共存性;系统可维护性;开发过程的影响;开发队伍结构及动态

2、特性的影响;用户参与的影响;生产力、时间安排、成本的影响;等等。使用规范;人为因素,如可学习性、恢复能力等;对不断变化的环境的适应性;艺术性;医学和环境的影响;社会、经济、政治的影响;等等。设计过程中,针对设计目标约束冲突给出的非功能性需求判断准则。第2页,本讲稿共57页+核心共同思想原则:重点解决软件系统可维护性和复用性矛盾。普遍基本单纯 隐藏重现第3页,本讲稿共57页可维护性好的系统应有性质(Perter Coad)可扩展性容易加入新的性能 灵活性代码修改少波及其他模块 可插入性容易抽出加入类第4页,本讲稿共57页传统的复用 代码的剪贴复用 算法的复用 数据结构的复用程序程序程序程序代码/

3、算法/数据结构第5页,本讲稿共57页传统的复用的风险:影响可扩展性过于僵硬修改多个软件成分中复用源代码时,需要独立地修改检测每一拷贝。很难在一个软件系统里加入一个新功能。影响灵活性过于脆弱对一个地方的修改会导致另一个地方发生故障,难以跟踪代码的变异和使用。模块 A 和 B 同时使用模块 C 的功能。那么当 A 需要 C 增加一个新的行为的时候,B 有可能不需要、甚至不允许 C 增加这个新行为。影响可插入性粘度过高代码、函数、模块对系统的依赖,改动意味着破坏原始意图和框架第6页,本讲稿共57页+面向对象设计的重要语言特性 数据抽象 继承 封装 多态性实现概念和定义复用,促进系统的可维护性。第7页

4、,本讲稿共57页接口(interface):对 象 全 部 操 作(对 象 可 以 处 理 的 所 有 请 求)的 特 征(操 作 的 名 称、参数和返回值)的集合。声明对象的类型(Type)接口标记(signature)包括:变量的类型声明 参量的类型声明 方法的返还类型声明 数据类型的转换等第8页,本讲稿共57页接口和类的区别:+接口只描述方法的特征,而不给出方法的实现,接口把方法的特征和实现分割开来。+类不仅给出方法的特征,面且给出方法的实现。接口常常代表一个角色(role),它包装与该角色相关的操作和属性,而实现这个接口的类使是扮演这个角色的演员。一个角色可以由不同的演员来演而不同的演

5、员之间除了扮演一个共同的角色之外,并不要求有任何其他的共同之处。第9页,本讲稿共57页类、类型和对象之间区别和联系:类(class)定 义 了 一 类 对 象 的 共 性 实 现,即 对 象 的 内 部 数据与其操作的实现。类型(type)只涉及接口(即对象能作出反应的请求的集合)。类定义了一类对象可执行的操作,也定义了对象的类型。一个对象是一个类的实例指这个对象支持该类定义的接口。第10页,本讲稿共57页 同一种类型的对象共享接口部分 同 一 类 型 接 口 的 对 象 可 以 有 不 同 实 现,即 不 同 类 的 对 象 可 以 有相同的类型。一个角色可以由不同的演员来演 一 个 对 象

6、 可 以 有 多 种 类 型。一 个 类 可 以 同 时 实 现 几 个 接 口。一 个演员可以演不同的角色 子类型包含(继承)了超类型的接口 接口是实现构件可插入性的关键。第1 1页,本讲稿共57页抽象类为子类定义通用接口。将实现由子类定义的操作完成。可以拥有实例变量,以及一个或多个构造子(函数)。构造子不能被调用来创建实例,抽象类不可以实例化。构造子可以被子类调用,所有子类都可以有共有的实现 抽象类通常代表一个抽象概念 提供一个继承的出发点。由于抽象类不可以实例化,因此一个抽象类一定是用来继承的。第12页,本讲稿共57页抽象类和接口的区别 抽象类允许有所有派生类公共的状态和行为。是一种相关

7、实体聚集的方式。关 注 如 何 设 计 实 现 并 封 装 这 些 具 体 实 体(派 生 类),而 不 会 与 任 何 特 定 于 实 现 的 细节相耦合。接口关注点派生类或实现类的对象的使用。派生类或实现类的对象为了完成其功能应该有什么样的接口。没有实例变量和构造子(函数)第13页,本讲稿共57页抽象类的作用:用较少的冗余实现一组具有公共状态或行为的对象 设计一个接口 找出已定义对象的公共状态或行为 用一个抽象类实现该接口 从这个抽象类派生具有公共状态或行为的对象优点:使实现类更简单,更容易维护。第14页,本讲稿共57页具体类非 抽 象 的 类 称 为 具 体 类,实 现 由 自 身 完

8、成。具体类可以实例化。可以实例化,给出一个有逻辑实现的对象模版。具体类不是用来继承的。(可以继承)第15页,本讲稿共57页混合类 向其他类提供接口,也提供部分接口实现。与抽象类相似,不能用实例说明。可以继承第16页,本讲稿共57页假设蛋代表抽象,而鸡代表具体。蛋决定鸡的性伏,鸡是蛋的“实现”,蛋的类型决定了鸡的类型。从这个角度来讲,先有蛋,后有鸡。第17页,本讲稿共57页类继承和接口继承:继承:一个类是另一个类的子类类继承(实现继承):根据某个原有对象的实现来定义另一个新的对象的实现。从已有类继承必要的需求。共享编码和表示方法。接口继承:是一个类实现了另一个类的一个接口何时可用一个对象替换另一

9、个对象。共享类型。只继承抽象类。第18页,本讲稿共57页问题:加入一个新的类,与现有具体类行为有不同的实现动态的具体类可插入性问题1.使用超类继承:在类结构中增加一个超类,声明出子类要提供的行为 为这个抽象超类提供多个具体子类,以不同的方法实现了超类所声明的行为。客户端动态地决定使用哪一个具体子类。第19页,本讲稿共57页如何在具体类继承结构中增加一个抽象超类:单继承的语言,一个类只能有一个超类。当具体类可能已经有了一个超类,不可能加上新的超类。加新的超类到已有的超类上面,形成超超类。或者继续向上移动,直到类等级结构的最顶端。一个具体类的可插入性设计就变成了对整个等级结构中所有的类的修改。可插

10、入性没有保证。具体类超类新超超类新具体类。与现有具体类行为有不同的实现第20页,本讲稿共57页2.使用接口概念 在一个类等级结构中的任何类都是实现一个接口 这个接口会影响到此类的所有子类,但是不会影响到此类的任何超类。此类将实现这个接口所规定的方法,而其子类则可以从此类自动继承到这些方法,子类可以选择置换其中的某一些方法或所有方法。这时候,子类就具有了可插入性。接口类具体类新具体类第21页,本讲稿共57页关联的可插入性关联:一个对象知道其他对象针对接口的关联:不是针对具体类 任何实现这个接口的类都可以满足关联要求。可以动态地将关联从一个具体类转换到另一个具体类第22页,本讲稿共57页调用的可插

11、入性对象调用其他对象的方法。针对接口的调用:不是针对具体类,而是一个接口。任何实现这个接口的类都可以被当前对象调用。可以动态地决定当前对象调用哪一个具体类的实例接口提供了方法调用上的可插入性。第23页,本讲稿共57页软件系统的规模越大,生命周期越长,接口的重要性就越大。接口使得软件系统在灵活性和可扩展性,可插入性得到保证。第24页,本讲稿共57页相 同 接 口 具 有 不 同 的 实 现,对 象 的 行 为 具 有 多 种 形 态 的 特性。简 化 了 客 户 定 义。使 客 户 对 象 除 了 支 持 特 定 接 口 外,不做其他设定。相 同 接 口 的 对 象 具 有 了 可 替 换 性。

12、复 用 对 象 的 实 现 和 应用第25页,本讲稿共57页继承和对象合成的关系继承:n 根据一个类定义另一个类的执行过程。n 在 编 译 时 静 态 定 义,直 接 被 程 序 设 计 语 言 支 持,使 用 直接。n 便于修改正在复用的实现。白盒复用“白 盒”指 可 见 性,通 过 继 承,父 类 的 内 部 可 被 子 类所见。第26页,本讲稿共57页问题:1)实际运行时不能改变在编译时所定义继承的执行过程2)子类的依赖性:继承把父类执行过程的细节暴露给子类,破坏了封装。子类的物理表示、执行过程与父类有密切关系 父类执行过程的任何改变都会强迫子类发生改变。这种依赖性限制了适应性,最终也限

13、制了可复用性。第27页,本讲稿共57页动态连接:在 运 行 时 将 请 求 连 接 到 一 个 对 象 和 该 对 象 的一个操作上。意 味 着 请 求 不 需 指 定 特 定 的 实 现。任 何有 适 当 接 口 的 对 象 都 会 接 收 请 求。相 同 接口的对象可以互相替换。第28页,本讲稿共57页对 象 合 成:通 过 组 合 对 象 得 到 新 的 更 复 杂 的 功 能。要 求 被 组 合 对 象 有 定义好的接口。特点:对象合成在运行时动态地通过对象请求访问其他对象。组合要求对象考虑相互的接口,精心设计接口。任何一个对象都可在运行时被另一个有相同的类型对象替代。黑 盒 复 用

14、对 象 的 内 部 细 节 不 可 见,对 象 显 得 像 一 个 黑盒。第29页,本讲稿共57页优点:对象只能由其接口访问,不破坏封装。对象的实现根据接口编写,依赖性减少。有助于类的封装,使每个类集中于一个任务。缺点:系统的行为不是在类中定义,而依赖于对象的相互关系。采用对象合成优于采用类继承(合成/聚合复用原则)。第30页,本讲稿共57页委托(delegation):对象合成的特例。一个控制请求的执行:继承方法:子类将请求交给父类执行。委托方法:接收操作的对象把操作委托给它的代理对象。接 收 操 作 的 对 象 把 自 己 本 身 也 传 给 委 托 者,以 使 被 委 托 操 作 指 向

15、 接 收 对象。第31页,本讲稿共57页例 窗口类的实现继 承 方 法:使 窗 口 类 成 为 矩 形 的 子 类,继 承 其操作。窗口类将请求交给矩形父类执行代理方法:产生一个矩形实例,并代理复用矩形的行为 窗口将请求传给此矩形实例 把操作委托给矩形实例 把 自 己 本 身 也 传 给 矩 形 实 例,以 使 被 委 托 操作指向接收对象 让窗口好像是一个矩形在运行中用圆实例代替矩形实例就适用圆形窗口窗口矩形窗口矩形第32页,本讲稿共57页窗口类对矩型类实例的引用第33页,本讲稿共57页优 点:容 易 组 合 运 行 时 的 行 为,改 变 行 为 组合的方式。缺点:难理解、运行效率低。依赖

16、具体情况及设计者经验。在标准模式中使用效果较好。第34页,本讲稿共57页参数化类型。定 义 类 时 不 规 定 它 所 用 的 数 据 元 素 类 型。这 些 类 型 在使用时作为参数提供。例:列 表 类将 元 素 的 类 型 提 供 给 列 表 的 类 型 参 数,实现时为列表类建立每种元素的可定制形式。整数列表把类型“整数”作为参数。字符串列表类型“字符串”作为参数。第35页,本讲稿共57页设计模式:更高的层次上的可复用性(宏观逻辑的抽象层次复用)解决:1合适的对象(类)的寻找2对象(类)粒度的确定:如何分解粒度合适的类3.对象(类)接口的确定:如何定义类接口和继承体系4对象(类)实现的确

17、定5.复用机制的处理:如何建立类(类)的关键联系6运行结构和编译结构的处理7设计中变动的处理第36页,本讲稿共57页1寻找合适的对象系统分解为对象的困难:多 种 矛 盾 因 素 兼 顾:封 装、粒 度、依 赖 性、灵 活 性、性 能、发 展、可重用性。多种分解对象方法优劣的确定:(1)问题陈述找出名词和动词构造相应的对象和操作;(2)集中考虑系统中的协作和职责;(3)构造现实世界模型,把分析得到的对象转换到设计中。现实世界+非现实世界的类,如数组、抽象类等。解决办法:用设计模式帮助确定设计抽象和相应的对象。第37页,本讲稿共57页 2确定对象的粒度设计模式帮助确定在存在大小和数量差别的事物第3

18、8页,本讲稿共57页3.确定对象的接口设计模式帮助确定:(1)接 口 定 义。识 别 关 键 元 素 和 由 接 口 取 得的数据的类型。(2)规定接口间的关系和接口限制。第39页,本讲稿共57页4确定对象实现对象的实现由它的类来定义。a.类的表示抽象类/具体类/混合类b.类的实现类继承/接口继承第40页,本讲稿共57页5.处理复用机制 理想情况下,应该只通过对象合成来得到所需的功能。但限于可用部件的集合不够丰富。继承和对象合成可以互相补充。第41页,本讲稿共57页一个设计可以用三种组合行为技术中的任一种来实现。区别:继承允许提供操作的缺省实现并允许子类超越父类操作。对象合成允许运行时改变被组

19、合的行为,但间接完成,效率不高。参数化类型允许改变一个类可用的类型。但不能在运行中改变。哪种方法最好取决于设计和实现约束。第42页,本讲稿共57页6运行结构和编译结构编 译 结 构(代 码 结 构)编 译 时 即 被 冻 结,由 具 有 固 定 继 承关 系 的 类 组 成。编 译 结 构 代 码 不 能 显 示 出 一 个 系 统 工 作 的 全部情况。运行结构由迅速变化的通信对象网组成。系 统 运 行 结 构 的 优 劣 主 要 由 设 计 者 设 计 的 对 象 及 其 类 型 之 间 的关系来决定,而不是由语言来决定的。第43页,本讲稿共57页例:运行结构和编译结构不同聚集(aggre

20、gation)和关联(acquaintance)关系。聚集对象包含另一个对象或对另一对象负责,或为另一个对象的一部分,具有相同生命期。关 联一 个 对 象 只 知 道 另 一 个 对 象。关 联 对 象 之 间 可 互 相 请 求 操 作,但 不 对 对 方 负 责。是 比聚集弱的联系,提供了对象间的松耦合。运行结构不同 聚集和关联常用相同的方法编译实现:在Smalltalk中:都是其他对象的引用。聚集和关联没有区别。在C+中:都用指针和引用来实现。编译结构相同由此可见:关联和聚集关系主要由设计含义决定,而不是由语言机制决定。在编译结构中,关联和聚集之间的差别小,在源代码中难以辨认。差 别:聚

21、 集 关 系 往 往 会 比 关 联 关 系 少 而 更 稳 定。关 联 关 系 出 现 频 繁,有 时 只 在 一 个 操 作 持 续的时间中存在。动态性更强。第44页,本讲稿共57页 7处理设计中的变动达 到 最 大 复 用 程 度 的 关 键:设 计 中 预 先 考 虑 生 命 期 内 新 需 求 和 现 有 需求的变化。包括:类的重定义和重新实现、客户修改和重新测试。设计模式的作用:确保系统只用特定的方式发生改变。允 许 系 统 结 构 的 某 些 部 分 的 变 化 独 立 于 另 外 部 分,因 此 有 较 高 的 健壮性。封装变化第45页,本讲稿共57页应用系统、工具包、框架设计

22、难度:应用系统工具包框架第46页,本讲稿共57页(1)设计模式在应用系统中的作用:设 计 模 式 的 松 散 耦 合,封 装 使 操 作、算 法、和 表 示 的 依 赖 性 减少,提高了对象类与其他类互操作的可能性增加了内部复用可能。减少对平台依赖性系统的可维护性变强。利 用 类 继 承 关 系 和 对 象 合 成,使 类 耦 合 减 少,一 个 类 不 依 赖 于 其他类提高可扩展性。第47页,本讲稿共57页(2)设计模式在工具包中的作用:工具包类 库 中 预 先 定 义 的 相 关 的 可 复 用 的 类 的 集 合,面 向 对象的子程序库。只 为 应 用 系 统 提 供 某 些 通 用

23、功 能。如 列 表、联 合 表、栈等,C+的I/O流库等。强调代码复用,没有特定的设计要求。第48页,本讲稿共57页设计特点:比应用系统的设计难。要在多种应用系统中工作。设计者不知应用系统情况和特殊要求。要 求:避 免 假 设 和 依 赖 性,依 赖 性 会 限 制 工 具 包 的适应性,进而限制可利用性和效率。设计模式有助于工具包的适用性。第49页,本讲稿共57页(3)设计模式在框架中的作用:框架为特定要求的软件构成的可复用的设计。框架强调设计复用而不仅是代码复用。特定应用的框架是框架抽象类的特定应用子类:包括:一个特定的领域中的一组相互协作的类;常用于该应用领域的设计决策;框架实例:图形编

24、辑器;语言编译器;系统应用模型。第50页,本讲稿共57页框架设计要求:应能为某领域的所有应用系统工作。框架定义的结构应灵活和可扩展。框架接口要求松散耦合。第51页,本讲稿共57页框架的参数:应用系统的总体结构类和对象的划分类和对象的关键责任类和对象合作控制线索第52页,本讲稿共57页编写应用程序的主体部分复用工具包代码复用主体部分编写所调用的代码框架和工具包复用特点:工具包框架第53页,本讲稿共57页设计模式对框架的支持1).设计模式只需按特定名字和调用规则编写操作减少应用系统的设计决策难度。2).设计模式系统结构相似提高了一致性,便于维护。3).提高框架的可理解性;4).有助于框架具有更广泛

25、的适用性达到更高水平的设计复用和代码复用。缺点:设计者缺少设计决策创造自由。第54页,本讲稿共57页设计模式和框架关系:1)设计模式比框架更加抽象。框架用程序设计语言代码体现,能直接学习、执行和复用。模 式代 码 只 体 现 模 式 的 实 例,设 计 模 式 只 能 在 每 次 被 使 用 时执行。2)设 计 模 式 结 构 元 素 比 框 架 小。框 架 可 以 包 括 若 干 设 计 模 式,反 之不成立。3)设 计 模 式 比 框 架 有 更 广 泛 的 意 义。框 架 有 特 定 的 应 用 领 域(图 形编辑器框架用于CAD)设计模式可用于几乎所有的应用。第55页,本讲稿共57页设计一个文档编辑器。第56页,本讲稿共57页第57页,本讲稿共57页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁