1、 2006, ZTE Corporation. All rights reserved.,1,UML教程,关于UML语言语意的交流 IT中心开发一部 郭天良,2,版本修订记录,课程安排,面向对象的理论 UML语言 利用UML进行面向对象的建模,面向对象的理论 UML语言 利用UML进行面向对象的建模,课程安排,5,面向对象设计的学习路线,重点要介绍内容,6,议程,面向对象的理论 UML语言 利用UML进行面向对象的建模,7,面向对象的理论,面向对象技术概述 面向对象技术发展 面向对象与结构化 转化到面向对象,8,面向对象技术,是一种看待计算机软件系统的观点 是一种系统分析和设计的思想 是一种编
2、程方法 是一组设计模式 是一种编程语言设计思路 是实践者的日常工作,9,面向对象技术定义,面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动,面向对象技术基于对象概念,以对象为中心,以类、组合、继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻划客观世界和设计、构建相应的软件系统,面向对象=对象 + 类 + 消息 + 继承 + 多态,10,面向对象方法学,面向对象是软件方法学的返璞归真:面向用户,软件科学的发展历程中出现过许多“面向”,软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,是软件理论的返朴
3、归真,面向对象,11,面向对象技术优点,沟通 顺应人类思维习惯,让软件开发人员在解空间中直接模拟问题空间中的对象及其行为,PUSH EBX MOV EBX,EDX MOV EDX,EAX SHR EDX,16 DIV BX,AHare.Run; ALion.Catch(AHare); ALion.Kill(AHare); AHare.Dead; ALion.Eat; ALion.Happy;,在计算机中模拟现实世界的事和物,12,面向对象技术优点,稳定 较小的需求变化不会导致系统结构大的改变 当需求变化时,功能:最易变 数据:较易变 对象:较稳定,稳定性增加,用较稳定把不稳定的包起来,13,面
4、向对象技术优点,复用 代码重用:类库、框架等重用机制 能提高质量,减少由于编制新的系统代码而产生的成本 通过继承、关联、封装、多态等手段,软件开发组越大,组中每个成员的生产率就越低 -Philippe Kahn, Borland公司创始人,构造大型软件不能靠堆人,14,面向对象技术优点,改善软件结构(模块化与封装),提高软件灵活性 增加可扩展性 支持增量式开发,支持大型软件开发 ,15,面向对象的理论,面向对象技术概述 面向对象技术发展 面向对象与结构化 转化到面向对象,16,面向对象技术发展历史,60年代后期:Simul67,基本思想 70年代后期:Smalltalk80,实用化 80年代:
5、理论基础,C+等,商业化 90年代:面向对象与设计方法学 B.H. Sellers等提出喷泉模型 G. Booch提出面向对象开发方法等 P. Coad和E.Yourdon提出OOA和OOD Jacobson提出OOSE 1997年:UML,17,面向对象技术发展现状,OO成为最重要的软件开发方法 OO在GUI、模拟系统、游戏开发、应用框架、软件构件化领域大显身手 Java、UML 与 RUP 构件技术 (CORBA、COM、EJB、.Net) 类库与设计模式,18,面向对象技术发展未来,OO的形式化与自动化 OO构件、设计模式的丰富将进一步提高软件开发的效率和质量 软件开发人员必须从 Thi
6、nk Procedurely转变为 Think Object-Orientedly 面向服务(SOA),19,面向对象的理论,面向对象技术概述 面向对象技术发展 面向对象与结构化 转化到面向对象,20,面向对象 VS 过程,扬弃,不是否定,21,面向对象 VS 过程,Programming,22,面向对象 VS 过程,结构化方法(SA+SD+SP),面向对象的方法,问 题 域,问 题 域,结构化分析,分析与设计的鸿沟,结构化设计,结构化编程,如C语言,需求工程,OOA&D,OOP,如Java语言,测 试,计 算 机 系 统,测 试,计 算 机 系 统,自然语言,编程语言,自然语言,OO编程语言
7、,数据流图 数据字典,模块和过程,需求模型,对象模型,OO方法,OO建模语言,23,面向对象 VS 过程,24,面向对象 VS 过程,结构化设计用算法刻画数据的递归关系,而面向对象思想直接用对象表达递归关系“模拟现实世界” 结构化设计中,数据是死的,全部依赖算法操作,而面向对象中,数据是活的,所谓的smart data 结构化设计更像是一个人在解决所有的问题,而面向对象设计更像是一个团队的分工协作,25,面向对象 VS 过程,使用得当,面向对象设计具有更大的灵活性,更好的模块化,可以进行更大规模的设计 但同时,面向对象设计和开发的难度更大,因为除了要考虑算法之外,还要考虑对现实世界的模拟、对象
8、的识别和职责分配等等一系列问题 优秀的面向对象设计需要学习更多知识和技术,掌握一系列设计原则和模式 UML图形化工具有助于表达和交流设计思想。但是否可以做到“无代码编程”,还在争论中,26,面向对象的理论,面向对象技术概述 面向对象技术发展 面向对象与结构化 转化到面向对象,27,什么是建模?,建模就是认识现实世界,客观世界,主观世界,认识世界,改造世界,世界是什么样的呢?,28,模型是对现实世界的认识,不同类型的人有不同的世界观,持不同的世界观就会得到对现实世界的不同认识 建立不同的模型,模块,函数,功能,类,关联,对象,29,模型体现现实世界,只存在同一个现实世界,模型没有对错、只有符合建
9、模人目的多少之分,30,UML建模,建模是最终目的 OO是一种建模理论 UML是一种体现OO的建模语言,是将OO理论转化为实践的工具,面向对象的理论 UML语言 利用UML进行面向对象的建模,课程安排,32,UML语言,UML语言概述 理解UML元素,33,UML语言,UML语言概述 理解UML元素,34,UML诞生,公众 反馈,OOPSLA95 Unified Method 0.8,工业化标准化统一化 分散的 各部分,Booch93 OMT-2,1996.6和1996.10 UML 0.9&0.91,1997.9公布 UML 1.1,1997.1公布 UML 1.0,合作伙伴意见,1997.
10、11.17 UML 1.1被OMG 接纳为标准,Booch91 OMT-1 其他方法 OOSE,35,UML ?,Unified Modeling Language(统一建模语言)是对象管理组织(OMG)制定的一个通用的、可视化的建模语言标准,可以用来可视化(visualize) 、描述(specify)、构造(construct)和文档化(document)软件密集型系统的各种工件(artifacts,又译制品),36,UML现状,目前通用的是UML 1.x版 主要UML 1.3、UML 1.4 2003年3月正式发布UML 1.5 UML 2.0 2003年6月OMG采纳了UML 2.0的
11、Superstructure的提案 MDA ,37,UML结构,UML Structure,构造块 building blocks,公共机制 common mechanisms,构架 architecture,基本UML建模元素、关系和图,达到特定目标的公共UML方法,系统架构的UML视图,38,构造块,构造块 building blocks,元素 things,关系 relationships,图 diagrams,建模元素本身,把物件联系在一起,关系说明两个或多个物件时如何语义相关的,UML模型的视图,它们展现物件的集合,“讲述关于软件系统的故事”,是我们可视化系统将做什么(分析级图)或者
12、系统如何做(设计级图)的方法,39,UML的元素,元素 things,结构元素,行为元素,分组元素,注解元素,UML模型中的名词,如类、接口、协作、用例、活动类、组件、节点,UML模型的动词,如交互、状态机,包,它用于把语义上相关的建模元素分组为内聚的单元,注解,它附加到模型以捕获特殊信息,同黄色便笺很相像,40,关系,关系 relationships,关联 association,依赖 dependency,泛化 generalization,实现 realization,描述对象之间的一组链接,物件的改变引起依赖物件的语义改变,一个元素是另一个元素的特化,而且它可以取代更一般的元素,类元之
13、间的关系,一个类元说明一份契约,另一个类元保证实现该契约,41,图,图 diagrams,类图 class diagrams,对象图 object diagrams,组件图 component diagrams,部署图 deployment diagrams,用例图 use case diagrams,顺序图 sequence diagrams,协作图 collaboration diagrams,状态图 statechart diagrams,活动图 activity diagrams,静态模型 (系统结构),动态模型 (系统行为),42,公共机制,公共机制 common mechanism
14、s,规格说明 specifications,修饰 adornments,公共分类 common divisions,扩展机制 extensibility mechanisms,43,规格说明书,UML模型至少具有两种维度: 图形维度:允许使用图和图标可视化模型 文本维度:由各种建模元素的规格说明所组成 规格说明 模型元素的特征和语义的文本描述模型的“肉” 形成了承载模型的语义背板(semantic backplane),赋予模型意义,各种图仅仅是该背板的视图或者可视化投影 death by diagram由于图形而死亡,44,修饰,修饰:图中建模元素上暴露的信息项以表现某个要点 任何UML图仅
15、是模型的视图,因此,只有在修饰增强了图的整体清晰性和可读性或者突出模型的某些重要特征时,你才应该表示那些修饰,Window,45,公共分类,公共分类描述认识世界的特殊方法 类元(Classifier)和实例 类元:一类事物的抽象概念;如bank account 参与者、类、类元角色、组件、数据类型、接口、节点、信号、子系统、用例 实例:一类事物的特定实例;如my bank account 接口(interface)和实现 接口:说明事物行为的契约(做什么) 实现:事物是如何工作的特殊细节(如何做),46,扩展机制,约束:允许对模型元素添加新的规则 构造型(stereotypes):基于已有的建
16、模元素引入新的建模元素 The means by which to extend the UML Stereotypes convey key properties to the model reader A number of stereotypes are packaged along with the UML Can define your own stereotypes 标记值:允许为模型元素添加新的特性,是带有相关值得关键字,47,架构,Architecture The organizational structure of a system, including its decom
17、position into parts, their connectivity, interaction mechanisms, and the guiding principles that inform the design of a system 构架是一个系统的组织结构,包括系统分解成的各个部分、它们的连接性、交互机制和通知系统设计的向导规则 IEEE:在其环境中系统的高级概念,48,4+1视图,49,4+1视图,Use Case View End-user: Functionality 这些视图由用例视图所统一,它描述项目干系人(stakeholder)的需求;所有其他视图都是从用例
18、视图派生而来,该视图把系统的基本需求捕获为用例并提供构造其他视图的基础 Logical View Analysts/Designers: Structure 系统功能和词汇;描述问题域的词汇,作为类和对象的集合。重点是展示对象和类是如何组成系统、实现所需系统行为的,50,4+1视图,Process View System integrators: Performance, Scalability, Throughput 系统性能、可伸缩性和吞吐量;建模在我们系统中的可执行线程和进程作为活动类。其实,它是逻辑视图面向进程的变体,包含所有相同的制品 Implementation View Prog
19、rammers: Software Management 系统组装和配置管理;对组成基于系统的物理代码的文件和组件进行建模。它同样展示出组件之间的依赖,展示一组组件的配置管理以定义系统的版本 Deployment View System engineering: System Topology, Delivery, Installation, Communication 系统的拓扑结构、分布、移交和安装;建模把组件物理地部署到一组物理的、可计算节点上,如计算机和外设上。它允许你建模横跨分布式系统节点上的组件的分布,51,核心工作流和模型,52,总结:UML结构,53,UML 9种图,类 图:类
20、以及类之间的相互关系 对象图:对象以及对象之间相互关系 组件图:构件及其相互依赖关系 部署图:构件在各节点上的部署顺序图:强调时间顺序的交互图 协作图:强调对象协作的交互图 状态图:类所经历的各种状态 活动图:对工作流建模 用例图:需求捕获,测试依据,结 构,行为,用例图,静态图,实现图,交互图,行为图,54,UML建模工具,IBM Rational Rose 2003 Borland Together 7.0 Microsoft Visio 2003 Sybase PowerDesigner 10 “非程序员杂志”第26到30期UML工具一览,列出了约129个UML开发工具,55,UML语言
21、,UML语言概述 理解UML元素,56,下一步?,需求,用例,面向对象 分析设计,结构化 分析设计,其它方法,自己的 土方法,系统实现,用例图说明,实施部署,57,用例与用例图,场景:是用来描述用户和系统之间交互的顺序的步骤 A scenario is a sequence of steps describing an interaction between a user and a system,用例:是为了达到某一用户目标而组合在一起的一组场景 A use case, then, is a set of scenarios tied together by a common user go
22、al.,用例图:用来显示在系统(或其它实体)内的用例与系统参与者之间的关系 A use case diagram shows the relationship among use cases within a system or other semantic entity and their actors,主要使用场合:需求获取、定义、分析,58,用例图元素,59,考勤系统,60,活动图元素,61,活动图,62,下一步?,需求,用例,面向对象 分析设计,结构化 分析设计,其它方法,自己的 土方法,系统实现,面向对象分析设计相关图说明,实施部署,63,UML 9种图,类 图:类以及类之间的相互关
23、系 对象图:对象以及对象之间相互关系 组件图:构件及其相互依赖关系 部署图:构件在各节点上的部署顺序图:强调时间顺序的交互图 协作图:强调对象协作的交互图 状态图:类所经历的各种状态 活动图:对工作流建模 用例图:需求捕获,测试依据,结 构,行为,用例图,静态图,实现图,交互图,行为图,64,类图元素,65,类图,66,顺序图元素,67,面向对象的理论 UML语言 利用UML进行面向对象的建模,课程安排,69,Demo,一个文本编辑器的例子,70,参考资料,UML用户指南 Applying UML and Patterns UML Distilled, 2006, ZTE Corporation. All rights reserved.,谢 谢,