收藏 分享(赏)

UML基础教程.doc

上传人:精品资料 文档编号:7664509 上传时间:2019-05-23 格式:DOC 页数:15 大小:95.50KB
下载 相关 举报
UML基础教程.doc_第1页
第1页 / 共15页
UML基础教程.doc_第2页
第2页 / 共15页
UML基础教程.doc_第3页
第3页 / 共15页
UML基础教程.doc_第4页
第4页 / 共15页
UML基础教程.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、第一章 UML 的基本原理重要技能1.1 了解软件建模的原因1.2 理解统一建模过程1.3 什么是 UML1.4 认识 UML 的构件1.5 寻找有效的 UML 建模工具1.1 了解软件建模的原因1.1.1 分析、设计与实现依赖大量的分析,而不是设计,甚至也不是实现。行业专家:谁要使用这个系统重要提示:1、模型是真实世界的简化。用模型表示系统的行为和结构。2、使双方(需求方、开发方)更好地理解需要开发的系统。1.1.2 软件生命周期模型三种:瀑布型螺旋型(迭代型)增量型1.2 理解统一建模过程UML(Unified Modeling Language):建模语言、建模方法(不是设计方法)RUP

2、(Rational Unified Process):统一过程应用于 UML。即用 UML 来严格实施 RUP。软件开发过程:是将产品或者系统从概念形成为成品所遵循的一系列阶段。在 RUP 中有 4个阶段:初始阶段(Inception):确定要开发的系统,包括其内容及业务。筹划阶段(Elaboration):实施详细的设计,确定系统的功能。构建阶段(Construction):编写软件。转换阶段(Transition):将系统交付给用户(rolling out)1.2.1 初始阶段:确定业务需求,建立用例模型。1.2.2 筹划阶段(重点):设计团队从用例进行工作以得到对如何构建系统的统一认识。

3、用例分解-域、子系统、与之相关的业务对象设计(这是一个重要环节)-域模型- 模型图-类和类成员模型1.2.3 构建阶段:进行实际的软件产品构建。开发部分是一个增量过程。1.2.4 转换阶段:1.3 什么是 UML可以应用于任何软件开发过程的标记法和语义语言。1.4 认识 UML 的构件主要构件:结构图和行为图1.4.1 结构图(Structural Diagrams)类图和实现方式图1、 类图和对象图类图(class diagram):用于表示不同的基础构件(类) ,它们之间的关系以及它们属于哪个子系统。类图包括属性、操作,以及许多类型的角色和关联。对象图(object diagram):与类

4、图非常相似,用于处理类的实例-对象。多用于具体示例的设计。前者是一般,后者是单独。2、 组件图和部署图组件图(component diagram):用于说明系统的组件之间如何进行交互,它将显示源文件与类之间的依赖性,以及它们属于哪个组件。组件图成为 UML 核心功能。部署图(deployment diagram):用于组件安装之后在哪里配置组件,以及这些系统如何交互建立模型。1.4.2 行为图(behavioral diagram )用于显示组件、类、用户和系统之间的流程。1、 用例图(use case diagram)包括用例和参与者,用来说明这两个集合之间的关系。它是分析阶段的起点。以求把

5、系统的整个结构和有效性反映给非技术人员,它还可以图示化系统的主事件流程,也可以图示化选择流程。2、 活动图(activity diagram)用于分析较复杂的用例中的行为,并显示它们之间的交互作用。活动图是用于对业务工作流程进行建模的。常用于表示较为复杂的业务活动,以帮助你确定出用例或用例之间及用例内部的交互作用。3、 序列图(sequence diagram)用于显示参与者与对象之间,以及对象之间的交互作用。消息由参与者发送至对象,由对象发送至对象,再由对象发送至参与者以显示系统中的控制流。4、 协作图(collaboration diagram )用于将类图带入下一个步骤。它表示了在域建模

6、过程初期的各个步骤中所创建的对象之间的交互作用及相互关系。5、 状态图(statechart diagram )用于对子系统的行为建模、对类与系统界面的交互作用建模,以及实现用例。用于分析和设计阶段之间的过渡时期,是可视化应用程序流程的极好方法。第二章用例图重要技能2.1 定义用例图2.2 找到用例图建模的原因2.3 认识用例图的标记符组件2.4 理解泛化技术2.5 理解如何使用包含关系和扩展关系2.6 学习如何建立用例图模型2.1 定义用例图它设计新系统的起始点。明确业务需求,是有关系统细节的最高形式。用例图说明的是谁使用这个系统以及他们使用该系统可以做些什么。2.2 找到用例图建模的原因用

7、例图为我们提供了系统的一个概览,对系统提供给用户的功能进行说明。用例图与用例的不同之处:用例简单地描述了用户要求系统所具备的动作。用例图把用户、用例以及这两者包含在一个系统中,或者一个或多个子系统中。同时用例图也是测试产品的一个好方法。2.3 认识用例图的标记符组件解析一个用例图,可以发现它包含 4 个基本组件。系统、参与者、用例、关系2.3.1 系统系统是为用户执行某类功能的一个或多个软件构件。一个系统可能会有自己的子系统,它们是系统中被组织起来的组件。2.3.2 参与者用于表示使用系统的对象,它可以是一个人或另一个系统,不要以实际人名命名,应该以参与者在系统中扮演的角色命名。2.3.3 用

8、例用例是用户期望系统具备的动作。在命名中不能使用冒号。因为在说明某个用例所属包时会用到它。2.3.4 关系用例图的实质内容-关系(通信):由一条连接参与者与用例的线来图示说明。2.3.5 子系统将一个大型系统分为更易于维护的构件,这种构件就是子系统。如 Development Environment includes Compile、Editor、Debugger、Source Control2.4 理解泛化技术泛化是一种用于表示 UML 中项目的继承的技术。它可以应用于参与者和用例来表示其子项从父项继承功能,而且还表示父亲的每个孩子都有着略微不同的功能或目的以确保自己的唯一性。2.4.1 用

9、例与用例的关系2.4.2 参与者与参与者的关系2.5 理解如何使用包含关系和扩展关系包含和扩展是在两个用例紧密相关时,关联用例的两种方法。包含关系用于表示用例为执行其功能从其他用例引入功能。扩展关系则表示用例可以通过其他用例得到扩展。2.5.1 包含关系包含着包含(including)和被包含(included)2 种类型的用例。前者是一个从后者获取功能的用例。后者的功能被前者包含了。当 2 个以上的用例有相同的功能,则可以将这个功能分解到另一个用例中。或当一个用例功能太多时,可以用包含关系建模 2 个小用例。在已建立模型的系统中确定出被包含用例是十分明智的,因为这有助于确定系统中哪些功能可以

10、重用,这也是基于组件设计和开发的主要益处之一。2.5.2 扩展关系包含着扩展(extending)和被包含(extended)2 种类型的用例。后者在一定条件下可以可选择地被前者中的功能扩展。一个被扩展用例可以有多个扩展点,而所有的扩展点必须对被扩展的用例为真。扩展与包含关系相似,只是扩展只能在特定的设计点发生,称这个点为扩展点。2.6 学习如何描述用例见成绩管理系统.mdl 文件切记:UML 建模是一个迭代过程,它不是一个简单记录数据的过程。没有人希望你在第一轮建模时就把这个图拿出来。2.7 学习如何建立用例图模型创建用例图的 5 项任务:1) 找出系统中的参与者和用例2) 区分用例的优先次

11、序3) 细化每个用例4) 建立用例模型结构5) 建立用户界面的原型切记:一对多,多对一2.7.1 找出系统中的参与者和用例由系统分析员完成2.7.2 区分用例优先次序由系统构造师完成:找出最关键、最艰巨、可以重用的任务,如 Record Grades。2.7.3 细化每个用例练习:构建一个用例图销售产品系统的需求第三章活动图的工作流建模重要技能3.1 定义活动图3.2 了解为什么建模活动图3.3 确定活动图的标记符组件3.4 学习如何使用条件3.5 学习活动图中的其它标记符3.6 学习如何建模活动图活动图的作用:在面向对象的系统的不同组件之间建模工作流。用它能够演示出系统中哪些地方存在功能,以

12、及这些功能和系统中其它组件的功能如何共同来满足前面用例图建模的商务需求。3.1 定义活动图使用活动图为把用例带入下一级分析阶段的方式。活动图用于系统分析阶段对系统充分描述,允许读者了解系统的执行,以及如何根据不同的条件和刺激改变执行方向。3.2 了解为什么建模活动图进一步规划用例,标识用例的前后条件,并且发现新的用例。3.3 确定活动图的标记符组件3 种:3.3.1 活动(活动状态)指示要完成某项工作的指示符。 (圆角较大)3.3.2 状态活动内部的值,与活动类似,如 stopped(状态) 、stop(活动) ,2 种特殊的状态:开始、结束。 (圆角较小)3.3.3 转移用来显示从状态到活动

13、、活动之间或者状态之间的控制流。3.3.4 综合运用3.4 学习如何使用条件条件是让转移修改任何工作流的方向所必需的。使用条件来增强活动图。使用控制点和决策点可以建模修改活动图流程的条件。3.4.1 控制点(表达式)控制点(guard):用来允许工作流仅沿着满足预置条件的方向继续。如 guard_SaveFile 活动图3.4.2 决策点(标记)决策点需要对工作流继续的方向做出决策。使用菱形标记符。在带有大量不同条件的大型图中尤其有用。常规时与控制点作用相同。控制点也用于决策点,但是是从转移分支到决策点,而不是从指涉的活动到决策点。决策点的使用增加了阅读活动图的方便。3.5 学习活动图中的其它

14、标记符事件(event)和触发器(trigger)的用法与控制点类似,区别是前者是被触发来把工作流移到对应的方向,而后者是通过表达式的限制来控制工作流。泳道(swim lane)用来根据活动绘制对象的域来隔离它们。分岔(fork)和联结(join)用于并行处理的转移(在两个转移同时发生时) 。3.5.1 事件(event)和触发器(trigger )事件可以包含在转移中来强制控制工作流采取某个方向。3.5.2 泳道增强活动图的可读性。明确对象或域与哪些活动关联。当模型中使用多个对象时强力推荐使用泳道。3.5.3 分岔和联结分岔用于开始并行处理,联结用于把并行处理流转换为单向处理流。分岔的每一分

15、支都是独立的活动图,与其它分支没有任何关系。每一个工作流不必等待其它的工作流,直到遇到联结为止。3.6 学习如何建模活动图创建活动图共有 5 个任务:1) 标识需要活动图的用例2) 建模每一个用例的主路径3) 建模每一个用例的从路径4) 添加泳道来标识活动的事务分区5) 改进高层活动并添加到更多活动图中注意:Unified Process 是一个反复的过程,要比较模型修改前后的对整个工程的影响。3.6.1 标识用例以教师修改学生分数用例为例。Update Grades(包括 Save Grades 和 Load Grades)3.6.2 建模主路径在开始创建用例的活动图时,往往利用一条明显的主

16、路径执行工作流,然后再进行扩展。主路径从开始到结束,没有任何错误或判断的从路径。3.6.3 建模从路径有了主路径后,应该检查一下其他可能的工作流情况。如错误处理或执行其它活动。3.6.4 添加泳道抽象对象为:1)Teacher(用例的参与者)2)Website(提供后端功能的泛化组织)利用泳道再一次向活动图添加更多的细节。要添加状态,以便指示现在处于哪一个转折点。第四章 使用顺序图建模行为重要技能4.1 定义顺序图4.2 为什么要建模顺序图4.3 了解顺序图的标记符组件4.4 理解如何使用消息进行通信4.5 学习顺序图使用的其他技术4.6 学习如何建模顺序图4.1 定义顺序图顺序图:是用来显示

17、你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图用来建模以时间顺序安排的对象的交互,并且把用例行为分配给类。它贯穿 Unified Process 描述的软件开发生命周期的始终。4.2 为什么要建模顺序图1、目的用来实现用例。2、对用例指定的泛化功能所缺乏的解释,为设计阶段提供足够的信息。3、演示某个用例最终产生的所有的路径。4.3 了解顺序图的标记符组件2 个主要的标记符组件:活动对象和这些活动对象之间的通信。其中消息是顺序图的关键。因为它说明了对象之间的控制流,对象是如何交互的,以及什么条件会改变控制流。4.3.1 活动对象:系统的参与者或者任何有效的系统对象(对象实例类的实

18、例、参与者) 。生命线:按照时间的顺序对象所发生的事件。4.3.2 消息:不同活动对象之间(相邻或不相邻或自己)的通信。4.4 理解如何使用消息进行通信消息可以包含条件。4 种类型的消息:1、 同步(Synchronous):指示在消息完成之前,以及该消息发送的任何消息完成之前,工作流被中断。2、 返回(Return):显示控制流返回到调用的活动对象,并且同步消息完成了其操作。3、 异步(Asynchronous):用于被返回的消息,活动对象不等待来自该消息的响应。4、 简单(Flat):不分同步、异步。注意:什么时候应该建模活动图,什么时候应该建模顺序图?4.5 学习顺序图使用的其他技术4.

19、5.1 创建对象CreateDestroy在顺序图的控制流过程中创建对象目的有多种:1) 使用一个对象(一个消息框)向用户显示一条错误消息;2) 打开数据库连接4.5.2 使用状态状态属于对象,直接在对象的生命线上存在4.5.3 分支和从属流两种方法来修改顺序图的控制流:使用分支和从属流。控制流的改变是由于不同的条件导致控制流走向不同的道路。分支允许控制流走向不同的对象。从属流还允许控制流根据条件改变,但只允许控制流改变为相同对象的另一条生命线分支。4.6 学习如何建模顺序图创建顺序图包含 4 项任务:1) 确定需要建模的工作流;2) 从左到右布置对象;3) 添加消息和条件以便创建每一个工作流

20、;4) 绘制总图以便连接各个分图。4.6.1 确定工作流1)教师成功检查学生的分数;2)教师试图检查某个学生的分数,但是该学生在系统中不存在;3)教师试图检查某个学生的分数,但是该学生的分数在系统中不存在;4.6.2 布置对象1)从左到右2)参与者和对象4.6.3 添加消息和条件每个工作流作为独立的顺序图建模;先建立基本的、独立的(成功) ,如 1)再以独立的顺序图建模从属工作流(出错条件) 。注意:使用条件来指示在什么时候发送什么消息4.6.4 绘制总图把所有独立的工作流连接为一个总图。第五章使用类图定义域模型重要技能5.1 定义类图5.2 为什么要建模类图5.3 学习类图的标记符组件5.4

21、 学习如何建模类5.5 学习如何为特性提供信息5.6 学习如何为操作提供参数5.7 学习如何建模类图面向对象设计的基础是使用类;类是用来代表现实事物或功能的构造块;通过学习建模类及其相互之间的关系,在编写代码之前对系统拥有全面的认识。5.1 定义类图类图是由组成系统或者子系统的构造块构成的静态图;类图的建模贯穿工程的分析和设计阶段的始终;类之间的关系可以反映执行流的路径(与活动图和顺序图中的路径相关) 。5.2 为什么要建模类图更详细描述产品;提供高层功能的类和底层(数据访问和通讯)功能的类,也是一个反复的过程;显示系统中的执行流的每一条,提供所需功能的位置,及其处理的信息;指出数据在哪里,类

22、的特性、操作在哪里。5.3 学习类图的标记符组件类图由类及其关系组成;类包含特性和操作。5.3.1 类类是类图的主要成分;类是表现事物的,具有状态(通过特性的数据来记录) ,提供功能(使用操作或者方法完成);只封装对其重要的信息和功能;只封装在系统环境中对其重要的所有信息。5.3.2 关系关联(association):给定类的对象个体之间的语义连接,是两个类或多个类之间的一个关系。包含多重性,有连接、聚合和组合。5.4 学习如何建模类四种不同方式: 不显示特性和操作 只显示特性 只显示操作 同时显示特性和操作5.4.1 特性和操作特性用来表示类特有的数据,并最终提供类的状态。操作用来为与建模

23、的类相关的其它类提供功能。注意它们之前的符号含义。5.4.2 对象:类实例对象是类的实例。对象的标记符号:对象名:类名+下划线类的实例具有状态。它具有特性值,使得它在某种意义上是唯一的。许多对象可以具有相同的特性值,也可以不同。特性值显示在特性名之后。5.4.3 包包是一种把类分组为通用类目的方式。在指定类和对象所属包时,需要在类名前追加包名和双冒号(:)的形式表示。即对象名:包名:类名5.5 学习如何为特性提供信息1)数据类型:表达方式 特性:数据类型2)初始值:表达方式 特性:数据类型=初始值或默认值3)多重性:某个特性值有多个,如 Grades:Integer=90,95,87,45,1

24、00,994)派生的特性:特性值由数学函数、字符串函数或者将要在应用程序中实现的其它商务逻辑中派生。表达形式:在特性名前加“/” ,并且要附加一个注释。5.6 学习如何为操作提供参数操作可以包含参数列表和返回值。如 ChangePassword(in OldPassword:String ,in NewPassword:String) :Boolean注意:in、out、inoutin:值传递参数,把数据复制件发送到操作,因此操作不会改变值的主备份。inout:操作修改传递到操作的参数值的主备份。out:由操作把值返回给参数。如:RetrieveDataByKey(in Key:String,

25、out ErrorCode:Long):String5.7 学习如何建模类图建模类图需要两个反复执行的步骤:1、 确定类及其关联;2、 确定特性和操作;开始创建类图最好参照点:用例图(成绩管理系统.mdl)5.7.1 确定类和关联1、分析用例图确定类及其关联:分析用例中处理哪些信息,是否需要保存(数据库) ,如:成绩管理系统.mdl 中的 Grades 类和 ReportCard 类。2、通过使用参与者名称确定附加的类。如,参与者:Teacher、Student、Administrator当需要为参与者提供相关信息(名称、登录状态、密码等) ,或为参与者提供功能时,为一个参与者创建一个类。3、

26、 GUI 开发中一个常用技术就是把用户封装到一个类中,然后把实际用户的动作传递到类。4、 检查用例图并确定各个功能所属的类5、 开始创建类的关联6、 为使用自己的类的功能创建类。如 WebSite、Logon7、 标示出类关联之间的多重性。5.7.2 确定特性和操作1、添加特性和操作,以便提供数据存储和需要的功能来完成我们开始工作时的用例图中的用例。2、为特性和操作提供参数、数据类型和初始值。该类图经历了 4 个反复的过程:最高层:适合于让管理人员了解系统的工作流是如何处理的;最底层:适合于开发小组使用;总结:1、 确定可以在用例图中找到的类;2、 关联类,给出它们的关联名词;3、 巩固相似的

27、类;4、 确定任何合适的角色名;5、 为任何已经封装到另一个类中的独立的功能添加类;6、 添加特性和操作以便提供类图中需要的功能;7、 为操作和特性提供数据类型和参数等信息。第六章协作图重要技能6.1 定义协作图6.2 为什么要建模协作图6.3 了解协作图的标记符组件6.4 学习不同的消息类型6.5 深入研究消息6.6 学习如何建模协作图协作图的目的:表示类之间是如何通信的。6.1 定义协作图协作图可以看成是类图和顺序图的交集。6.2 为什么要建模协作图1)协作图用来建模对象或者角色之间交互,描述对象或者角色之间是如何通信的。2)通过发送消息,更清楚了解消息在对象之间传递的路径以及对象或角色需

28、要完成什么功能。3)建模协作图可以更好地解释正在分析的设计。6.3 了解协作图的标记符组件6.4 学习不同的消息类型Synchronous(同步消息):用于逐步的通讯中,在继续下一步之前必须完成前一步。Asynchronous(异步消息):用于并行处理的通讯中。Flat message(简单消息):消息类型对于模型而言是未知的或不重要。举例:Compiler、Linker、User-Press Button6.5 深入研究消息1)使用消息完成很多任务。2)枚举消息,按照一定的顺序执行。3)包括控制点条件的消息,以便限制发送哪一条消息。4)可以创建带消息的对象实例。6.6 学习如何建模协作图第七

29、章深入学习类图重要技能7.1 学习聚集和组成7.2 学习关联注释7.3 学习端点标记符7.4 建模多个关联7.1 学习聚集和组成7.1.1 聚集Aggregation:描述两个类之间的整体与部分的关系,其中一个类为整体,由一个或者多个部分类组成。注意:部分类可以独立存在。当整体类销毁时,部分类可以独立存在,部分类销毁时,整体类也独立存在。7.1.2 组成也是一种聚集关联,但是用来组成整体类的部分类不能独立存在。注意:销毁整体类将会同时销毁部分类。部分类至少有一个对于整体类的多重性。7.1.3 使用带有泛化的聚集和组成7.2 学习关联注释7.3 学习端点标记符有序、排序、导航7.4 建模多个关联

30、第八章使用状态图建模行为重要技能8.1 定义状态图8.2 为什么要建模状态图8.3 学习状态图的标记符组件8.4 学习如何指定状态的动作和事件8.5 学习如何使用合成状态8.6 如何建模状态图状态图与活动图的区别:活动图:建模不同区域的工作如何彼此交互。状态图:表示单个对象,以及对象的行为如何改变其状态。8.1 定义状态图建模对象如何改变状态。状态:定义为对象行为在某一个时刻的 snapshot 或者转折点。8.2 为什么要建模状态图1)说明当调用对象的行为时对象的状态如何改变;2)说明基于用户输入的屏幕状态的改变;3)说明复杂用例的状态进展情况。8.3 学习状态图的标记符组件状态图由状态、转

31、移和事件组成。状态:转移:一个状态到另一个状态的处理流决策点:在状态图中可视化地把多个转移从一个状态移到其他多个状态;同步:使用同步条,是为了说明某些状态在哪里需要跟上或者等待其他状态;用来显示并发状态。同步条必须配对;两个或多个转入,只有一个转出。8.4 学习如何指定状态的动作和事件动作和事件用来描述状态如何到达,状态到达时发生了什么。事件:指示什么触发了转移;动作:说明当事件发生时会产生什么行为。5 种基本动作类型:Entry、Exit、Do、Include、Event动作有 2 种标记符:action-label/action、event-name(parameters)guard-co

32、ndition/action8.5 学习如何使用合成状态8.6 如何建模状态图建模状态图步骤:1) 标识出需要进一步建模的实体;2) 标识出每一个实体的开始和结束状态;3) 确定与一个实体相关的事件;4) 从开始状态创建状态图;5) 如果必要则指定建合成状态。8.6.1 标识出需要进一步建模的实体具有清晰、有序的状态的实体最适合使用状态图进一步建模。如 Grade8.6.2 标识出每一个实体的开始和结束状态首先,确认实体如何实例化的,以及何时开始。如:Grade 对象在有了一个新的分数需要保存时实例化。8.6.3 确定与一个实体相关的事件事件用来最终完成实体的功能。如:Grade 对象,它的任务是保存分数,包括接受数据、成功保存数据和不成功保存数据。由此事件产生的状态:Ready(用于数据加载时) 、Persisting(用于数据保存时) 、Saved(用于数据已经保存后) 、Error(用于数据由于出错而未成功保存时)

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

当前位置:首页 > 企业管理 > 管理学资料

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


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

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

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