收藏 分享(赏)

软件工程实践(12)OO.ppt

上传人:Facebook 文档编号:3536637 上传时间:2018-11-13 格式:PPT 页数:67 大小:166.50KB
下载 相关 举报
软件工程实践(12)OO.ppt_第1页
第1页 / 共67页
软件工程实践(12)OO.ppt_第2页
第2页 / 共67页
软件工程实践(12)OO.ppt_第3页
第3页 / 共67页
软件工程实践(12)OO.ppt_第4页
第4页 / 共67页
软件工程实践(12)OO.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、北京理工大学 软件工程实践,吴 际 北京航空航天大学,第十二讲,面向对象方法与UML介绍,内容和目的,我们的座标 面向对象方法 面向对象:能与不能 统一建模语言UML,我们的座标,应用开发的变化 开发工具和手段的发展 开发方法和技术的发展,应用开发的变化,70年代:小型机(或服务器)上的数学程序 80年代:单机(或以太网)上的、文本界面(或简单图形界面)、计算型应用 90年代:互联网(Internet)、丰富图形界面、事务处理型应用,要求快速提交产品 现在,分布于Internet、Intranet,多种界面形式(基于Web Browser、Application GUI等),多种事务处理的集成

2、(电子商务、信息管理),多种标准的支持(XML,J2EE,Corba,.NET),多种平台的支持(Windows,Linux,Unix,),开发工具和手段的发展,70年代:基于汇编代码的调试器 80年代:基于高级语言的调试器(Turbo C,Microsoft C,Borland C,Turbo Pascal) 90年代:集成了调试器、编辑器、配置管理、框架代码构造、及时编码提示、应用GUI界面编辑等的集成开发环境,如Visual Studio,Delphi 现在:在集成开发环境基础上,提供更强大的开发平台支持(.NET,JDK),同时更关注应用的平台无关性和运行安全性,开发方法和技术的发展,

3、70年代:结构化方法(设计、编码) 80年代:结构化方法(分析、设计、编码),状态图,需求工程 90年代:面向对象分析、设计、编码,对象建模 现在:商务建模(business modeling)、面向对象建模(分析、设计),体系结构设计(构件化),面向对象方法,结构化与面向对象的提出 面向对象方法特征 面向对象主要流派,结构化与面向对象的提出,CFD & DFD:自顶而下的层次分解策略 任何一层有变动,其下面的所有层次都必须重新进行层次分解 层次间的解释关系使得难以维护层次间的一致性 强调数据、功能分解,但忽略了数据、功能的整合 数据与功能分离的结构化认知观点,实际偏离了人认知世界的基本原则:

4、 以实体为单位,以关系为核心 尽管有缺点,但结构化仍有可借鉴之处: 结构化原则 数据字典 状态图,What do you think about OO?,大幕拉开:面向对象,面相对象的目标:以人的(获接近于人的)认知方法和原则来描述事物 完全不同于结构化的描述手段: 类、对象 继承 多态 消息,类、对象是核心,面向对象分析、设计、编码的基本单位 数据与功能的有效封装 可直接映射到现实或抽象的实体 关系、状态、行为 开发管理的基本单位 类测试就是“单元测试”!,继承:面向对象冠上明珠,如果没有继承,谁能在一个小时之内,只使用SDK接口编写出Notepad?如果使用继承,你只需十分钟(或更少)!

5、继承至少提供了两个方向的设计支持: 重用 抽象、接口(COM、DCOM、Bean) 没有继承,几乎不可能有通用的容器类(Container or Collector)可供使用 多继承:你使用过多少次?,多态:面向对象自适应中枢,多态(polymorphism):多种形态,统一语义 接口描述了通讯协议 多态使得基于接口的通讯能够自适应,多态:面向对象自适应中枢,两种多态: 同一个类中的不同形态接口 不同子类以不同形态实现(或重载)父类接口 典型例子:画图程序中GraphManager类的Draw,Move,Open, 典型例子:文档编辑中针对不同对象的统一的Cut/Copy/Paste操作,消息

6、:可能让你失望,不要试图用信息理论或通讯理论中的消息来理解 也不要用操作系统中的消息(事件)来理解 所谓两个对象间的一个消息就是一个对象使用了另一个对象的操作(operation) ,简单说就是对象的操作调用! Windows中的SendMessage和PostMessage根本就与面向对象无关!,对象状态,对象状态只决定于对象的数据,和全局数据、非对象的局部数据无关 对象状态和对象行为之间的关系: ,b1 = b2 iff s1 = s2. 如果你的程序不满足这条定理,有两种情况: 类的某个方法使用了全局变量 类的某个方法中的局部变量初始值不确定,对象关系:无法让人满意,目前的面向对象提供了

7、三种对象关系描述手段: 继承 聚集(组成) 关联:对象之间有关系! 然而,现实世界中实体之间的关系丰富多彩,岂止这三种?,面向对象分析,目标:使用对象来描述问题域,进而抽象出问题域类,并把求解问题的约束分配到问题域类 关注:是否完整、清晰的描述了问题域及约束 雷区:使用DFD,然后把每个处理节点都抽象为一个类 雷区:很快就在某个局部(通常为方法)进入算法、编码 面向对象分析模型的价值(领域重用、测试),面向对象设计,目标:引入类(族)实现问题域类(在概念层次上),同时把系统约束分解、落实到类的方法层次 关注:体系结构、接口、效率 雷区:有些类是上帝,而有些类只是弱智的代表 雷区:盲目追求所谓封

8、装、抽象类 面向对象设计模型的价值(设计pattern,风险跟踪、测试),适合面向对象的开发过程,必须能够管理面向对象分析、设计、实现、测试、维护各阶段的模型的一致性 需要给出一套基于类的开发任务管理方法(任务定义、风险管理、任务评审) 能够在开发的不同阶段提供不同的知识库(不仅仅是类库!)以供重用 RUP是个不错的选择,面向对象:能与不能,Can 使你以更有效的手段描述、实现系统 提高系统的重用度 有效缩短开发周期 Can not 避免错误,尤其是分析、设计错误 自动生成精巧的算法,统一建模语言UML,引 论 建模技术 UML的模型图 UML的基本视图 UML的目的、主要特点和和应用领域,引

9、论,Why Unified? UML是一种建模语言 UML的设计目标 UML的发展历程,Why Unified?,面对众多的建模语言,用户没有能力区别不同语言之间的差别。 在众多的建模语言中,实际上各有千秋,需要取长补短,日臻完善。 虽然不同的建模语言大多相同,但仍存在某些细微的差别,这极大地妨碍了用户之间的交流。,UML是一种建模语言,建模方法 = 建模语言 + 建模过程。建模语言定义了用于表示设计的符号(通常是图形符号);建模过程描述进行设计所需要遵循的步骤。 标准建模语言UML是一种建模语言,而不是一种方法,它统一了面向对象建模的基本概念、术语及其图形符号,为人们建立了便于交流的共同语言

10、。,UML的设计目标,UML是由 Booch,Rumbaugh 和 Jacobson 发起,在 Booch方法、OMT方法和OOSE方法的基础上,集众家之长,几经修改而成。UML的设计目标是: 运用面向对象概念来构造系统模型(不仅仅针对软件) 建立起从概念模型直至可执行体之间明晰的对应关系 着眼于那些有重大影响的问题。 创建一种对人和机器都适用的建模语言。,UML的发展历程,1994.10,Booch 和 Rumbaugh 将 Booch93和 OMT-2 统一,1995.10.发布 UM0.8。 1995年秋,经过 Booch 等三人的努力,1996.6 和1996.10发布UML0.9和U

11、ML0.91。 1996年成立UML成员协会,有700多公司支持UML,占领OO市场的 85%。 1997.1发布UML1.0,1997.9发布UML1.1。 1997.11 OMG采纳 UML1.1作为OO技 术的标准建模语言。 此后,UML的维护工作由Cris Kobryn领导的OMG 版本修改小组RTF ( Revision Task Force)负责. 1998.6: UML V. 1.1 (编辑修改版). 1999.6: UML V. 1.3 (技术终订版). 目前正处于UML V. 2.0阶段,UML的发展历程(续),1999.6 UML1.3,建模技术,构造模型的目的 建模技术要

12、点 系统的多种特性,构造模型的目的,在着手解决一个复杂问题之前,对解决方案进行检测。 用于同客户和其他相关人员进行交流。 加强视觉效果。 对复杂问题进行适度简化。,模型是对事物的抽象。人们常常在正式建造实物之前,先建立模型,以便更透彻地了解它的本质,抓住问题的要害。,建模技术要点,构造模型的基本技术是抽象,应突出与问题有关的特征,将与问题无关的性质略去。 不必追求绝对的真实和完全,只需从期望的目的角度看其是否充分。 应当刻画问题的关键方面,略去相对次要的因素。 建模语言应支持人的由模糊到清晰、由粗到细逐渐完善的认识过程。 应采用可视化图形建模语言。,系统的多种特性,在功能和性能方面:功能正确,

13、性能良好(效率要高)。 在非功能方面:鲁棒性、可扩充性、可再用性、兼容性、可移值性、可验证性、完整性以及易使用性等方面要好。,一个系统应具有多方面的特点:,一个系统要从多个视角去描述。 一个视图可能包含多个模型图,每张模型图都应当简单明了,易于交流。,UML的模型图,UML定义了 5 类、共 9 种模型图:,用例图: 从用户角度描述系统的功能,并指出各功能的操作者。 静态图:类图、对象图和包图(在UML 1.1 中,包图不再看作一种独立的模型图)。 行为图:状态图,活动图。 交互图:顺序图,合作图。 实现图:构件图描述部件的物理结构以及各部件之间的依赖关系;配置图定义系统中软硬件的物理构架。,

14、关于保险业务的一张用例图,静态图:类图、对象图和包图,静态图包括类图、对象图和包图,用以描述模型中类及其实例之间的静态关系。 类图用于定义系统中的类,包括描述类之间的关系(关联、继承、聚合)以及类的内部结构,即类的属性和操作。 对象图显示类的对象实例,一个对象图是类图的一个实例。 包图由包或类组成,主要表示包与包、或包与类之间的关系。包图用于描述系统的分层结构。,关于金融贸易的一张类图,类图和对象图,行为图:状态图,活动图,行为图包括状态图和活动图,描述系统的动态模型和组成对象间的交互关系。 状态图描述一类对象的所有可能的状态以及事件发生时状态的转移条件。 活动图描述为满足用例要求所要进行的活

15、动以及活动间的约束关系。使用活动图可以很方便地表示并行活动。,一部电梯的状态图,一台打印机服务器的活动图,交互图:顺序图,合作图,交互图包括顺序图和合作图,它描述对象间的交互(动态合作)关系。 顺序图:用以显示对象之间在时间顺序方面的动态合作关系。因此,如果强调时间和顺序,应当使用顺序图。 合作图:着重描述对象间的通信方面的动态合作关系。因此,如果强调通信关系,则可以选择合作图。,一台打印机服务器的顺序图,一台打印机服务器的合作图,实现图:构件图,配置图,实现图包括构件图和配置图。 构件图:描述部件的物理结构以及各部件之间的依赖关系。 配置图:定义系统中(特别是在分布式及网络环境中)软硬件的物

16、理构架。,反映程序代码构件之间 依赖关系的构件图,描述系统物理构架的配置图,DecNet协议,UML的基本视图,UML的用例视图 UML的逻辑视图 UML的构件视图 UML的并发视图 UML的配置视图,UML的五类基本视图,UML的五类基本视图(续),用例视图:从系统外部执行者的角度理解、展示系统功能。 逻辑视图:从系统的静态结构和动态行为的角度展示系统内部功能性设计。 构件示图:展示代码构件的组织结构。 并发视图:展示系统的并发性,刻画并发系统中的通讯和同步问题。 配置视图:展示系统的物理的体系结构,其中用到的计算机和各种设备称作节点。,UML的用例视图,从系统外部执行者的角度理解系统的功能

17、:它描述执行者与系统的交互,其执行者可以是一个用户,也可以是另一个系统。 用例图面向客户、建模人员、开发人员和测试人员,是系统模型图的核心。 用例视图:用例图和活动图描述。 一张用例图是系统的一种用途的描述;一组用例图描述了整个系统所期望的用途。,UML的逻辑视图,描述系统如何提供要求的功能: 静态结构: 类(界面,内部结构);对象;关系 用类图和对象图描述。 动态行为: 对象之间相互发送消息而引发的动态合作关系 用状态图、顺序图、合作图和活动图描述 各种特性:永久性,并发性 主要是面向设计人员和开发人员,UML的构件视图,描述实现的各个模块及其相互之间的关系: 模块的内部结构 模块间的依赖关

18、系 关于各构件的一些附加信息: 资源分配(构件的责任) 其它管理信息,如开发工作的进展报告等 主要面向开发人员 构件视图:由构件图组成,其中构件表示不同类型的代码模块,UML的并发视图,系统中进程和处理器的划分与任务的分配 属于非功能性特性: 着眼于资源的有效利用 并行执行,并发地执行多线程控制,处理线程之间的通信和同步 处理来自外部环境的同步事件 面向开发人员和系统集成人员 描述并发视图的主要模型图: 动态图:状态图,合作图,活动图 实现图:构件图,配置图,UML的配置视图,展示系统的物理配置,如计算机和其它设备(统称结点)及其相互之间的连接关系,包括在物理的体系结构中如何配置构件的映像关系

19、。 面向开发、集成和测试人员。 配置视图用配置图描述。,面向对象描述的三个层面,1:层次间没有分解对应关系2:每个面向对象描述元素都可对应到这三个层面,!,UML的主要特点、目的和应用领域,UML的主要特点 使用UML的目的 UML的应用领域,UML的主要特点,UML统一了Booch,OMT和OOSE等方法中的基本概念:用例图从OOSE来;类图从OMT和Booch等方法来;实现图(构件图和配置图)从Booch的模块图和过程图来。 UML吸取了OO技术领域各流派的长处:状态图从 Harel 而来;活动图从工作流图而来;合作图从Booch的对象图和Fusion的对象交互作用图等而来;等等。 在演变

20、过程中UML提出了一些新的概念。,使用UML的目的,软件开发的过程犹如雕琢一件艺术品,由无形到有形,由粗到细。但软件开发的最终形式必须生成程序代码。因此当考虑使用UML时,一定要想清楚,使用UML的目的以及对编写代码有何帮助。,学习面向对象技术 和领域专家交流 帮助理解全局,学习面向对象技术,UML的各种模型图,其中用例图描述系统的功能及其外部的使用者,确定谁使用系统以及做什么。 类图描述系统的静态构架,即构成系统的各种对象类及其相互关系。对象图是类图的实例化,描述系统在某个时刻可能包含的对象和相互关系。 行为图和交互图描述系统的动态行为。 构件图和配置图描述系统实现体的构成及其在硬件环境中的

21、配置情况。,和领域专家交流,有效的方法是使用用例。一个用例描述了系统的某一侧面,所有用例构成了系统的整个外观。用例也有助于制订项目规划和对问题进行深入理解。 类图很有用,但应注重在概念层上使用。应将每个类对应用户心中一个概念,并用用户的语言来命名和定义。 对于侧重于工作流过程的应用系统,活动图非常有用。活动图也有助于对实际业务流程中的并行特性进行自然描述。,帮助理解全局,对于大型项目,常常只见树木不见森林,采用UML有助于理解全局。譬如,类图可了解系统中有哪些类型的事物,哪些需要作进一步的考察。 对大型软件,无论概念层、说明层或实现层,其模型都可能十分庞大。此时通常需要分层次地绘制很多张模型图

22、,并为整个软件系统建立全局路线图。在较高的抽象层次,用包图刻画类图的分组情况。,UML的应用领域,UML是一个通用的标准建模语言,可对任何具有静态结构和动态行为的系统进行建模。 UML适用于系统开发的不同阶段:需求分析阶段用用例;分析阶段用类图;实现阶段用动态模型;构造阶段用OO编程语言。 在测试阶段:单元测试用类图;集成测试用部件图和合作图;系统测试用用例图。 在应用标准建模语言UML时,需要有相应的开发工具来支持。,小 结,关于面向对象技术的评论; 基本的模型元素; 关于视图与模型图的评注。,关于面向对象技术的评论,OO技术的构造方法把软件系统当作结构化抽象数据类型实现的集合。UML为OO

23、技术提供了强有力的支持。 在OO构架中,每个模块建造在一个数据抽象(一组数据结构)上,由作为正式接口一部分的服务及其特性来描述。 OO系统的模块称为类,其接口对应于表示抽象数据类型规格说明中功能的服务。OO技术允许一个抽象数据类型有多个实现。,基本的模型元素,关于视图与模型图的评注,不同的视图可以有少量的重叠,一张图可以同时属于多个视图。 图与图之间应有内在联系,最终由这些图描绘系统的全貌。 视图之间和图与图之间,须便于交叉浏览和追踪分析检查。 视图:展示系统的不同侧面;是由一组模型图构成的一个抽象;一组视图构成一个系统的完整画卷。 模型图:描述视图内容的图形;UML有九种不同类型的模型图。 模型元素:模型图用到各种OO概念(如类、对象、消息等)以及这些概念之间的关系(如关联、依赖和泛化等);一种元素可在多种图中出现,但其表示符号和语义不变。,谢谢!,吴 际 82317649(O) ,

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

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报