1、1第六章 UML简介UML概述UML的静态建模机制UML的动态建模机制26.1 UML概述概述3什么是什么是UML?nUML表示表示Unified Modeling LanguagenUML把下面一些先进的技术结合起来:把下面一些先进的技术结合起来:数据建模概念数据建模概念 (实体关系图实体关系图)商业建模商业建模 (工作流工作流)对象建模对象建模组件建模组件建模行为建模行为建模nUML是用来对软件相关系统进行可视化、规范、创是用来对软件相关系统进行可视化、规范、创建和建立文档的标准语言建和建立文档的标准语言nUML可以用在所有的过程中,贯穿整个开发周期,可以用在所有的过程中,贯穿整个开发周期
2、,并跨越不同的实现技术并跨越不同的实现技术UML概述概述UML的主要内容的主要内容41 1面对众多的建模语言,用户由于没有能力区别不同面对众多的建模语言,用户由于没有能力区别不同语言之间的差别,因此很难找到一种比较适合其应语言之间的差别,因此很难找到一种比较适合其应用特点的语言;用特点的语言;2 2众多的建模语言实际上各有千秋;众多的建模语言实际上各有千秋;3 3虽然不同的建模语言大多类同,但仍存在某些细微虽然不同的建模语言大多类同,但仍存在某些细微的差别,极大地妨碍了用户之间的交流。的差别,极大地妨碍了用户之间的交流。因此在客观上,极有必要在精心比较不同的建模因此在客观上,极有必要在精心比较
3、不同的建模语言优缺点及总结面向对象技术应用实践的基础上语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言。去其糟粕,求同存异,统一建模语言。为什么需要为什么需要UML?UML概述概述UML的主要内容的主要内容5UML的主要内容的主要内容UML概述概述 UML(Unified Modeling Language)表示法表示法 UML的符号、文本语法、图形机制的符号、文本语法、图形机制 用来表达应用问题在需求、设计和实现级的模型用来表达应用问题在需求、设计和实现级的模型 UML语义语义
4、用用UML表示法描述表示法描述UML的元模型的元模型 元模型为元模型为UML的所有语法元素的语义提供定义性说明的所有语法元素的语义提供定义性说明p UML的的可视化建模机制可视化建模机制分为静态和动态:分为静态和动态: 静态机制包括:静态机制包括:用例图用例图、类图类图、对象图对象图、包图包图、构件图构件图、配置图配置图 动态机制包括:动态机制包括:顺序图顺序图、合作图合作图、状态图状态图、活动图活动图6UML的历史 80年代末期到年代末期到90年代,各种年代,各种OO软件开发方法纷纷涌现:软件开发方法纷纷涌现: OOA/OOD, Booch, OMT, OOSE 1994年年10月,月, B
5、ooch和和Rumbaugh统一统一Booch93和和OMT2, 发布发布UML0.8 1995年秋,年秋,Jacobson加盟加盟Rational,1996年年6月发布月发布UML0.9, , 1996年年10月发布月发布UML0.91 1997年年UML获众多著名软件公司的支持,获众多著名软件公司的支持,11月被月被OMG接纳接纳 为标准为标准 1998年年UML发展到发展到UML1.4,相应的软件开发环境,相应的软件开发环境Rational Rose正式推出正式推出UML概述概述 2003年年UML发展到发展到UML2.07UML概述概述UML的历史Booch OMTUnified Me
6、thod 0.8OOPSLA 95OOSEOthersUML 0.9UML 1.1UML 1.3UML 1.0UML 2.08UML的特点UML概述概述 集成众多集成众多OO软件开发方法的表示机制的优点,软件开发方法的表示机制的优点, 统一化、标准化、系统化统一化、标准化、系统化 用宽谱语言机制支持软件开发全过程用宽谱语言机制支持软件开发全过程 具有较完善、配套的软件开发环境(如具有较完善、配套的软件开发环境(如Rational Rose) 已成为已成为OO建模语言的事实上的工业标准,发展前景广阔建模语言的事实上的工业标准,发展前景广阔9UML的应用范围的应用范围UML概述概述 UML UML
7、适用于软件开发全过程适用于软件开发全过程 可以对任何具有静态结构和动态行为的系统进行建模可以对任何具有静态结构和动态行为的系统进行建模 (如:机械系统,信息系统,企业结构,等(如:机械系统,信息系统,企业结构,等)广泛地用于应用领域和多种类型的系统建模,如管理广泛地用于应用领域和多种类型的系统建模,如管理信息系统、通信与控制系统、嵌入式实时系统、分布信息系统、通信与控制系统、嵌入式实时系统、分布式系统、系统软件等。式系统、系统软件等。近几年还被运用于软件再工程、质量管理、过程管理、近几年还被运用于软件再工程、质量管理、过程管理、配置管理等方面。配置管理等方面。不仅仅限于计算机软件,还可用于非软
8、件系统,例如不仅仅限于计算机软件,还可用于非软件系统,例如硬件设计、业务处理流程、企业或事业单位的结构与硬件设计、业务处理流程、企业或事业单位的结构与行为建模。行为建模。106.2 UML静态建模机制静态建模机制11 用户与计算机之间一次典型的交互作用,引发系统执行一系用户与计算机之间一次典型的交互作用,引发系统执行一系 列动作,动作执行的结果能被用户(或外部实体)觉察到列动作,动作执行的结果能被用户(或外部实体)觉察到UML静态建模机制静态建模机制第六章 UML简介用例图用例图1. 用例用例 用例描述某种用户(或外部实体)可见的动作,用例描述某种用户(或外部实体)可见的动作, 实现一个具体的
9、完整的用户目标实现一个具体的完整的用户目标 用例不同于用户与软件系统的交互动作序列用例不同于用户与软件系统的交互动作序列12描述执行者描述执行者(Actor)(Actor)与用例,以及用例与用例之间的关系与用例,以及用例与用例之间的关系 UML静态建模机制用例图用例图2. 用例图用例图13 UML静态建模机制用例图用例图14 UML静态建模机制用例图用例图3. 用例图中的关系用例图中的关系 Actor Actor与用例之间的关系:触发执行,交换信息与用例之间的关系:触发执行,交换信息 扩展关系:用例扩展关系:用例A A与与B B相似,但相似,但B B的动作较的动作较A A多,多,含有含有A所不
10、具备的一些特所不具备的一些特殊情况下的处理动作,殊情况下的处理动作,则将则将B B作为作为A A的扩展的扩展 使用关系:如果多个用例使用关系:如果多个用例A A1 1, ,A,An n中存在公共的动作中存在公共的动作B B,可将,可将B B抽出,抽出, A Ai i使用使用B B(i=1,2,i=1,2,n,n)15 UML静态建模机制用例图用例图16 UML静态建模机制用例图用例图3.用例图中的关系用例图中的关系 扩展关系主要用来描述对正常处理行为的变异扩展关系主要用来描述对正常处理行为的变异 使用关系主要用来避免重复使用关系主要用来避免重复扩展 与 使用 的差异 Actor可可与扩展的用例
11、关联,与扩展的用例关联, 但一般不与但一般不与 使用使用 中的公共用例相连接中的公共用例相连接17 UML静态建模机制用例图用例图4. 用例模型的获取用例模型的获取 谁使用系统的各项功能谁使用系统的各项功能 谁需要系统支持其工作谁需要系统支持其工作4 4.1 获取获取ActorActor 谁来维护、管理、配置系统谁来维护、管理、配置系统 谁对系统产生的结果感兴趣谁对系统产生的结果感兴趣 系统需要与哪些外部实体交互系统需要与哪些外部实体交互 观察用户的工作流程观察用户的工作流程 标识外部事件并观察用户的反映标识外部事件并观察用户的反映18 UML静态建模机制用例图用例图4. 用例模型的获取用例模
12、型的获取 要求系统提供哪些功能要求系统提供哪些功能 系统需要那些输入系统需要那些输入/ /输出以完成上述功能输出以完成上述功能, , 输入源和输出目标是什么输入源和输出目标是什么4.2 4.2 对对ActorActor提问以获取用例提问以获取用例 Actor Actor要存取、修改的信息有哪些要存取、修改的信息有哪些 Actor Actor与系统之间相互提醒的事件有哪些与系统之间相互提醒的事件有哪些19 UML静态建模机制用例图用例图4. 用例模型的获取用例模型的获取 利用利用“扩展扩展”表示表示 变异处理行为变异处理行为4.3 4.3 标识ActorActor及用例之间的关系及用例之间的关系
13、 每个用例必须至少与一个每个用例必须至少与一个ActorActor相连接相连接 利用利用“使用使用”抽取公共行为,简化用例图抽取公共行为,简化用例图4.4 4.4 约束约束20 UML静态建模机制类图类图类图是类图是UMLUML中中OOOO模型的基础,它们描述系统的静态结构模型的基础,它们描述系统的静态结构 对象的类型、属性与操作对象的类型、属性与操作类图主要描述:类图主要描述: 作用于上述关系之上的约束作用于上述关系之上的约束 类之间的静态关系:关联、子类型、聚集和构成、依赖等类之间的静态关系:关联、子类型、聚集和构成、依赖等包图包图描述系统的分治描述系统的分治结构结构1. 类图类图21 U
14、ML静态建模机制类图类图类图是类图是UMLUML中中OOOO模型的基础,它们描述系统的静态结构模型的基础,它们描述系统的静态结构类的表示类的表示关联的表示关联的表示22 UML静态建模机制类图类图类图是类图是UMLUML中中OOOO模型的基础,它们描述系统的静态结构模型的基础,它们描述系统的静态结构聚集和构成聚集和构成的表示的表示子类型子类型( (继承继承) )的表示的表示23 UML静态建模机制Order LineQuantity:Integerprice:MoneyisSatisfied:BooleanOrderdispatch(T) close(T)dataReceivedisPrepa
15、idnumber:Stringprice:MoneyCustomercreditRating(): StringnameaddressCorporateCustomercontactNamecreditRatingcreditLimitremind()billForMon-th(Integer)EmployeeProductMultiplicity:optional0.110ConstraintMultiplicity:Many-valued*OperationsAttributesif Order.customer.creditRating is “poor”,then Order.isPr
16、epaidmust be true1*1Multiplicity:mandatoryAssociationGeneralizationClass*sales repPersonalCustomercreditCard#creditRating()= =“poor”lineitemsRoleName类图类图24 UML静态建模机制类图类图 概念层概念层: 描述问题域中的概念及它们之间的静态关系描述问题域中的概念及它们之间的静态关系 实现层实现层: 描述类及其关系描述类及其关系 规范层规范层: 描述类型(去除方法体之后的类)及其关系描述类型(去除方法体之后的类)及其关系 (软件结构)(软件结构)2
17、. 类图类图的抽象层次25 UML静态建模机制类图类图 概念层概念层:同:同OOA/OOD, OOA/OOD, 描述问题域中的概念的描述问题域中的概念的属性属性 实现层实现层:隐含类中成员变量的说明隐含类中成员变量的说明 规范层规范层:隐含:隐含get/setget/set方法方法3. 属性 定义形式定义形式:可见性:可见性 属性名:类型属性名:类型= =缺省值缺省值 约束特性约束特性 26 UML静态建模机制类图类图4. 操作操作 概念层概念层:问题域中的任务描述:问题域中的任务描述 实现层实现层:方法体:方法体 规范层规范层:操作的接口描述:操作的接口描述 定义形式定义形式:可见性:可见性
18、 操作名操作名( (参数表参数表) ):返回类型:返回类型 约束特性约束特性 27 UML静态建模机制类图类图5. 关联关联 概念层概念层:两个概念之间的联系:两个概念之间的联系 关联具有两个角色(关联具有两个角色(RolesRoles), , 可以对角色命名,匿名角色使用目标类作为名字可以对角色命名,匿名角色使用目标类作为名字 实现层实现层:隐含:隐含 两个类在各自的成员变量中相互包含或引用两个类在各自的成员变量中相互包含或引用例如:例如:class Order private Customer m_customer; private ItemVector m_orderItems; cla
19、ss Customer private OrderVector m_orders; 规范层规范层:隐含:隐含 类型之间的查询职责和关系维护职责类型之间的查询职责和关系维护职责例如:例如:class Order public Customer getCustomer(); public Enum enumOrderItems(); 关联表示两个类之间语义上联系关联表示两个类之间语义上联系28 UML静态建模机制类图类图5. 关联关联关联表示两个类之间语义上联系关联表示两个类之间语义上联系29 UML静态建模机制类图类图5.1 关联的方向:关联的方向:导航导航(Navigability) 单向关联
20、与双向关联单向关联与双向关联 无向关联可视为双向关联,或无向关联可视为双向关联,或 未确定未确定30 UML静态建模机制类图类图5.2 关联类关联类关联类用来记录与关联有关的信息,提供与关联有关的操作关联类用来记录与关联有关的信息,提供与关联有关的操作UMLUML规定:两个被关联对象之间,最多只存在一个关联对象规定:两个被关联对象之间,最多只存在一个关联对象Period:dataRangeEmploymentCompany Person*employer0.1Association Class31 UML静态建模机制类图类图5.2 关联类关联类32 UML静态建模机制类图类图5.2 关联类关联
21、类period:dataRangeEmploymentPersonCompany/employer*10.1*10.133 UML静态建模机制类图类图5.3 聚集和构成(聚集和构成(Composition) 共享聚集共享聚集:部分可参加多个整体:部分可参加多个整体 构成构成:每个部分类的对象只参加一个整体类对象,:每个部分类的对象只参加一个整体类对象, 部分与整体共存亡部分与整体共存亡UMLUML将聚集区分为将聚集区分为共享聚集共享聚集和和构成构成PolygonColorisFilledStylePointradiusCircleAggregation*Compositionordered3.
22、*111*34 UML静态建模机制类图类图6 继承继承 概念层概念层: 一般类具有的属性操作及关联,特殊类也隐含地具有一般类具有的属性操作及关联,特殊类也隐含地具有 特殊类还应包含额外的属性或操作特殊类还应包含额外的属性或操作 实现层实现层:特殊类是一般类的子类(在:特殊类是一般类的子类(在OOPL的意义上)的意义上) 规范层规范层:特殊类的接口与一般类的接口相一致:特殊类的接口与一般类的接口相一致35 UML静态建模机制类图类图7 依赖依赖如果对的如果对的X X修改将导致修改将导致Y Y必须修改,则称必须修改,则称Y Y依赖于依赖于X X 一个类的对象是另一个类的对象的数据成员一个类的对象是
23、另一个类的对象的数据成员 发送消息发送消息依赖关系的起因依赖关系的起因: 一个类的对象是另一个类的操作参数,等一个类的对象是另一个类的操作参数,等36 UML静态建模机制类图类图8 约束约束 在代码实现时,可用断言来实现约束在代码实现时,可用断言来实现约束 约束可作用于关联、属性、操作和类约束可作用于关联、属性、操作和类 定义形式定义形式: 字符串字符串 37 UML静态建模机制类图类图9 9 类别模板类别模板(Stereotype) UML UML通过类别模板提供扩充机制通过类别模板提供扩充机制 例如,在操作定义时可附加以下类别模板:例如,在操作定义时可附加以下类别模板: get_op,se
24、t_op,inquiry_op,modifier_op 类别模板是对类、关联等类别模板是对类、关联等UMLUML语法元素的元级分类,语法元素的元级分类, 用来描述它们之间不同的语义类别用来描述它们之间不同的语义类别38 UML静态建模机制类图类图10 10 多重分类多重分类与与动态分类动态分类 尽量避免在规范层和实现层使用多重分类与动态分类尽量避免在规范层和实现层使用多重分类与动态分类 UML UML允许一个对象随属性值的改变而改变类型允许一个对象随属性值的改变而改变类型 UML UML允许一个对象具有多个类型允许一个对象具有多个类型39 UML静态建模机制类图类图FemaleMalePers
25、onManagerEngineerSalesmansex(mandatory)Job40 UML静态建模机制类图类图11 11 派生属性派生属性与与派生关联派生关联 概念层概念层:派生属性和派生关联均可省略:派生属性和派生关联均可省略 如果需要,可显式强调两个类之间的派生关联,如果需要,可显式强调两个类之间的派生关联, 但应与原始关联保持一致但应与原始关联保持一致 实现层实现层:派生属性可视为内部:派生属性可视为内部CacheCache 规范层规范层:派生属性可视为类的属性之间的约束:派生属性可视为类的属性之间的约束period:dataRangeEmploymentPersonCompany
26、/employer*10.1*10.141 UML静态建模机制类图类图12 12 抽象类抽象类与与接口接口 接口接口:只含抽象方法的类:只含抽象方法的类 抽象类抽象类:含有抽象方法的类:含有抽象方法的类 抽象方法抽象方法:仅含方法头,没有方法体:仅含方法头,没有方法体UMLUML分别用分别用abstractabstract和和interfaceinterface表示表示抽象类抽象类与与接口接口InputStream abstractDataInputOrderReaderDataInputStreamGeneralizationRefinementDependence42 UML静态建模机制类
27、图类图43 UML静态建模机制类图类图DetailAccount Windows Window toFront() toBack() X11 Window toFront() toBack() Mac Window toFront() toBack() Window abstrct toFront() toBack()Dependency44 UML静态建模机制类图类图OrderReaderDataInputStreamInterfaceDataInputDependenceInputSteam45 UML静态建模机制类图类图13 13 精化精化(Refinement)B B为为A A的的精化
28、精化:A,BA,B描述同一事物,描述同一事物,B B在在A A的基础上有更详细的描述或实现细节的基础上有更详细的描述或实现细节InputStream abstractDataInputOrderReaderDataInputStreamGeneralizationRefinementDependence46 UML静态建模机制类图类图14 14 引用对象引用对象和和值对象值对象 概念层概念层:不要区分不要区分引用对象引用对象与与值对象值对象 规范层规范层与与实现层实现层: 对构成使用对构成使用值对象值对象 属性可使用属性可使用引用引用或或值对象值对象 其它关联一般使用其它关联一般使用引用对象引
29、用对象47 UML静态建模机制类图类图15 15 多值角色多值角色 如果有多个实例对象参与关联,如果有多个实例对象参与关联, UMLUML假定这些实例对象构成的集合无序且无重复假定这些实例对象构成的集合无序且无重复 可使用可使用ordered ordered 表示有序的实例对象集合表示有序的实例对象集合 bag bag表示允许重复表示允许重复48 UML静态建模机制类图类图17 17 参数化类参数化类 参数化类参数化类主要用来简化模型,简化实现,提高可重用性主要用来简化模型,简化实现,提高可重用性 避免在概念模型中使用避免在概念模型中使用参数化类参数化类 Setinsert(T) remove
30、(T)TEmployeeSetBinding for ParameterBound ElementTemplate Class49 UML静态建模机制类图类图19 19 类图的创建方法类图的创建方法 根据项目所处的不同开发阶段,根据项目所处的不同开发阶段, 在不同的抽象层次上创建类图在不同的抽象层次上创建类图 仅当必要时,才使用较复杂的语法机制仅当必要时,才使用较复杂的语法机制50 UML静态建模机制对象图对象图 类图表示类和类与类之间的关系,对象图则表示在某类图表示类和类与类之间的关系,对象图则表示在某一时刻这些类的具体实例和这些实例之间的具体连接一时刻这些类的具体实例和这些实例之间的具体连
31、接关系。关系。 对象图可以看作类图的实例,帮助人们理解一个比较对象图可以看作类图的实例,帮助人们理解一个比较复杂的类图。对象图也可用于显示类图中的对象在某复杂的类图。对象图也可用于显示类图中的对象在某一时刻的连接关系。一时刻的连接关系。 对象的图示方式与类的图示方式几乎是一样的,主要对象的图示方式与类的图示方式几乎是一样的,主要差别在于对象的名字下面要加下划线。差别在于对象的名字下面要加下划线。51 UML静态建模机制对象图对象图52 UML静态建模机制对象图对象图 类图类图对象图对象图53 UML静态建模机制图图1 1 包包类似于类似于OOA/OODOOA/OOD中的主题词,用于结构化划分,
32、分而治之中的主题词,用于结构化划分,分而治之2 2 包的划分原则包的划分原则: 强内聚,松耦合强内聚,松耦合 根据根据依赖关系依赖关系确定耦合度确定耦合度3 3 包图的内容包图的内容: 包间依赖包间依赖:如果包中的类之间存在依赖关系,:如果包中的类之间存在依赖关系, 则包间应存在依赖关系则包间应存在依赖关系 包间继承包间继承:专用包必须符合通用包的接口:专用包必须符合通用包的接口 包的构成关系包的构成关系:包可由一些子包构成:包可由一些子包构成54 UML静态建模机制图图Order Capture UIAWTMailing ListUIMailing ListApplicationCustom
33、ersOrdersOrder CaptureApplicationPackageDependency55 UML静态建模机制图图Order Capture UIAWTMailing ListUIMailing ListApplicationOrder CaptureApplicationDomainOrderCustomerSybaseInterfaceOracleInterfaceDatabaseInterfaceabstractQuantityMoneyDateRangeCommon global56 UML静态建模机制图图包也可以拥有接口包也可以拥有接口57 UML静态建模机制 系统架构
34、是构成系统的各部分系统架构是构成系统的各部分( (结构、接口、通信机结构、接口、通信机制制) )的框架性描述。的框架性描述。 通过定义一个合适的架构,使得更容易完成下述工作:通过定义一个合适的架构,使得更容易完成下述工作: 浏览系统;浏览系统; 找到一个特殊功能的位置或概念;找到一个特殊功能的位置或概念; 标志加入一个新功能或概念的位置使其更适合总的系统架构。标志加入一个新功能或概念的位置使其更适合总的系统架构。 架构不仅要容易浏览,足够详细,而且还要具有可伸架构不仅要容易浏览,足够详细,而且还要具有可伸缩性,即能够从不同的级别上了解它。缩性,即能够从不同的级别上了解它。58 UML静态建模机
35、制 可以用很多视图来描述架构,每一张视图集中描述系可以用很多视图来描述架构,每一张视图集中描述系统的某一个方面。统的某一个方面。 一个较广的分类方法将架构分解成逻辑和物理架构。一个较广的分类方法将架构分解成逻辑和物理架构。 逻辑架构主要指定系统的功能特点,通过系统的功能需求逻辑架构主要指定系统的功能特点,通过系统的功能需求来描述;来描述; 物理架构则描述系统的非功能部分,如可靠性、兼容性、物理架构则描述系统的非功能部分,如可靠性、兼容性、资源使用和系统分布;资源使用和系统分布;59 UML静态建模机制 逻辑架构处理系统的功能,将功能分配到系统的各个逻辑架构处理系统的功能,将功能分配到系统的各个
36、部分,详细说明它们是如何工作的。部分,详细说明它们是如何工作的。 逻辑架构包括应用逻辑,但不是将逻辑物理上分布到逻辑架构包括应用逻辑,但不是将逻辑物理上分布到不同的进程、程序或计算机。不同的进程、程序或计算机。 逻辑架构有助于更清楚地了解系统的结构,使得更容逻辑架构有助于更清楚地了解系统的结构,使得更容易管理和协调工作易管理和协调工作( (尽可能有效地利用人力开发资源尽可能有效地利用人力开发资源) )。 并不是逻辑架构的所有部分都需要在工程中开发。并不是逻辑架构的所有部分都需要在工程中开发。(如类库、二进制构件和模式只需购买)。(如类库、二进制构件和模式只需购买)。60 UML静态建模机制逻辑
37、架构解决下面的问题逻辑架构解决下面的问题系统提供什么样的功能?系统提供什么样的功能?哪一个类存在,类之间是如何联系在一起?哪一个类存在,类之间是如何联系在一起?类和对象是如何协作来完成系统功能?类和对象是如何协作来完成系统功能?什么是系统功能的时间约束?什么是系统功能的时间约束?许多开发人员在开发架构时都遵循的一个合适许多开发人员在开发架构时都遵循的一个合适的计划是什么样?的计划是什么样?61 UML静态建模机制UMLUML中的逻辑架构:中的逻辑架构:用例;用例;类;类;包;包;状态;状态;活动;活动;协作;协作;序列。序列。62 UML静态建模机制 物理架构详细描述系统的软件、硬件。物理架构
38、详细描述系统的软件、硬件。 描述硬件结构,包括不同的节点以及节点间如何描述硬件结构,包括不同的节点以及节点间如何连接。连接。 说明实现逻辑架构中定义的概念的代码模块的物说明实现逻辑架构中定义的概念的代码模块的物理结构和相关性。理结构和相关性。 软件运行时进程程序和其它组件的分布。软件运行时进程程序和其它组件的分布。 物理架构试图有效地利用软硬件资源。物理架构试图有效地利用软硬件资源。63 UML静态建模机制物理架构解决下面的问题:物理架构解决下面的问题:类和对象物理上分布在哪一个程序或进程中?类和对象物理上分布在哪一个程序或进程中?程序和进程在哪台计算机上运行?程序和进程在哪台计算机上运行?系
39、统中有哪些计算机和其它的硬件设备?它们是系统中有哪些计算机和其它的硬件设备?它们是如何连接在一起?如何连接在一起?不同的代码文件之间有可关联?如果某一文件被不同的代码文件之间有可关联?如果某一文件被改变,其它的文件是否需要重新编译?改变,其它的文件是否需要重新编译? 物理架构描述软硬件的分解,将逻辑架构映射到物物理架构描述软硬件的分解,将逻辑架构映射到物理架构,逻辑架构中的类和机制被映射到物理架构中的理架构,逻辑架构中的类和机制被映射到物理架构中的组件、进程和计算机。这种映射允许开发者根据逻辑架组件、进程和计算机。这种映射允许开发者根据逻辑架构中的类找到它的物理实现。反之亦然;跟踪程序或组构中
40、的类找到它的物理实现。反之亦然;跟踪程序或组件的描述找到它在逻辑架构中的设计。件的描述找到它在逻辑架构中的设计。64 UML静态建模机制描述软件的主要概念:描述软件的主要概念:组件。在组件。在UML UML 中,组件是指中,组件是指“在一组模型元在一组模型元素实例的物理打包时可重用的部分素实例的物理打包时可重用的部分”。进程和线程。进程表示重量控制流,而线程进程和线程。进程表示重量控制流,而线程则代表轻量控制流。则代表轻量控制流。对象。对象。65 UML静态建模机制物理架构中的硬件概念可以分为:物理架构中的硬件概念可以分为:处理器。执行系统中的程序的计算机。处理器。执行系统中的程序的计算机。设
41、备。指的是支持设备,如打印机、路由器、读卡设备。指的是支持设备,如打印机、路由器、读卡机等。它们一般被连接到控制它们的处理器上。机等。它们一般被连接到控制它们的处理器上。连接。处理器之间有连接,处理器与设备之间也有连接。处理器之间有连接,处理器与设备之间也有连接。连接表示两个节点间的通信机制,可以用物连接。连接表示两个节点间的通信机制,可以用物理媒体理媒体( (如光纤如光纤) )和软件协议和软件协议( (如如TCP/IP)TCP/IP)来描述。来描述。66 UML静态建模机制构件构件图图1 1 构件图构件图表示实现层的软件结构表示实现层的软件结构2 2 构件构件:软件项目中的具有相对独立意义的
42、单元(如源文件,:软件项目中的具有相对独立意义的单元(如源文件,二进制代码文件二进制代码文件, DLL, DLL等)等)3 3 构件图构件图用来显示编译、链接或执行时构件之间的依赖关系用来显示编译、链接或执行时构件之间的依赖关系67 UML静态建模机制构件构件图图软件构件可以是:软件构件可以是:源构件。源构件只在编译时是有意义,典型情况源构件。源构件只在编译时是有意义,典型情况下它是实现一个或多个类的源代码文件。下它是实现一个或多个类的源代码文件。二进制构件。典型情况下,二进制构件是对象代二进制构件。典型情况下,二进制构件是对象代码,它是源构件的编译结果。它应该是一个对象码,它是源构件的编译结
43、果。它应该是一个对象代码文件、一个静态库文件或一个动态库文件。代码文件、一个静态库文件或一个动态库文件。可执行构件。可执行构件是一个可执行的程序文可执行构件。可执行构件是一个可执行的程序文件,它是链接件,它是链接( (静态链接或动态链接静态链接或动态链接) )所有二进制所有二进制构件所得到的结果。构件所得到的结果。68 UML静态建模机制构件构件图图69 UML静态建模机制 编译时的构件是包含工程中产生的代码的源构件。编译时的构件是包含工程中产生的代码的源构件。 其它的构件,如链接时和运行时的构件是从编译时的其它的构件,如链接时和运行时的构件是从编译时的构件中产生的。构件中产生的。 可被编译时
44、的构件使用的某些版类为:可被编译时的构件使用的某些版类为:file, 表示包含源代码的文件;表示包含源代码的文件;page, 表示表示Web 页;页;document, 表示文档表示文档(包含文档而不是可编译包含文档而不是可编译的文档的文档)。 从一个编译时的组件到其它的编译时的构件的相关性从一个编译时的组件到其它的编译时的构件的相关性显示了它需要其它的构件中的哪一个才能得到完整的显示了它需要其它的构件中的哪一个才能得到完整的定义。定义。70 UML静态建模机制71 UML静态建模机制链接时组件用于链接系统时。链接时组件用于链接系统时。典型情况下,链接时的组件代表编译时的组件所典型情况下,链接
45、时的组件代表编译时的组件所得到的结果,或表示编译一个或多个编译时的组得到的结果,或表示编译一个或多个编译时的组件所得到的库。件所得到的库。动态链接库动态链接库( (DLL)DLL)是一种特殊情况,它是在运行是一种特殊情况,它是在运行时而不是在编译时被链接到一个运行时的组件。时而不是在编译时被链接到一个运行时的组件。72 UML静态建模机制 运行时的组件表示在执行系统时使用的组件。运行时的组件表示在执行系统时使用的组件。 它是通过链接时的组件它是通过链接时的组件( (从对象代码和库从对象代码和库) )产生的。产生的。 版类版类application application 表示一个可执行的程序,
46、版表示一个可执行的程序,版类类tabletable 表示一个数据库表。表示一个数据库表。73 UML静态建模机制配置配置图图1.1.配置图配置图描述系统硬件的物理拓扑结构描述系统硬件的物理拓扑结构 以及在此结构上执行的构件以及在此结构上执行的构件2.2.结点结点:物理设备以及在此结构上执行的构件:物理设备以及在此结构上执行的构件4 4 配置图配置图中的构件在逻辑上可对应包、类及对象中的构件在逻辑上可对应包、类及对象 因此,因此,配置图配置图将显示运行时刻包、类及对象在物理平台上将显示运行时刻包、类及对象在物理平台上的的 分布情况分布情况3.3.连接:连接:结点结点间的通信及通信类型间的通信及通
47、信类型( (通信协议,网络类型等通信协议,网络类型等) )74 UML静态建模机制配置配置图图75 UML静态建模机制配置配置图图 节点是拥有某些计算资源的物理对象节点是拥有某些计算资源的物理对象( (设备设备) ) ,这些资这些资源包括带处理器的计算机,一些设备如打印机、读卡机、源包括带处理器的计算机,一些设备如打印机、读卡机、通信设备等。通信设备等。 在查找或确定实现系统所需的硬件资源时标识这些节点,在查找或确定实现系统所需的硬件资源时标识这些节点,主要描述节点两方面的内容:主要描述节点两方面的内容: 能力能力( (如基本内存、计算能力、二级存储器如基本内存、计算能力、二级存储器) ) ;
48、 位置位置( (在所有必须的地理位置上均可得到在所有必须的地理位置上均可得到) )。 可以将节点作为类型可以将节点作为类型( (节点是一个类节点是一个类) )和实例来显示,类和实例来显示,类型描述处理器或设备类型的特点,实例表示类型的真正型描述处理器或设备类型的特点,实例表示类型的真正出现出现( (机器机器) )。76 UML静态建模机制配置配置图图 节点间通过通信关联连接在一起。节点间通过通信关联连接在一起。 通信关联用一条直线表示,说明在节点间存在某类通通信关联用一条直线表示,说明在节点间存在某类通信路径,节点通过这条通信路径交换对象或发送消息。信路径,节点通过这条通信路径交换对象或发送消
49、息。 通信类型用版类来表示,定义通信协议或使用的网络。通信类型用版类来表示,定义通信协议或使用的网络。77 UML静态建模机制配置配置图图78 UML静态建模机制配置配置图图796.3 UML动态建模机制动态建模机制80 UML动态建模机制顺序顺序图图顺序图顺序图和和合作图合作图统称为统称为交互图交互图。交互图交互图通常描述单个用例中的行为通常描述单个用例中的行为顺序图顺序图用来描述对象之间动态的交互关系,主要强调对象间消息传用来描述对象之间动态的交互关系,主要强调对象间消息传递的递的时间序时间序及及并发并发81 UML动态建模机制顺序顺序图图 顺序图的左边可带有顺序图的左边可带有描述信息描述
50、信息,以阐明消息发送的时刻,以阐明消息发送的时刻, 动作执行情况及约束信息等动作执行情况及约束信息等 顺序图顺序图的的X X轴表示不同的对象,轴表示不同的对象,Y Y轴表示时间轴表示时间 对象间的通信表示为对象对象间的通信表示为对象生命线生命线之间的消息传递之间的消息传递 消息消息有简单、同步、异步之分有简单、同步、异步之分 消息用消息名及参数标识消息用消息名及参数标识 消息可带有条件表达式,以表示条件或分支消息可带有条件表达式,以表示条件或分支 一个对象可通过发送消息来创建或删除另一对象一个对象可通过发送消息来创建或删除另一对象 顺序图可显式表示对象生命的终结顺序图可显式表示对象生命的终结8