950 likes | 1.13k Views
信息系统分析、设计与开发方法. 第 6 章 功能强大的对象建模 工具 ——UML. 目录. 6.1 UM L 历史 6.2 UM L 包含的内容 6.3 UM L 应用领域 6.4 案例分析. 统一建模语言( Unified Modeling Language ,简称 UML )是用来对软件密集系统进行可视化建模的一种语言。 UML 为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。. 6.1 UML 的历史. 6.1.1 UML 的背景. UML 的背景 三个最流行的面向对象方法。 OMT 方法、 Booch 和 OOSE 。
E N D
信息系统分析、设计与开发方法 第6章 功能强大的对象建模 工具——UML
目录 6.1 UM L历史 6.2 UM L包含的内容 6.3 UM L应用领域 6.4 案例分析
统一建模语言(Unified Modeling Language,简称UML)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。 6.1 UML的历史
6.1.1 UML的背景 • UML的背景 • 三个最流行的面向对象方法。OMT方法、Booch和OOSE。 • Booch 方法,比较适合于系统的设计和构造,然而在分析方面比较弱。 • OMT方法,分析是OMT方法的强项,但在设计方面就比较弱。 • OOSE方法,在行为分析方面强大,但是在其它方面比较弱。 6.1 UML的历史
6.1.2 UML发展 6.1 UML的历史 UML的发展历程
6.1.3 UML特点 • UML特点 • 面向对象。UML支持面向对象技术的主要概念,提供了一批基本的模型元素的表示图形和方法,能简洁明了地表达面向对象的各种概念。 • 可视化,表示能力强。通过UML的模型图能清晰地表示系统的逻辑模型和实现模型。 • 独立于过程。UML是系统建模语言,独立于开发过程。 • 独立于程序设计语言。用UML建立的软件系统模型可以用Java、VC++、SmalltaIk等任何一种面向对象的程序设计来实现。 • 易于掌握使用。UML图形结构清晰,建模简洁明了,容易掌握使用。 6.1 UML的历史
6.1.3 UML特点 • UML的面向对象分析设计过程 • 运用UML进行面向对象的系统分析设计,其过程通常由以下3个部份组成: • 识别系统的用例和角色 • 进行系统分析,并抽取类 • 进行系统设计,并设计类及其行为 6.1 UML的历史
6.1.4 UML的组成 • UML的定义包括UML语义和UML表示法两个部分。 • UML语义 描述基于UML的精确元模型定义。 • UML表示法 定义UML符号的表示法。 • UML由图和元模型组成,图是语法,元模型是语义。UML主要包括三个基本构造块:事物(Things)、关系(Relationships)和图 (Diagrams)。 • UML通过三类图形建立系统模型:用例(Use Case)图、静态结构图(对象类图、对象图、组件图、配置图)和动态行为图(顺序图、协同图、状态图、活动图),这些图可以从不同的抽象角度实现系统的可视化。 6.1 UML的历史
6.2UML包含的内容 统一建模语言(Unified Modeling Language,简称UML)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
6.2UML包含的内容 6.2.1关系 关系是事物间的连接,在面向对象建模中,有4个很重要的关系:类属(Generalization)关系,关联(Association)关系,依赖(Dependency)关系,实现(Realization)关系。 类属关系(Generalization) 类属关系描述了一般事物与该事物的特殊种类之间的关系。表示为类与类之间的继承关系,接口与接口之间的继承,类对接口的实现关系。类属关系用一条带空心的三角箭头的实线表示,箭先尾端连接子类,箭头指向父类。
6.2UML包含的内容 6.2.1关系 UML中,对类属关系有三个要求: (1) 特殊元素与一般元素完全一致。关联/属性/操作 (2) 特殊元素应包含额外信息。 (3) 特殊元素的应用场合包含一般元素的应用场合。 类属关系图
6.2UML包含的内容 6.2.1关系 关联关系( Association ) 关联关系表示两个类之间存在某种语义上的联系。它是一种结构关系,规定了一种事物的对象可以与另一种事物的对象相连。
6.2UML包含的内容 6.2.1关系 关联关系又分为两种类型: 聚合关系(Aggregation Relationship) 聚合关系,聚合关系表示对象实例之间的整体与部分的关系,它代表了“has-a”(拥有)关系,即作为整体的对象拥有作为部分的对象,整体与部分可以分开。 组合关系(Composition Relationship) 组合关系,组合关系是聚合关系的一种特殊形式。在组合关系中,整体和部分之间有着很强所有关系和一致的生命周期,即整体与部分是不可以分开的。
6.2UML包含的内容 6.2.1关系 聚合关系 组合关系
6.2UML包含的内容 6.2.1关系 依赖关系(Dependency) 依赖关系描述了两个模型元素间的语义联系,其中一个模型元素的变化一定会影响另一个模型元素(这种影响不必是可逆的)。 例如, 有两个类Customer类和Account类,如果Customer类的变化引起Account类的变化,则说明Account类依赖于Customer类。
6.2UML包含的内容 6.2.1关系 依赖关系有如下三种情况: (1) Customer类是Account类的一个成员变量; (2) Customer类是Account类方法当中的一个参数; (3) Customer类向Account类发送消息,从而影响 Account类发生变化;
6.2UML包含的内容 6.2.1关系 实现关系(Realize Relationship) 实现关系是用来规定接口和实现接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。使用带空心箭头的虚线表示,箭头指向接口。
6.2UML包含的内容 6.2.2视图 视与图 对于一个软件系统来说,往往需要从不同的角度对它进行描述,由此产生了视的概念,不同的视描述了软件系统的不同方面。Kruchten 提出了一个“4+1”视图模型,从5个不同的视角描述软件体系结构,它们是逻辑视、过程视、实现视、配置视和用例视。每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。
6.2UML包含的内容 6.2.2视图 “4+1”视图模型
6.2UML包含的内容 6.2.3用例图 用例(Use Case)模型主要用来描述客户的需求,即用户希望系统所具备的功能。用例图是用例模型的图形表示,能够准确地表达参与者以系统的交互情况和系统所提供的服务。Use Case图是后续的系统分析与设计工作依据。 用例图主要包括3各部分: 用例(Usesr CAse)。 参与者(Actor) 关系
6.2UML包含的内容 6.2.3用例图-参与者 参与者(Actor)又可以称为活动者,是用户作用于系统的一个(Role)。活动者有自己的目标,通过与系统的交换到达目标。参与者是对系统边界之外的对象的描述。参与者可以是人,也可以是外部系统或其它设备。 图书管理员是图书借阅管理系统的用户, 是该系统的外部实体,而用例借书管理、还书管理是系统应该提供的功能,如下图所示。
6.2UML包含的内容 6.2.3用例图-参与者 图书借阅管理系统图书管理员用例图
6.2UML包含的内容 6.2.3用例图-用例 用例是对系统行为的动态描述,促进设计人员、开发人员与用户的沟通,正确理解用户的需求;规划系统与外部实体的界限,是系统设计的起点,是类、对象、操作的来源。 用例是从系统外部可见的行为,是系统为某一个或几个参与者(Actor)提供的一段完整的服务。
6.2UML包含的内容 6.2.3用例图-用例关系 用例之间关系有包含(include)、扩展(extend)和类属(generalization)三种关系。 包含(include) 包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作,以便多个基(Base)用例复用。基用例控制与包含用例的关系,以及被包含用例的事件流是否会插入到基用例的事件流中。
6.2UML包含的内容 6.2.3用例图-用例事件流描述 • 基于用例的需求分析 • (1)用例图是用来收集和描述用户需求的最好方法,明确系统的功能和参与者。需要强调的是用例图只是描述了系统做什么,而没有规定怎么做的。为了明确系统是怎么做的,为此引入了用例事件流描述。 • (2)用例事件流描述完成用例规定行为所需要的事件。 • (3)用例及用例事件流描述是系统动态建模依据之一,强调用例事件流描述的重要性。
6.2UML包含的内容 6.2.3用例图-用例事件流描述 • 用例事件流描述 • 用例图只能告诉我们系统应具有的功能及参与者,而没有说明用例的执行过程。因此,必须必须借助事件流描述用例的行为。 • (1) 用例什么时候开始,如何开始 • (2) 用例什么时候结束,如何结束 • (3) 用例和参与者之间有什么样的交互作用 • (4) 用例需要什么数据 • (5) 用例的标准的事件顺序 • (6) 替代的或例外的事件流的描述
6.2UML包含的内容 6.2.3用例图-用例包含关系 在一般信息系统中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系,如下图所示。
6.2UML包含的内容 6.2.3用例图-用例扩展关系 扩展(extend) 扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。
6.2UML包含的内容 6.2.3用例图-用例扩展关系 系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导出、打印和查询相对独立,而且为查询添加了新行为。因此可以采用扩展关系来描述,如下图所示。
6.2UML包含的内容 6.2.3用例图-用例类属关系 类属(generalization) 类属关系:用例间的类属关系如同类间的类属关系。子用例继承父用例的行为和含义,但表现出更特别的行为。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。
6.2UML包含的内容 6.2.3用例图-用例类属关系 例如,在办公自动化系统中,可能存在许多需要部门领导审批的事情,虽然审批的内容和类型不一样,但是领导审批的流程是很相似的,这时可以做成类属关系表示,如下图所示。
6.2UML包含的内容 6.2.4类图与对象图 类图(class)是面向对象模型的最基本的模型元素,描述对象模型的静态结构方面。表达了类集、接口集、协作以及它们之间的关系,是定义其它图的基础。 类图的组成部分包括: 类(class) 接口(Interface) 协作(Collaboration) 依赖(Dependency)、类属(Generalization)、实现(Realization)、关联(Association)
6.2UML包含的内容 6.2.4类图与对象图
6.2UML包含的内容 6.2.4类图与对象图 对象图(Object Diagram)是类图的一个实例。对象图表示在某一时刻系统对象的状态、对象之间联系的状态以及对象行为静态方面的状态。 对象图的表示方法和类的表示方法相同。对象之间的连接(Link)是类之间的关联关系的实例。对象图中通常含有:对象、连接。
6.2UML包含的内容 6.2.5交互作用图 交互图(Interaction Diagram)表达对象之间的交互,是描述一组对象如何合作完成每一个行为的模型化工具。交互图主要用于对Use Case中的控制流的建模。一般情况下一个交互图表达一个Use Case的行为,表示了该Use Case中若干个实例对象和对象之间所传递的消息。 UML1.X的交互图有两种即顺序图(Sequence Diagram)和协作图(Collaboration Diagram)。在UML2.0中,协作图改称为通信图(Communication Diagram),并增加了交互概观图(Interaction Overview Diagram)和计时图(Timing Diagram)。
6.2UML包含的内容 6.2.5交互作用图 顺序图 顺序图是交互图的一种,重点在于完成每个行为的对象类和这些对象类之间所传递的消息的时间顺序。 顺序图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。
6.2UML包含的内容 • 顺序图
6.2UML包含的内容 6.2.5交互作用图 协作图 协作图用于显示组件及其交互关系的空间组织结构,它并不侧重于交互的顺序。 协作图显示了交互中各个对象之间的组织交互关系以及对象彼此之间的链接。 协作图具有以下用途: 通过描述对象之间消息的移动情况来反映具体的脚本 显示对象及其交互关系的空间组织结构,而非交互的顺序
6.2UML包含的内容 6.2.5交互作用图 • 协作图
6.2UML包含的内容 6.2.5交互作用图 顺序图与协作图 协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同。顺序图清楚地表示了交互作用中的时间顺序,但没有明确表示对象间的关系。协作图清楚地表示了对象间的关系,但时间顺序必须从顺序图获得。顺序图常常用于表示方案,而协作图用于过程的详细设计。另外,时序图与协作图在语义上是等价的,因而它们可以相互转换而不损失信息。
6.2UML包含的内容 6.2.6 活动图 活动图主要是一个流图,描述从活动到活动的控制流。 活动图的基本元素有:动作状态(或活动状态)、动作流、泳道和对象流。此外初始状态、终结状态、判定(分支)、合并、分叉和联结也是常用的图形元素和符号。
6.2UML包含的内容 6.2.6活动图-动作状态 动作状态(Action State)描述了一个原子的或不可中断的动作或操作的执行。也就是说动作状态不能被分解。 例如:图书管理系统中的的借书与还书状态是动作状态。
6.2UML包含的内容 6.2.6活动图-活动状态 活动状态是非原子的,动作或操作的执行是可以分解并能够中断的。通常活动状态需要很长的时间才能完成。可以把活动状态看做是一个组合,该组合的控制流由其它的活动状态和动作状态构成。活动状态和动作状态的UML符号没有区别,但是活动状态可以有入口、出口动作和子状态的规定。入口动作和出口动作分别是进入或离开状态时要执行的动作。
6.2UML包含的内容 6.2.6活动图-活动状态 例如,制定计划和添加图书是活动状态。
6.2UML包含的内容 6.2.6活动图-动作流 动作流(Action Flow)是一个实体的不同动作状态之间的联系,说明状态之间的控制流。在活动图中动作流用实箭线表示,箭线从一个动作状态出发指向另一个动作状态。动作流可以是无条件的,也可以是有条件的。
6.2UML包含的内容 6.2.6活动图-泳道 活动图描述了从一个活动到另一个活动的控制流,但没有说明该项活动由谁来完成。泳道解决了这个问题。 泳道(Swimlanes)说明活动由谁来完成,将活动图的逻辑描述与顺序图、合作图的责任描述结合起来。 泳道用矩形框来表示,属于某个泳道的活动置于该矩形框中,将对象名置于举行框的顶部,表示泳道中的活动由该对象负责。
6.2UML包含的内容 6.2.6活动图-泳道
6.2UML包含的内容 6.2.6活动图-对象流 活动图能表示对象的值流和控制流。对象流状态表示活动中输入或输出的对象,它是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或动作对对象的影响。对输出值而言,虚线箭头从活动指向对象流状态。对输入值而言,虚线箭头从对象流状态指向活动。如果活动有多个输出值或后继控制流,那么箭头背向分叉符号。同样,多输入箭头指向结合符号。
6.2UML包含的内容 6.2.6 活动图-对象流 对象流中的对象有以下特点: 一个对象可以由多个动作操作。 一个动作输出的对象可以作为另一个动作输入的对象。 在活动图中,同一个对象可以多次出现,它的每一次出现表面该对象正处于对象生存期的不同时间点。
6.2UML包含的内容 6.2.6活动图-对象流