1、上海交通大学计算机系上海交通大学计算机系2022-8-51上海交通大学计算机系上海交通大学计算机系2022-8-52wUML历史历史w什么是什么是UMLwUML与软件体系结构与软件体系结构wUML构成构成上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系2022-8-54w面向对象的分析与设计面向对象的分析与设计(OOAD)方法的发展在方法的发展在80年代末至年代末至90年代中出现了一个高潮年代中出现了一个高潮.wUML是这个高潮的产物。它不仅统一了是这个高潮的产物。它不仅统一了Booch、Rumbaugh和和Jacobson的表示方法,而且对其的表示方法,而且对
2、其作了进一步的发展,并最终统一为大众所接受的作了进一步的发展,并最终统一为大众所接受的标准建模语言标准建模语言。上海交通大学计算机系上海交通大学计算机系2022-8-55w70年代中期,公认的面向对象设计语言出现。年代中期,公认的面向对象设计语言出现。w从从1989年到年到1994年,其数量从不到十种增加年,其数量从不到十种增加到了五十多种。到了五十多种。nBooch86,GOOD(Booch86,GOOD(通用面向对象的开发),通用面向对象的开发),HOOD(HOOD(层次式层次式面向对象的设计)、面向对象的设计)、OOSDOOSD(面向对象的结构设计)等(面向对象的结构设计)等一批一批OO
3、DOOD(面向对象的设计或面向对象的开发的缩写)(面向对象的设计或面向对象的开发的缩写)n截至截至1994年,公开发表并具有一定影响的年,公开发表并具有一定影响的OOA&D方方法已达法已达50多种。多种。上海交通大学计算机系上海交通大学计算机系2022-8-56wRational公司的公司的G.Booch和和J.Rumbaugh决定将他们各决定将他们各自的方法结合起来成为一种方法。自的方法结合起来成为一种方法。1995年年10月发布了月发布了第一个版本,称作统一方法(第一个版本,称作统一方法(Unified Method 0.8)wOOSE的作者的作者I.Jacobson也加入了公司,于是也加
4、入了也加入了公司,于是也加入了统一行动,发布了第二个版本统一行动,发布了第二个版本UML0.9w鉴于统一行动的产物是一种建模语言,而不是一种建模鉴于统一行动的产物是一种建模语言,而不是一种建模方法,因此称为方法,因此称为统一建模语言统一建模语言w在此过程中,在此过程中,Rational公司发起成立了公司发起成立了UML伙伴组织,伙伴组织,开始时有开始时有12家参加,共同推出了家参加,共同推出了UML1.0版,并在版,并在1997年年1月提交给月提交给OMGw把其他几家分头向把其他几家分头向OMG提交提案的公司纳入进来,推出提交提案的公司纳入进来,推出了了UML1.1版,在版,在1997年年11
5、月月4日被日被OMG采纳采纳上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系2022-8-58wUML(统一建模语言统一建模语言)是为软件系统的制品进行是为软件系统的制品进行描描述述(specifying)、)、可视化可视化(visualizing)、)、构构造造(constructing)、)、文档化文档化(documenting)的一种语言。的一种语言。w它同样适用于商业模块和其他非软件系统。在大它同样适用于商业模块和其他非软件系统。在大型和复杂系统的建模中,型和复杂系统的建模中,UML成功地描述一些优秀成功地描述一些优秀的工程实施。的工程实施。上海交通大学
6、计算机系上海交通大学计算机系2022-8-59 OOAD OOAD 最关心最关心流程流程与元素与元素 1.描述流程(剧情)-分析 2.安排主/配角(元素)演出-设计上海交通大学计算机系上海交通大学计算机系2022-8-510 OOAD OOAD 最主要的工具最主要的工具 UML(Unified Modeling Language)认可的世界标准 19971997上海交通大学计算机系上海交通大学计算机系2022-8-511 为什么需要 UML 呢?贝多芬作曲时使用五线谱您设计软件时使用UML上海交通大学计算机系上海交通大学计算机系2022-8-512 Use Case 叙述 曹操举兵南下,西蜀就
7、拟定策略,展开部署並联络孙权,鼎力对抗曹操大军.曹操西蜀孙权西蜀 把西蜀看成黑箱!准备打开西蜀黑箱上海交通大学计算机系上海交通大学计算机系2022-8-513 Scenario 叙述 曹操赤壁之战孙权 把西蜀黑箱打开!刘备关羽孔明张飞上海交通大学计算机系上海交通大学计算机系2022-8-514 Scenario 叙述 曹操赤壁之战孙权刘备关羽孔明张飞 曹操曹操举举兵南下兵南下,刘备刘备请请孔明孔明拟拟定策略定策略.派遣派遣关羽关羽和和张飞张飞防守荆州防守荆州,同同时时请请孔明孔明联络联络孙权孙权,共同共同对抗对抗曹操曹操.孔明孔明联合联合孙权孙权,借借东风东风,火火烧烧曹曹军于军于赤壁赤壁.上
8、海交通大学计算机系上海交通大学计算机系2022-8-515 Scenario 叙述 使用 表示之上海交通大学计算机系上海交通大学计算机系2022-8-516 Scenario 叙述 刘备孔明关羽求战请拟定策略张飞请防守荆州请防守荆州前线孙权曹操请联络孙权请孙权领兵相助借东风火攻火攻曹军上海交通大学计算机系上海交通大学计算机系2022-8-517刘备的責任?刘备求战请拟定策略请防守荆州请联络孙权我必需 迎战曹操!上海交通大学计算机系上海交通大学计算机系2022-8-518使用UML表示-类图 刘备求战刘备迎战曹操迎战曹操迎战曹操迎战曹操迎战曹操迎战曹操上海交通大学计算机系上海交通大学计算机系20
9、22-8-519使用UML表示 孔明请拟定策略请联络孙权请孙权领兵相助借东风火攻火攻曹军孔明拟定策略联合孙权借东风火攻上海交通大学计算机系上海交通大学计算机系2022-8-520使用UML表示 关羽张飞请防守荆州请防守荆州前线关羽防守荆州张飞防守荆州前线上海交通大学计算机系上海交通大学计算机系2022-8-521 关羽防守荆州张飞防守荆州前线刘备迎战曹操孔明拟定策略联合孙权借东风火攻UML的Class图 上海交通大学计算机系上海交通大学计算机系2022-8-5223.认识 OOP OOP 阶段的任务 -衔接OOAD 的工作-从UML 到 Visual Basic-从Visual Basic 到
10、 COM 组件上海交通大学计算机系上海交通大学计算机系2022-8-523 使用Visual Basic 刘备迎战曹操写VB程序Class 刘备Sub 迎战曹操()End Sub上海交通大学计算机系上海交通大学计算机系2022-8-524 孔明拟定策略联合孙权借东风火攻使用Visual Basic 写VB程序Class 孔明Function 拟定策略()End FunctionSub 联合孙权()End SubSub 借东风火攻()End Sub上海交通大学计算机系上海交通大学计算机系2022-8-525Class 刘备Sub 迎战曹操()End Sub使用Visual BasicClass
11、孔明Function 拟定策略()End FunctionSub 联合孙权()End SubSub 借东风火攻()End SubClass 关羽Sub 防守荆州()End SubClass 张飞Sub 防守前线()End Sub上海交通大学计算机系上海交通大学计算机系2022-8-526 写VB程序內容 刘备求战请拟定策略请防守荆州请联络孙权写VB程序Class 刘备Dim k As New 孔明Dim g as New 关羽Sub 迎战曹操()k.拟定策略 g.防守荆州 k.联合孙权End Sub上海交通大学计算机系上海交通大学计算机系2022-8-527写VB程序內容 孔明请拟定策略请联络
12、孙权请孙权领兵相助借东风火攻借东风火攻写VB程序Class 孔明Dim s As 孙权Function 拟定策略()End FunctionSub 联合孙权()s.请领兵相助 s.借东风火攻End SubSub 借东风火攻()End Sub上海交通大学计算机系上海交通大学计算机系2022-8-528 写VB代码 Class 刘备Dim k As New 孔明Dim g as New 关羽Sub 迎战曹操()k.拟定策略 g.防守荆州 k.联合孙权End SubClass 孔明Dim s As 孙权Function 拟定策略()End FunctionSub 联合孙权()s.请领兵相助 s.借东
13、风火攻End SubSub 借东风火攻()End Sub上海交通大学计算机系上海交通大学计算机系2022-8-529 写VB代码 Windows DNA上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系2022-8-531w为了表达不同的软件开发相关人员在软件开发周期的不同时期看待为了表达不同的软件开发相关人员在软件开发周期的不同时期看待软件产品的不同侧重面软件产品的不同侧重面,需要对模型进行分层。需要对模型进行分层。UML根据软件产品根据软件产品的体系结构(的体系结构(architecture)对软件进行分层)对软件进行分层w软件体系结构由一系列的决定组成,软件
14、体系结构由一系列的决定组成,这些决定定义了如下内容:这些决定定义了如下内容:软件系统的组织;软件系统的组织;构成软件系统的结构元素的结构及它们之间的接口;构成软件系统的结构元素的结构及它们之间的接口;结构元素的行为及元素之间的协同(结构元素的行为及元素之间的协同(collaboration)结构元素的不断组合以构成日渐完备的子系统的过程结构元素的不断组合以构成日渐完备的子系统的过程指导软件建造过程的指导软件建造过程的软件构筑风格(软件构筑风格(architectural style)静态和动态元素之间的接口、协同、构成(静态和动态元素之间的接口、协同、构成(composition)。)。上海交
15、通大学计算机系上海交通大学计算机系2022-8-532w软件体系结构不仅仅决定软件的结构和行为,软件体系结构不仅仅决定软件的结构和行为,而且还决而且还决定软件的:定软件的:用途用途功能功能性能性能应变性应变性(resilience)可重用性可重用性经济和技术方面的限制和折衷经济和技术方面的限制和折衷以及美学考虑(以及美学考虑(aesthetic concern)上海交通大学计算机系上海交通大学计算机系2022-8-533wUML将软件的体系结构分解为五个不同的侧面,称为视将软件的体系结构分解为五个不同的侧面,称为视图图(view)。分别是:。分别是:用例视图(用例视图(Use case vie
16、w)设计视图设计视图(design view)进程视图(进程视图(process view)实现视图实现视图(implementation view)分布视图分布视图(deployment view)设计视图和进程视图又可被统一称为逻辑视图设计视图和进程视图又可被统一称为逻辑视图(logical view)。上海交通大学计算机系上海交通大学计算机系2022-8-534 设计视图设计视图实现视图实现视图进程视图进程视图分布视图分布视图用例视图用例视图动态行为动态行为设计词汇、功能描述设计词汇、功能描述系统组装、配系统组装、配置管理置管理性能、稳定性性能、稳定性、吞吐率、吞吐率系统拓扑、分系统拓扑
17、、分布、分发、安布、分发、安装装上海交通大学计算机系上海交通大学计算机系2022-8-535w每个视图分别关注软件开发的某一侧面每个视图分别关注软件开发的某一侧面w视图由一种或多种模型图视图由一种或多种模型图(diagram)构成构成w模型图描述了模型图描述了构成相应视图的基本模型元素(构成相应视图的基本模型元素(element)及它们之间的相互关系。及它们之间的相互关系。上海交通大学计算机系上海交通大学计算机系2022-8-536w用例视图用来支持软件系统的需求分析,它定义系统的用例视图用来支持软件系统的需求分析,它定义系统的边界,关注的是系统的外部功能的描述。边界,关注的是系统的外部功能的
18、描述。w它从系统的使用者的角度,描述系统的外部的它从系统的使用者的角度,描述系统的外部的静态的功能静态的功能动态行为动态行为w系统的动态功能由系统的动态功能由UML以下模型图描述:以下模型图描述:交互图交互图(interaction diagram)状态图状态图(state-chart diagram)活动图活动图(activity diagram)上海交通大学计算机系上海交通大学计算机系2022-8-537w逻辑视图定义系统的实现逻辑逻辑视图定义系统的实现逻辑,描述为描述为实现用例图描述的功能实现用例图描述的功能,在,在对软件系统进行设计时对软件系统进行设计时,所产生的设计概念,设计概念又称
19、为软件所产生的设计概念,设计概念又称为软件系统的设计词汇系统的设计词汇(vocabulary)。w逻辑视图定义了逻辑视图定义了:设计词汇的逻辑结构设计词汇的逻辑结构存在于它们之间的语义联系存在于它们之间的语义联系设计词汇包括系统的类设计词汇包括系统的类/协同协同/接口及其关系接口及其关系w对逻辑视图的描述在原则上与软件系统的实现平台无关。对逻辑视图的描述在原则上与软件系统的实现平台无关。它相当于它相当于电子产品生产中的电原理图。逻辑视图包含的模型图有:电子产品生产中的电原理图。逻辑视图包含的模型图有:类图(类图(class diagrams)对象图(对象图(object diagrams)交互
20、图(交互图(interaction diagrams)状态图(状态图(state-chart diagrams)活动图(活动图(activity diagrams)上海交通大学计算机系上海交通大学计算机系2022-8-538w当系统的逻辑结构在逻辑视图里被定义之后,当系统的逻辑结构在逻辑视图里被定义之后,需要定义逻辑结构的物理实现。这包括:需要定义逻辑结构的物理实现。这包括:设计元素对应的源代码文件设计元素对应的源代码文件各物理文件之间的关系、存放路径,等等各物理文件之间的关系、存放路径,等等w实现视图就是定义这些内容的地方,它当于电子实现视图就是定义这些内容的地方,它当于电子产品的印刷电路板
21、的布线图产品的印刷电路板的布线图上海交通大学计算机系上海交通大学计算机系2022-8-539w实现视图描述组成一个软件系统的各个物理部件,这些实现视图描述组成一个软件系统的各个物理部件,这些部件以各种方式组合起来,(如:部件以各种方式组合起来,(如:不同的源代码经过编不同的源代码经过编译,构成一个可执行系统;译,构成一个可执行系统;或者不同的软件组件配置成或者不同的软件组件配置成为一个可执行系统;以及不同的网页文件,以特定的目为一个可执行系统;以及不同的网页文件,以特定的目录结构,组成一个网站,等等)录结构,组成一个网站,等等)构成了一个可实际运行构成了一个可实际运行的系统。的系统。w实现视图
22、包含的模型图有实现视图包含的模型图有:部件图(部件图(Component diagram)交互图(交互图(Interaction Diagram)状态图(状态图(state-chart diagram)活动图(活动图(activity diagram)上海交通大学计算机系上海交通大学计算机系2022-8-540w软件产品将运行在计算机硬件系统上软件产品将运行在计算机硬件系统上,如果软件产品是面如果软件产品是面向网络的应用系统,则有可能同时运行在多个计算机上。向网络的应用系统,则有可能同时运行在多个计算机上。w分布视图用来描述软件产品在计算机硬件系统和网络上分布视图用来描述软件产品在计算机硬件系
23、统和网络上的安装、分发(的安装、分发(delivery)、分布()、分布(distribution)w在分布视图中,系统的静态特性用分布图在分布视图中,系统的静态特性用分布图(deployment diagram)描述)描述w动态特性的动态特性的描述描述用用交互图(交互图(interaction diagram)状态图(状态图(state-chart diagram)活动图(活动图(activity diagram)上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系2022-8-542w从软件的体系结构出发,从软件的体系结构出发,UML把软件模型分成了五个视把软件
24、模型分成了五个视图,每个视图由不同的模型图构成:图,每个视图由不同的模型图构成:模型图实际上就是模型图实际上就是UML的基本成员的基本成员之一之一作为作为UML的完整的概念模型,的完整的概念模型,UML的构成为:的构成为:UML=UML成员成员+UML建模规则建模规则上海交通大学计算机系上海交通大学计算机系2022-8-543wUML建模规则:相当于建模语言的语法建模规则:相当于建模语言的语法 wUML成员(成员(building blocks of the UML)它是它是UML的基本组成部分的基本组成部分UML成员可进一步划分为成员可进一步划分为UML 基本模型元素(基本模型元素(thin
25、gs in UML)关系(关系(relationship)模型图(模型图(diagram)UML成员成员=UML 基本模型元素基本模型元素+关系关系+模型图模型图 上海交通大学计算机系上海交通大学计算机系UML成员成员=UML 基本模型元素基本模型元素+关系关系+模型图模型图上海交通大学计算机系上海交通大学计算机系2022-8-545wUML基本模型元素,类似于电子产品电原理图里的集成基本模型元素,类似于电子产品电原理图里的集成电路符号,是模型图上包含的基本符号电路符号,是模型图上包含的基本符号w基本模型元素可分为四类,基本模型元素可分为四类,它们是:它们是:结构模型元素(结构模型元素(str
26、uctural things)行为模型元素(行为模型元素(behavioral things)分组模型元素(分组模型元素(grouping things)注解元素(注解元素(annotational things)UML基本模型元素基本模型元素=结构模型元素结构模型元素+行为模型元素行为模型元素+成组成组元素元素+注解元素注解元素 上海交通大学计算机系上海交通大学计算机系2022-8-546w结构模型元素(基础包)是结构模型元素(基础包)是UML模型里的名词模型里的名词(noun),是模型的静态组成部分,代表软件),是模型的静态组成部分,代表软件系统的概念的系统的概念的,或物理的存在。或物理的
27、存在。例如:类(例如:类(class)是最常用的一个结构模型)是最常用的一个结构模型元素,代表一系列共享同样的属性元素,代表一系列共享同样的属性(attributes),操作(),操作(operation),关系、),关系、语义的对象(语义的对象(object)。)。上海交通大学计算机系上海交通大学计算机系2022-8-547w结构模型元素一共有七种,它们是:结构模型元素一共有七种,它们是:类类接口(接口(interface)协同协同用例(用例(use case)主动类(主动类(active class)组件(组件(component)节点(节点(node)w在这些结构元素中,最常用的包括类、
28、用例、接口、组在这些结构元素中,最常用的包括类、用例、接口、组件等件等Check Pass WordISpellingShell.cpp上海交通大学计算机系上海交通大学计算机系2022-8-548w行为模型元素(行为模型元素(behavioral things)(行为元素包)(行为元素包)是是UML模型的动态组成部分,它是模型的动词,代表软模型的动态组成部分,它是模型的动词,代表软件系统在空间和时间上的行为件系统在空间和时间上的行为w行为模型元素包括两类行为模型元素包括两类:交互(交互(interaction)状态机(状态机(state machine)w行为模型元素行为模型元素=交互交互+状
29、态机状态机上海交通大学计算机系上海交通大学计算机系2022-8-549w交互交互是系统内一系列的对象之间互相交换消息的行为。是系统内一系列的对象之间互相交换消息的行为。消息代表软件系统内两个对象中一个对象向另一个对消息代表软件系统内两个对象中一个对象向另一个对象发出的执行某种操作的请求。象发出的执行某种操作的请求。交互描述了一系列的对象为完成某一项任务而联合采交互描述了一系列的对象为完成某一项任务而联合采取的一系列的行动,其中包括这些行动在时间上的顺取的一系列的行动,其中包括这些行动在时间上的顺序,以及为执行这些动作序列,对象之间所发生的语序,以及为执行这些动作序列,对象之间所发生的语义上的联
30、系。所以,消息是描述交互的一个重要手段。义上的联系。所以,消息是描述交互的一个重要手段。w在模型图上,消息被表示为一个箭头在模型图上,消息被表示为一个箭头 display 上海交通大学计算机系上海交通大学计算机系2022-8-550w状态机状态机:状态机是描述一个对象的动态特性的有效手段状态机是描述一个对象的动态特性的有效手段w它描述的是对象在其生命周期内,在响应外界的事件的它描述的是对象在其生命周期内,在响应外界的事件的过程中,自身的状态的变化过程。过程中,自身的状态的变化过程。w状态机包括:状态机包括:对象状态对象状态事件事件由事件引起的状态之间的变迁由事件引起的状态之间的变迁以及变迁发生
31、的同时对象所执行的动作以及变迁发生的同时对象所执行的动作Waiting上海交通大学计算机系上海交通大学计算机系2022-8-551w分治的原则分治的原则:在为复杂的软件系统建模的时候,将大的问题分解为多在为复杂的软件系统建模的时候,将大的问题分解为多个子问题分别描述和解决。个子问题分别描述和解决。wUML提供了支持分治原则的语言成份,成组模型元素提供了支持分治原则的语言成份,成组模型元素(grouping things)(模型管理包)(模型管理包)w成组模型元素只有一类,即模型包(成组模型元素只有一类,即模型包(package)。)。w模型包一个通用的手段模型包一个通用的手段,用来组织多种语言
32、成份,其中可包含:用来组织多种语言成份,其中可包含:n结构模型元素结构模型元素n行为模型元素行为模型元素n成组模型元素自身成组模型元素自身w都可以置于模型包中。都可以置于模型包中。w模型包是纯概念性的,只存在于软件系统的开发阶段模型包是纯概念性的,只存在于软件系统的开发阶段上海交通大学计算机系上海交通大学计算机系2022-8-552w注解大量存在于机械图和电子线路图中,被用来标示产注解大量存在于机械图和电子线路图中,被用来标示产品的工艺要求,等等品的工艺要求,等等wUML中,也存在着相似的语言成分,这就是:注解元素中,也存在着相似的语言成分,这就是:注解元素(annotation things
33、)w注解元素只有一种,即标注(注解元素只有一种,即标注(note)w标注用来描述施加于一个或多个模型元素的限制,或对标注用来描述施加于一个或多个模型元素的限制,或对模型元素的语义加以说明模型元素的语义加以说明w标注的图形表示:一个折了角的长方形标注的图形表示:一个折了角的长方形w在长方形中写标注的内容。标注的内容可以是形式的文在长方形中写标注的内容。标注的内容可以是形式的文本本,或非形式的文本也可以是图形。或非形式的文本也可以是图形。函数在此返回 上海交通大学计算机系上海交通大学计算机系UML成员成员=UML 基本模型元素基本模型元素+关系关系+模型图模型图上海交通大学计算机系上海交通大学计算
34、机系2022-8-554w结构模型元素是结构模型元素是UML模型的静态组成部分,静态组成部模型的静态组成部分,静态组成部分不是孤立存在的,它们被组合在一起互相协作以完成分不是孤立存在的,它们被组合在一起互相协作以完成某项任务。因此,结构模型元素之间存在着某种语义上某项任务。因此,结构模型元素之间存在着某种语义上的联系。的联系。w在在UML中,这种联系是中,这种联系是关系(关系(relationship)wUML中共有中共有4种关系,它们是:种关系,它们是:关联关系(关联关系(association)依赖关系依赖关系(dependency)泛化关系泛化关系(generalization)实现关系
35、实现关系(realization)上海交通大学计算机系上海交通大学计算机系UML成员成员=UML 基本模型元素基本模型元素+关系关系+模型图模型图上海交通大学计算机系上海交通大学计算机系2022-8-556wUML基本模型元素及其关系必须通过某种载体基本模型元素及其关系必须通过某种载体表示,这种载体就是表示,这种载体就是模型图模型图(diagram)w在在UML中,模型图是一组中,模型图是一组UML基本模型元素的基本模型元素的图形表示,它通常由一组图形表示,它通常由一组节点节点(UML基本模型基本模型元素)元素),及及节点之间的连线节点之间的连线(关系)组成(关系)组成w软件系统体系结构的软件
36、系统体系结构的5个视图的内容个视图的内容,就是用就是用模模型图型图来表达的来表达的w 一般地说,一个一般地说,一个UML基本模型元素既可以出现基本模型元素既可以出现在所有的模型图中,又可以出现在某些模型图中,在所有的模型图中,又可以出现在某些模型图中,甚至可以不在任何一个模型图上出现甚至可以不在任何一个模型图上出现上海交通大学计算机系上海交通大学计算机系2022-8-557w9种种UML模型图。它们是模型图。它们是:类图类图对象图对象图用例图用例图序列图序列图协同图协同图状态图状态图活动图活动图组件图组件图分布图分布图上海交通大学计算机系上海交通大学计算机系2022-8-558w类图类图包含类
37、、接口、协同及其关系,它用来描述逻辑视图的静态属包含类、接口、协同及其关系,它用来描述逻辑视图的静态属性性w对象图对象图包含对象及其关系,它用来表示类图的类的对象在系统运行包含对象及其关系,它用来表示类图的类的对象在系统运行过程中某一时刻的状态,对象也是软件系统的逻辑视图的一个组成过程中某一时刻的状态,对象也是软件系统的逻辑视图的一个组成部分部分。w组件图组件图描述系统的物理实现,包括构成软件系统的各部件(运行文描述系统的物理实现,包括构成软件系统的各部件(运行文件)的组织和关系,类图里的类在实现时最终会映射到组件图的某件)的组织和关系,类图里的类在实现时最终会映射到组件图的某个组件。一个组件
38、可以实现多个类。组件图是软件系统实现视图的个组件。一个组件可以实现多个类。组件图是软件系统实现视图的组成部分。组成部分。w分布图分布图描述系统的组件在运行时在运行节点上的分布,一个节点可描述系统的组件在运行时在运行节点上的分布,一个节点可包含一个或多个组件。分布图是软件系统分布视图的组成部分。包含一个或多个组件。分布图是软件系统分布视图的组成部分。w上述四种模型图主要用来描述上述四种模型图主要用来描述软件系统的静态结构软件系统的静态结构。上海交通大学计算机系上海交通大学计算机系2022-8-559w描述软件系统的动态特性的描述软件系统的动态特性的,使用使用用例图用例图序列图序列图协同图协同图状
39、态图状态图活动图活动图上海交通大学计算机系上海交通大学计算机系2022-8-560w用例图用例图描述系统的边界,和其上的动态行为,图中包括:描述系统的边界,和其上的动态行为,图中包括:用例(用例(use case),系统作用者(),系统作用者(actor)及其之间的)及其之间的(关联关联)关系。用例图是用例视图的重要组成部分。关系。用例图是用例视图的重要组成部分。w序列图序列图和和协同图协同图用来描述一组对象之间的动态交互。以用来描述一组对象之间的动态交互。以用来描述系统的动态特性、外部的动态特性、内部的动用来描述系统的动态特性、外部的动态特性、内部的动态特性。态特性。w状态图状态图和和活动图
40、活动图用于描述对象的动态特性。状态图强调用于描述对象的动态特性。状态图强调对象对外部事件的响应及相应的状态变迁,活动图描述对象对外部事件的响应及相应的状态变迁,活动图描述对象之间控制流的转换和同步机制。对象之间控制流的转换和同步机制。上海交通大学计算机系上海交通大学计算机系UML=UML成员成员+UML建模规则建模规则上海交通大学计算机系上海交通大学计算机系2022-8-562wUML的模型图不是的模型图不是UML语言成份(语言成份(UML成员)的简单堆成员)的简单堆砌,它必须按砌,它必须按特定的规则特定的规则有机地组合而成,从而构成一有机地组合而成,从而构成一个完备的个完备的UML模型图。模
41、型图。w完备的完备的UML模型图(模型图(well-formed UML diagram)必)必须在语义上是一致的,并且和一切和它相关的模型和谐须在语义上是一致的,并且和一切和它相关的模型和谐地组合在一起。地组合在一起。wUML建模规则包括建模规则包括:名字:任何一个名字:任何一个UML成员都必须包含一个名字成员都必须包含一个名字作用域:作用域:UML成员所定义的内容起作用的成员所定义的内容起作用的上下文上下文环境环境可见性:可见性:UML成员能被其它成员引用的方式成员能被其它成员引用的方式完整性:完整性:UML成员之间互相联接的合法性和一致性。成员之间互相联接的合法性和一致性。运行属性(运行
42、属性(execution):):UML成员在运行时的特性。成员在运行时的特性。上海交通大学计算机系上海交通大学计算机系2022-8-563w完备的完备的UML模型必须对以上的内容给出完整的模型必须对以上的内容给出完整的解释解释,当用于软件系统的建造时,当用于软件系统的建造时,UML模型是必模型是必须是须是完备的完备的,但是当模型在不同的视图中出现但是当模型在不同的视图中出现时时,出于不同的交流侧重点出于不同的交流侧重点,其表达可以是不完其表达可以是不完备的备的 上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系上海交通大学计算机系2022-8-565w在模型图上对在模型图上对UML成
43、员进行描绘时,存在着成员进行描绘时,存在着共同的描绘共同的描绘方式方式,它们称为:,它们称为:UML公共机制(公共机制(UML common mechanism)w使用这些公共机制,使得建模的过程易于掌握,模型易使用这些公共机制,使得建模的过程易于掌握,模型易于被理解于被理解w公共机制可被分解为四个方面的内容:公共机制可被分解为四个方面的内容:规格说明规格说明(Specification)通用划分通用划分(Common Division)修饰修饰(Adornment)扩展机制扩展机制(Extensibility)上海交通大学计算机系上海交通大学计算机系2022-8-566w体现了体现了UML规
44、则的规则的省略性原则省略性原则w模型图省略某些对突出重点不重要的内容模型图省略某些对突出重点不重要的内容w但是软件模型必须是完备的,以便于软件系统的建造,但是软件模型必须是完备的,以便于软件系统的建造,意味着此模型必须具备足够的详细信息以供软件建造之意味着此模型必须具备足够的详细信息以供软件建造之用,这些构成一个完备模型的详细信息就是模型的规格用,这些构成一个完备模型的详细信息就是模型的规格说明(说明(specification)w所有所有UML模型元素都包含规格说明模型元素都包含规格说明w在模型图上被省略的内容并不代表它也不存在于模型之在模型图上被省略的内容并不代表它也不存在于模型之中,模型
45、的完整的或完备的信息是被保存在模型的规格中,模型的完整的或完备的信息是被保存在模型的规格说明中的,而通常一个完备的模型全部内容是通过多个说明中的,而通常一个完备的模型全部内容是通过多个模型图表达出来的模型图表达出来的 上海交通大学计算机系上海交通大学计算机系2022-8-567w在面向对象的设计中,有许多事物可以划分为在面向对象的设计中,有许多事物可以划分为抽象的描抽象的描绘绘(class)和)和具体的实例具体的实例wUML提供了事物的这种两分法(提供了事物的这种两分法(dichotomy)表达)表达w几乎每种几乎每种UML成员都有这种类成员都有这种类/对象的两分法划分,通对象的两分法划分,通
46、常对象和类使用同样的图符,在对象的名字下面加下划常对象和类使用同样的图符,在对象的名字下面加下划线以示区别。还有一种两分法是线以示区别。还有一种两分法是接口和实现接口和实现的两分法划的两分法划分,接口定义了一种协议,实现是此协议的实施。分,接口定义了一种协议,实现是此协议的实施。UML里这样的接口里这样的接口/实现两分法划分包括:实现两分法划分包括:接口接口/类或部件类或部件用例和协同用例和协同操作和方法操作和方法上海交通大学计算机系上海交通大学计算机系2022-8-568wUML提供了一系列的图形化的标准建模元素,可用于描提供了一系列的图形化的标准建模元素,可用于描述软件系统的大多数侧面的特
47、性述软件系统的大多数侧面的特性w但也有可能在某些情形下,由于应用领域特殊性,标准但也有可能在某些情形下,由于应用领域特殊性,标准的的UML建模元素建模元素,无法完整而准确地描述软件系统的分无法完整而准确地描述软件系统的分析和设计析和设计,这时,需要对这时,需要对UML的标准建模元素进行的标准建模元素进行扩充扩充,以提高模型的表达能力以提高模型的表达能力wUML的修饰和扩展机制就是为这个目的而设置的的修饰和扩展机制就是为这个目的而设置的 上海交通大学计算机系上海交通大学计算机系2022-8-569w标注是标注是UML修饰机制修饰机制的一个重要组成部分的一个重要组成部分w当用当用UML的各种建模元
48、素为软件系统建模时,将遇到关的各种建模元素为软件系统建模时,将遇到关于这些建模元素的复杂的语法、语义、原理、约束、注于这些建模元素的复杂的语法、语义、原理、约束、注释等,这些内容对表达问题的某一方面很重要,但又无释等,这些内容对表达问题的某一方面很重要,但又无法通过标准建模元素被完整地表达法通过标准建模元素被完整地表达w这时,可以使用标注对这些建模元素进行这时,可以使用标注对这些建模元素进行附加说明附加说明,例,例如在使用序列图来描述一组对象间的交互时,其中的消如在使用序列图来描述一组对象间的交互时,其中的消息的语义、语法无法在消息的名字字串内完整地表达,息的语义、语法无法在消息的名字字串内完
49、整地表达,可以用标注的方法进行直观的说明。可以用标注的方法进行直观的说明。上海交通大学计算机系上海交通大学计算机系2022-8-570w对于类、模型包、部件等,也可能遇到类似的情形,因对于类、模型包、部件等,也可能遇到类似的情形,因此也可以用标注的方法进行补充说明此也可以用标注的方法进行补充说明w标注的手段不是软件建模独有的,在其它工业建模领域,标注的手段不是软件建模独有的,在其它工业建模领域,标注也是大量存在的标注也是大量存在的w例如,在电子线路图上,可以通过标注对电路的电气特例如,在电子线路图上,可以通过标注对电路的电气特性进行说明。性进行说明。上海交通大学计算机系上海交通大学计算机系20
50、22-8-571w标注(标注(Note)的定义:在的定义:在UML中中,标注被定义为标注被定义为UML的一个图形表示,它用来描述对一个或一的一个图形表示,它用来描述对一个或一组组UML建模元素的约束或注释建模元素的约束或注释w标注可以作用于任何标注可以作用于任何UML建模元素(如:类、建模元素(如:类、对象、关系、消息等),用于对此建模元素的各对象、关系、消息等),用于对此建模元素的各方面的特性作补充说明、表示设计分析过程中产方面的特性作补充说明、表示设计分析过程中产生的假设和决定等生的假设和决定等w标注的内容对被标注的建模元素没有任何语义上标注的内容对被标注的建模元素没有任何语义上的影响,它