当然,步痕旅游网想法:您的查询字词都已标明如下:商务信息 的 具体 定义 (点击查询词,可以跳到它在文中首次出现的位置)
如果打开速度慢,您可以尝试打开无的快照
(百度和网页的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。)
--------------------------------------------------------------------------------
设为首页 收藏 求助 用户名 密码 自动登录 - 快速注册 - 找回密码 - 使用手册
首页 圈子 活动 博客 炒饭 会员 相册 招贴 搜索 邀请 圈子 活动
写字楼圈·运动圈·球友圈·同学圈·同事圈·亲友圈·同乡圈·行业圈·主题圈·媒体圈·业主圈·情感圈·企业圈·其他圈
导航: 圈网首页>>我的管理中心>>IT圈>>北京程序社区 加入该圈子
功能区: 短留言 | 相册 | 活动 | 圈子日志 | 商务信息 | 成员列表 | 链接 | 邀请朋友 | 群发圈内消息 | 圈子管理
主题留言板: 软件工程 | 灌水区 | 项目管理 | net技术 | 修身养性 |
解析UML的静态建模机制 2006-08-02 02:54 nuaalfm(方明) 推荐给好友
作者:51CMM 本文选自:51CMM 2002年12月10日任何建模语言都以静态建模机制为基础,标准建模语言UML也不例外。UML的静态建模机制包括用例图(Use case diagram)、类图(Class diagram)、对象图(Object diagram )、包(Package)、构件图(Component diagram)和配置图(Deployment diagram)。
用例图
用例模型(Use case model)
长期以来,在面向对象开发和传统的软件开发中,人们根据典型的使用情景来了解需求。但是,这些使用情景是非正式的,虽然经常使用,却难以建立正式文挡。用例模型由Ivar Jacobson在开发AXE系统中首先使用,并加入由他所倡导的OOSE和Objectory方法中。用例方法引起了面向对象领域的极大关注。自1994年Ivar Jacobson的著作出版后,面向对象领域已广泛接纳了用例这一概念,并认为它是第二代面向对象技术的标志。
用例模型描述的是外部执行者(Actor)所理解的系统功能。用例模型用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。
首先,它描述了待开发系统的功能需求;
其次,它将系统看作黑盒,从外部执行者的角度来理解系统;
第三,它驱动了需求分析之后各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发的系统,从而影响到开发工作的各个阶段和UML的各个模型。在UML中,一个用例模型由若干个用例图描述,用例图主要元素是用例和执行者。
用例(use case)
从本质上讲,一个用例是用户与计算机之间的一次典型交互作用。以字处理软件为例,“将某些正文置为黑体”和“创建一个索引”便是两个典型的用例。在UML中,用例被定义成系统执行的一系列动作,动作执行的结果能被指定执行者察觉到。
在UML中,用例表示为一个椭圆。图1显示了一个金融贸易系统的用例图。其中,“风险分析”,“交易估价”,“进行交易”,“设置边界”,“超越边界的交易”,“评价贸易”,“更新帐目”等都是用例的实例。概括地说,用例有以下特点:
·用例捕获某些用户可见的需求,实现一个具体的用户目标。
·用例由执行者激活,并提供确切的值给执行者。
·用例可大可小,但它必须是对一个具体的用户目标实现的完整描述。
图1 金融贸易系统用例
执行者(Actor)
执行者是指用户在系统中所扮演的角色。其图形化的表示是一个小人。图1中有四个执行者:贸易经理、营销人员、售货员和记帐系统。在某些组织中很可能有许多营销人员,但就该系统而言,他们均起着同一种作用,扮演着相同的角色,所以用一个执行者表示。一个用户也可以扮演多种角色(执行者)。例如,一个高级营销人员既可以是贸易经理,也可以是普通的营销人员;一个营销人员也可以是售货员。在处理执行者时,应考虑其作用,而不是人或工作名称,这一点是很重要的。
图1中,不带箭头的线段将执行者与用例连接到一起,表示两者之间交换信息,称之为通信联系。执行者触发用例,并与用例进行信息交换。单个执行者可与多个用例联系;反过来,一个用例可与多个执行者联系。对同一个用例而言,不同执行者有着不同的作用:他们可以从用例中取值,也可以参与到用例中。
需要注意的是执行者在用例图中是用类似人的图形来表示,尽管执行的,但执行者未必是人。例如,执行者也可以是一个外界系统,该外界系统可能需要从当前系统中获取信息,与当前系统有进行交互。在图1中,我们可以看到,记帐系统是一个外界系统,它需要更新帐目。
通过实践,我们发现执行者对提供用例是非常有用的。面对一个大系统,要列出用例清单常常是十分困难。这时可先列出执行者清单,再对每个执行者列出它的用例,问题就会变得容易很多。
使用和扩展(Use and Extend)
图1中除了包含执行者与用例之间的连接外,还有另外两种类型的连接,用以表示用例之间的使用和扩展关系。使用和扩展是两种不同形式的继承关系。当一个用例与另一个用例相似,但所做的动作多一些,就可以用到扩展关系。例如图1中,基本的用例是"进行交易"。交易中可能一切都进行得很顺利,但也可能存在扰乱顺利进行交易的因素。其中之一便是超出某些边界值的情况。例如,贸易组织会对某个特定客户规定最大贸易量,这时不能执行给定用例提供的常规动作,而要做些改动。我们可在"进行交易"用例中做改动。但是,这将把该用例与一大堆特殊的判断和逻辑混杂在一起,使正常的流程晦涩不堪。图1中将常规的动作放在"进行交易"用例中,而将非常规的动作放置于"超越边界的交易"用例中,这便是扩展关系的实质。当有一大块相似的动作存在于几个用例,又不想重复描述该动作时,就可以用到使用关系。例如,现实中风险分析和交易估价都需要评价贸易,为此可单独定义一个用例,即"评价贸易",而"风险分析"和"交易估价"用例将使用它。
请注意扩展与使用之间的相似点和不同点。它们两个都意味着从几个用例中抽取那些公共的行为并放入一个单独用例中,而这个用例被其他几个用例使用或扩展。但使用和扩展的目的是不同的。
用例模型的获取
几乎在任何情况下都会使用用例。用例用来获取需求,规划和控制项目。用例的获取是需求分析阶段的主要任务之一,而且是首先要做的工作。大部分用例将在项目的需求分析阶段产生,并且随着工作的深入会发现更多的用例,这些都应及时增添到已有的用例集中。用例集中的每个用例都是一个潜在的需求。
1 获取执行者
获取用例首先要找出系统的执行者。可以通过用户回答一些问题的答案来识别执行者。以下问题可供参考:
·谁使用系统的主要功能(主要使用者)。
·谁需要系统支持他们的日常工作。
·谁来维护、管理使系统正常工作(辅助使用者)。
·系统需要 *** 纵哪些硬件。
·系统需要与哪些其它系统交互,包含其它计算机系统和其它应用程序。
·对系统产生的结果感兴趣的人或事物。
相关回复
解析UML的静态建模机制(2)
2 获取用例
一旦获取了执行者,就可以对每个执行者提出问题以获取用例。
以下问题可供参考:
·执行者要求系统提供哪些功能(执行者需要做什么)
·执行者需要读、产生、删除、修改或存储的信息有哪些类型。
·必须提醒执行者的系统事件有哪些或者执行者必须提醒系统的事件有哪些怎样把这些事件表示成用例中的功能
·为了完整地描述用例,还需要知道执行者的某些典型功能能否被系统自动实现
还有一些不针对具体执行者问题(即针对整个系统的问题):
·系统需要何种输入输出输入从何处来输出到何处
·当前运行系统(也许是一些手工 *** 作而不是计算机系统)的主要问题
需要注意,最后两个问题并不是指没有执行者也可以有用例,只是获取用例时尚不知道执行者是什么。一个用例必须至少与一个执行者关联。还需要注意:不同的设计者对用例的利用程度也不同。例如,Ivar Jacobson说,对一个十人年的项目,他需要二十个用例。而在一个相同规模的项目中,Martin Fowler则用了一百多个用例。我们认为:任何合适的用例都可使用,确定用例的过程是对获取的用例进行提炼和归纳的过程,对一个十人年的项目来说,二十个用例似乎太少,一百多个用例则嫌太多,需要保持二者间的相对均衡。
类图、对象图和包
数千年以前,人类就已经开始采用分类的方法有效地简化复杂问题,帮助人们了解客观世界。在面向对象建模技术中,我们使用同样的方法将客观世界的实体映射为对象,并归纳成一个个类。类(Class)、对象(Object)和它们之间的关联是面向对象技术中最基本的元素。对于一个想要描述的系统,其类模型和对象模型揭示了系统的结构。在UML中,类和对象模型分别由类图和对象图表示。类图技术是OO方法的核心。图2显示了一个金融保险系统的类图。
图2 金融保险系统类图
类图
类图(Class Diagram)描述类和类之间的静态关系。与数据模型不同,它不仅显示了信息的结构,同时还描述了系统的行为。类图是定义其它图的基础。在类图的基础上,状态图、合作图等进一步描述了系统其他方面的特性。
类和对象
对象(Object)与我们对客观世界的理解相关。我们通常用对象描述客观世界中某个具体的实体。所谓类(Class)是对一类具有相同特征的对象的描述。而对象是类的实例(Instance)。建立类模型时,我们应尽量与应用领域的概念保持一致,以使模型更符合客观事实,易修改、易理解和易交流。
类描述一类对象的属性(Attribute)和行为(Behavior)。在UML中,类的可视化表示为一个划分成三个格子的长方形(下面两个格子可省略)。图1中,"客户"就是一个典型的类。
类的获取和命名 最顶部的格子包含类的名字。类的命名应尽量用应用领域中的术语,应明确、无歧义,以利于开发人员与用户之间的相互理解和交流。类的获取是一个依赖于人的创造力的过程,必须与领域专家合作,对研究领域仔细地分析,抽象出领域中的概念,定义其含义及相互关系,分析出系统类,并用领域中的术语为类命名。一般而言,类的名字是名词。
· 类的属性
中间的格子包含类的属性,用以描述该类对象的共同特点。该项可省略。图2中“客户”类有"客户名"、"地址"等特性。属性的选取应考虑以下因素:
原则上来说,类的属性应能描述并区分每个特定的对象;
只有系统感兴趣的特征才包含在类的属性中;
系统建模的目的也会影响到属性的选取。根据图的详细程度,每条属性可以包括属性的可见性、属性名称、类型、缺省值和约束特性。UML规定类的属性的语法为:
可见性 属性名 : 类型 = 缺省值 {约束特性}
图2“客户”类中,"客户名"属性描述为"- 客户名 : 字符串 = 缺省客户名"。
可见性"-"表示它是私有数据成员,其属性名为"客户名",类型为"字符串"类型,缺省值为"缺省客户名",此处没有约束特性。
不同属性具有不同可见性。常用的可见性有Public、Private和Protected三种,在UML中分别表示为" "、"-"和"#"。
类型表示该属性的种类。它可以是基本数据类型,例如整数、实数、布尔型等,也可以是用户自定义的类型。一般它由所涉及的程序设计语言确定。
约束特性则是用户对该属性性质一个约束的说明。例如"{只读}"说明该属性是只读属性。
· 类的 *** 作(Operation)
该项可省略。 *** 作用于修改、检索类的属性或执行某些动作。 *** 作通常也被称为功能,但是它们被约束在类的内部,只能作用到该类的对象上。 *** 作名、返回类型和参数表组成 *** 作界面。UML规定 *** 作的语法为:
可见性 *** 作名 (参数表) : 返回类型 {约束特性}
在图2中,"客户"类中有"取客户地址" *** 作,其中" "表示该 *** 作是公有 *** 作,调用时需要参数"客户名",参数类型为字符串,返回类型也为字符串。
类图描述了类和类之间的静态关系。定义了类之后,就可以定义类之间的各种关系了。
关联关系
关联(Association)表示两个类之间存在某种语义上的联系。例如,一个人为一家公司工作,一家公司有许多办公室。我们就认为人和公司、公司和办公室之间存在某种语义上的联系。在分析设计的类图模型中,则在对应人类和公司类、公司类和办公室类之间建立关联关系。
在图2中最上部存在一个"属于"/"签定"关联:每个"保险单"属于一个"客户",而"客户"可以签定多个"保险单"。除了这个关联外,图1中还有另外两个关联,分别表示每个"保险单"包含若干个"保险单上的项目",而每个"保险单上的项目"涉及单一的"保险类别"。
· 关联的方向
关联可以有方向,表示该关联单方向被使用。关联上加上箭头表示方向,在UML中称为导航(Navigability)。我们将只在一个方向上存在导航表示的关联,称作单向关联 ( Uni-directional Association ),在两个方向上都有导航表示的关联,称作双向关联 ( Bi-directional Association )。图2中,"保险单"“保险单上的项目”是单向关联。UML规定,不带箭头的关联可以意味着未知、未确定或者该关联是双向关联三种选择,因此,在图中应明确使用其中的一种选择。
· 关联的命名
既然关联可以是双向的,最复杂的命名方法是每个方向上给出一个名字,这样的关联有两个名字。(见图2中最上部的"属于"/"签定"关联)。为关联命名有几种方法,其原则是该命名是否有助于理解该模型。
· 角色
关联两头的类以某种角色参与关联。例如图3中,"公司"以"雇主"的角色,"人"以"雇员"的角色参与的"工作合同"关联。"雇主"和"雇员"称为角色名。如果在关联上没有标出角色名,则隐含地用类的名称作为角色名。角色还具有多重性(Multiplicity),表示可以有多少个对象参与该关联。在图3中,雇主(公司)可以雇佣(签工作合同)多个雇员,表示为"";雇员只能与一家雇主签定工作合同,表示为"1"。多重性表示参与对象的数目的上下界限制。""代表0~∞,即一个客户可以没有保险单,也可以有任意多的保险单。"1"是11的简写,即任何一个保险单仅来自于一个客户,可以用一个单个数字表示,也可以用范围或者是数字和范围不连续的组合表示。
图3 关联的角色
· 关联类
一个关联可能要记录一些信息,可以引入一个关联类来记录。图4是在图3的基础上引入了关联类。关联类通过一根虚线与关联连接。图5是实现上述目标的另外一种方法,就是使雇用关系成为一个正式的类。
图4 关联类
图5 另一种实现方法
· 聚集和组成
聚集(Aggregation)是一种特殊形式的关联。聚集表示类之间的关系是整体与部分的关系。一辆轿车包含四个车轮、一个方向盘、一个发动机和一个底盘,这是聚集的一个例子。在需求分析中,"包含"、"组成"、"分为……部分"等经常设计成聚集关系。聚集可以进一步划分成共享聚集(Shared Aggregation)和组成。例如,课题组包含许多成员,但是每个成员又可以是另一个课题组的成员,即部分可以参加多个整体,我们称之为共享聚集。另一种情况是整体拥有各部分,部分与整体共存,如整体不存在了,部分也会随之消失,这称为组成(Composition)。例如,我们打开一个视窗口,它就由标题、外框和显示区所组成。一旦消亡则各部分同时消失。在UML中,聚集表示为空心菱形,组成表示为实心菱形。需要注意的是,一些面向对象大师对聚集的定义并不一样。大家应注意其他面向对象方法与UML中所定义的聚集的差别。
继承关系
人们将具有共同特性的元素抽象成类别,并通过增加其内涵而进一步分类。例如,动物可分为飞鸟和走兽,人可分为男人和女人。在面向对象方法中将前者称为一般元素、基类元素或父元素,将后者称为特殊元素或子元素。继承(Generalization)定义了一般元素和特殊元素之间的分类关系。在UML中,继承表示为一头为空心三角形的连线。
如图2中,将客户进一步分类成个体客户和团体客户,使用的就是继承关系。
在UML定义中对继承有三个要求:
特殊元素应与一般元素完全一致,一般元素所具有的关联、属性和 *** 作,特殊元素也都隐含性地具有;
特殊元素还应包含额外信息;
允许使用一般元素实例的地方,也应能使用特殊元素。
依赖关系
有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X。在类中,依赖由各种原因引起,如:一个类向另一个类发消息;一个类是另一个类的数据成员;一个类是另一个类的某个 *** 作参数。如果一个类的界面改变,它发出的任何消息可能不再合法。
发表者:nuaalfm(方明) - - 2006-08-02 02:56
解析UML的静态建模机制(3)
类图的抽象层次和细化(Refinement)关系
需要注意的是,虽然在软件开发的不同阶段都使用类图,但这些类图表示了不同层次的抽象。在需求分析阶段,类图是研究领域的概念;在设计阶段,类图描述类与类之间的接口;而在实现阶段,类图描述软件系统中类的实现。按照Steve Cook和John Dianiels的观点,类图分为三个层次。需要说明的是,这个观点同样也适合于其他任何模型,只是在类图中显得更为突出。
· 概念层
概念层(Conceptual)类图描述应用领域中的概念。实现它们的类可以从这些概念中得出,但两者并没有直接的映射关系。事实上,一个概念模型应独立于实现它的软件和程序设计语言。
· 说明层
说明层(Specification)类图描述软件的接口部分,而不是软件的实现部分。面向对象开发方法非常重视区别接口与实现之间的差异,但在实际应用中却常常忽略这一差异。这主要是因为OO语言中类的概念将接口与实现合在了一起。大多数方法由于受到语言的影响,也仿效了这一做法。现在这种情况正在发生变化。可以用一个类型(Type )描述一个接口,这个接口可能因为实现环境、运行特性或者用户的不同而具有多种实现。
· 实现层
只有在实现层(Implementation)才真正有类的概念,并且揭示软件的实现部分。这可能是大多数人最常用的类图,但在很多时候,说明层的类图更易于开发者之间的相互理解和交流。
理解以上层次对于画类图和读懂类图都是至关重要的。但是由于各层次之间没有一个清晰的界限,所以大多数建模者在画图时没能对其加以区分。画图时,要从一个清晰的层次观念出发;而读图时,则要弄清它是根据哪种层次观念来绘制的。要正确地理解类图,首先应正确地理解上述三种层次。虽然将类图分成三个层次的观点并不是UML的组成部分,但是它们对于建模或者评价模型非常有用。尽管迄今为止人们似乎更强调实现层类图,但这三个层次都可应用于UML,而且实际上另外两个层次的类图更有用。
下面介绍细化概念。细化是UML中的术语,表示对事物更详细一层的描述。两个元素A、B描述同一件事物,它们的区别是抽象层次不同,若元素B是在元素A的基础上的更详细的描述,则称元素B细化了元素A,或称元素A细化成元素B。细化的图形表示为由元素B指向元素A的、一头为空心三角的虚线(千万不要把方向颠倒了!)。细化主要用于模型之间的合作,表示开发各阶段不同层次抽象模型的相关性,常用于跟踪模型的演变。
约束
在UML中,可以用约束(Constraint)表示规则。约束是放在括号"{}"中的一个表达式,表示一个永真的逻辑陈述。在程序设计语言中,约束可以由断言(Assertion)来实现。
对象图、对象和链
UML中对象图与类图具有相同的表示形式。对象图可以看作是类图的一个实例。对象是类的实例;对象之间的链(Link)是类之间的关联的实例。对象与类的图形表示相似,均为划分成两个格子的长方形(下面的格子可省略)。上面的格子是对象名,对象名下有下划线;下面的格子记录属性值。链的图形表示与关联相似。对象图常用于表示复杂的类图的一个实例。
包
一个最古老的软件方法问题是:怎样将大系统拆分成小系统。解决这个问题的一个思路是将许多类集合成一个更高层次的单位,形成一个高内聚、低耦合的类的集合。这个思路被松散地应用到许多对象技术中。UML中这种分组机制叫包(Package)(见图6)。
图6 包图
不仅是类,任何模型元素都运用包的机制。如果没有任何启发性原则来指导类的分组,分组方法就是任意的。在UML中,最有用的和强调最多的启发性原则就是依赖。包图主要显示类的包以及这些包之间的依赖关系。有时还显示包和包之间的继承关系和组成关系。
· 包的内容
在图6中,"系统内部"包由"保险单"包和"客户"包组成。这里称"保险单"包和"客户"包为"系统内部"包的内容。当不需要显示包的内容时,包的名字放入主方框内,否则包的名字放入左上角的小方框中,而将内容放入主方框内。包的内容可以是类的列表,也可以是另一个包图,还可以是一个类图。
· 包的依赖和继承
图6中"保险单填写界面"包依赖于"保险单"包;整个"系统内部"包依赖于"数据库界面"包。可以使用继承中通用和特例的概念来说明通用包和专用包之间的关系。例如,专用包必须符合通用包的界面,与类继承关系类似。通过"数据库界面"包,"系统内部"包既能够使用Oracle的界面也可使用Sybase的界面。通用包可标记为{abs tract},表示该包只是定义了一个界面,具体实现则由专用包来完成。
其他模型元素和表示机制
类图中用到的模型元素和表示机制较为丰富,由于篇幅的限制,这里不能一一介绍。主要还有以下模型符号和概念:类
1UML通常用于软件开发的“需求分析”和“设计”阶段,即在“编码”阶段之前。
2采用标准的图示化的方式说明系统的需求、进行结构设计,通常称作建模。
3最早用于采用面向对象编程的语言,即面向对象方法。现在也用于其它行业的建模。
4java只是一种编程语言,一种开发工具。用它去开发或实现某个系统和产品时,首先需要了解和回答用它要做什么?你可以用文档也可以用图形来说明,但UML表示法是最标准和通用的,UML可让其它与你配合的人更清楚你的想法。
5图形是最简洁的表述思想方式。
补充:
如果你是软件或者将系统开发作为方向(尤其是信息系统)那就必学,其它方向可暂时放放吧!学校能否教好值得怀疑。
UML:Unified Modeling Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。
UML的定义包括UML语义和UML表示法两个元素。
UML是在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的制品的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软件架构层次,已经被验证有效。
统一建模语言(UML)是一种模型化语言。模型大多以图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息之用的文本。这些虽简单却非常重要,在UML规则中相互联系和扩展。
UML的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。
总之,UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。
UML是什么?
根据百度百科上的资料我们看到,uml指的是统一建模语言,又称标准建模语言。是软件设计的重要参考依据,是开发者读懂设计意图和理清逻辑步骤的重要工具,接下来就让我们来进一步了解下uml概念范围内的这几个基础概念。
一用例图
1概念:用例图是显示一组用例,参与者以及它们之间关系的一种图。
2作用:
(1)描述将要开发系统的功能需求和系统的使用场景(2)促进各阶段开发工作的进展
(3)用于验证和确认系统需求
3组成:
(1)参与者:角色,代表系统的用户
(2)系统边界:确定系统的范围
(3)用例:它代表系统提供的服务
(4)关联:它表示参与者与用例间的关系
4关系:
(1)包含:包含关系指的是两个用例之间的关系,其中一个用例的行为包含另外一个用例的行为
(2)拓展关系:
对基本用例的拓展,基本用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
(3)泛化关系:
一般与特殊的关系。多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象为父用例,其他的用例作为泛化关系中的子用例
(4)分组关系
二类图和对象图
1类图的作用
描述系统的结构编程的重要依据
2类的表示
三栏矩形框
3属性和 *** 作(方法)的可见性,viso表示
Public Private Protect
4对象图的表示
两栏矩形框:名称和属性
5类图和对象图的表示区别
(1)名称形式不同,对象的名称形式为"对象名:类名",类图的名称形式为":类名"
(2)属性不同,对象图中不包含 *** 作
(3)对象不具有多重性,只是作为一个独立的实体
6类之间的关系
(1)依赖关系;
(2)泛化关系:一般元素和特殊元素之间的分类关系,在类型上的而不是在实例上的
(3)关联关系:一种结构关系,指明一个事物的对象与另外一个事物的对象之间的联系,描述了系统中对象或实例之间的离散连接。
(4)关联关系
(5)实现关系
三顺序图和通信图
1顺序图的概念
顺序图是强调消息时间顺序的交互图,它描述了对象之间传送消息的时间顺序,用于表示用例中的行为顺序
2顺序图的作用
把用例图表达的需求转换为进一步,更加正式层次的精细表达
3顺序图的组成,每一个组成元素的概念含义
(1)角色:系统角色可以使人或者其他的系统或者其子系统
(2)对象:跟他在类图的定义一致
(3)生命线
(4)激活器
(5)消息
4消息的类型
(1)同步消息
(2)异步消息
(3)自关联消息
通信图概念和作用以及组成元素
显示了一系列的对象和在这些对象之间的联系及对象间发送和接收消息。
组成元素:
(1)活动者
(2)对象
(3)链接
(4)消息
6顺序图和通信图的联系和区别
顺序图和通信图作为交互图都表示出对象间的交互作用,两者都比较直观的规定了发送对象和接受对象的责任,并且都支持所有的消息类型,在耦合性上两者都可以作为衡量的工具通信图的概念和作用以及组成元素显示了一系列的对象和在这些对象之间的联系及对象间发送和接收消息。
组成元素:
(1)活动者
(2)对象
(3)链接
(4)消息
6顺序图和通信图的联系和区别
顺序图和通信图作为交互图都表示出对象间的交互作用,两者都比较直观的规定了发送对象和接受对象的责任,并且都支持所有的消息类型,在耦合性上两者都可以作为衡量的工具通信图概念和作用以及组成元素显示了一系列的对象和在这些对象之间的联系及对象间发送和接收消息。
组成元素:
1活动者
2对象
3链接
4消息
6顺序图和通信图的联系和区别
顺序图和通信图作为交互图都表示出对象间的交互作用,两者都比较直观的规定了发送对象和接受对象的责任,并且都支持所有的消息类型,在耦合性上两者都可以作为衡量的工具
用例图当然很好用,不然RUP(Rational Unified Process,统一软件开发过程,统一软件过程)也不会让用例驱动作为核心方法论之一,当然用例图自身也有很多不足,需要其它技术作补充。一、优点:简洁、直观。是的,确实比较直观,几个小人人、几个椭圆,外加几条不多的线,用一个矩形一框就出来了,了不起再弄个用例描述,系统交互行为很清晰地表达出来。规范、易理解。用例图是UML建模里比较常用的一个图,你用,我用,大家都用,并且标识、要素等均符合UML2中的约定,并且不依赖开发语言,所以说它和其它图一样规范因为规范所以对UML建模用户来说是易理解的。用户导向、描述精准。用例方法完全是站在用户的角度上(从系统的外部)来描述系统的功能的。我们不管系统内部实现功能的机制,仅仅把系统看作一个黑盒,然后参与者与其进行交互,也就是用例是基于用户场景的,所以能更精准地表达用户功能需求。需求与设计分离。因为用例图是站在系统外的视角描述系统需求的,所以并没有介入到系统内部实现细节,这就让需求和设计工作分离开来,条理清晰。便于设计测试用例。用例图描述的就是一个用户场景,测试设计人员正好可以根据用例图设计测试用例。边界清晰。一个矩形框把系统边界清晰、明确地表达出来,便于设计人员据此把握系统范围。敏捷。用例图允许我们讲故事、写卡片,允许我们比较敏捷地实现功能需求方面的管理与交流。二、不足:不能表达非功能需求。用例图是描述用户功能需求的工具,对于可靠性、性能等非功能需求无能为力。对不懂UML的客户或程序员来说难以理解。对UML支持者来说,用例图可能是规范的、清晰的、简单的、易理解的,但对并未掌握UML建模技术的人来说理解那些椭圆并非易事,再说还有一系列如同伪代码似的事件流。粗粒度。是的,用例图不涉及设计实现细节,只是一个功能划分,粒度非常粗,很多细节无从描述,需要用其他工具进行辅助说明。三、常见的错误用法和问题:客户看不懂用例图,又要提供一个高大上(画UML图)的需求规格文档。这时候怎么办呢?作者建议画客户需要画的,然后把用例图制作成一个个卡片去跟客户讲故事,客户不会连故事都听不懂吧除非你讲故事的水平比画图的水平还拙劣。架构师或程序员看不懂用例图。看不懂的话这些用例委实就成了摆设,这时又该怎么办呢?对的,仍旧讲故事,说业务场景并用用例规约加以辅助说明。用例图涉及到实现细节。这个要加以避免,如果过早介入系统内部实现细节,过多的系统内部设计描述会让客户和程序员疲惫不堪。系统边界模糊不清。建议用例图绘制时从上往下画,比较复杂的子系统可以拆在不同的用例图中。用例过多。系统总的用例数不宜超过50个,建议最好是20-30个。过多的用例必定会有过多的Association、include、extend、generalize等关系,各种关系错综复杂违背了我们使用用例图的初衷。
以上就是关于在UML中,约束有哪两种表示方法它们分别是什么全部的内容,包括:在UML中,约束有哪两种表示方法它们分别是什么、学习UML对软件开发作用(uml主要用于哪种软件开发方法)、什么是uml等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)