一些常用术语总结

25. analysis(分析)
分析是系统捕捉需求和问题的阶段。分析着重于做什么,设计着重于如何去做。在一个迭代过程中,各个阶段不必连续地执行。这个阶段的这种效果由分析层模型(特别是用例视图和静态视图)来表示。对比:analysis,design,implementation和deployment。
见stages of modeling,development process。
26. analysis time(分析时间)
分析时间是软件开发过程中分析活动执行时的时间。不要假设一个系统的所有分析都在同一时刻或先于其他活动发生,如设计和实现。对于任何独立元素,各种活动是连续的,但是对整个系统不同的活动可以混合在一起。
见design time,modeling time。
27. ancestor(祖先)
祖先是通过一个或多个父关系路径建立起的元素。
见generation,parent。
28. architecture(构架)
构架是一个系统的组织结构,包括系统分解成的各个部分、它们的连接性、交互机制和通知系统设计的向导规则。
见package。
语义
构架是有关软件系统组织的重要决定的集合,它包括结构元素和将这些元素连接起来的接口的选择、结构元素的大规模组织和它们的连接的拓扑结构、在元素的协作中说明的行为、对整个系统都有效的重要的机制、指导它们的组织的构造风格。例如,决定建立一个系统,每一层包含一定数量的子系统,这些子系统以一种特殊的方式通信,而该决定即构架决定。软件构架不仅仅涉及到结构和行为,也涉及到使用、功能、实施、弹性、重用、可理解性、经济和技术约束以及综合、美学的考虑。
讨论
有关系统分解的构架决定可以通过模型、子系统、包和构件说明。这些元素间的依赖关系是构造适应性和修改系统难易程度的主要指标。
构架的另一个主要部分是它准备建立在其上的机制。这些可以通过协作和模式获得。
非结构化的决定可以用标记值说明。
29. argument(参量)
参量是对应于参数的具体的值。
见binding,参数parameter,substituablility principle。
语义
消息的运行实例有一张参量值表,其中每一个的类型都必须与信号或操作声明中的对应参数的声明类型相匹配。如果一个值的类或数据类型与参数的声明类型相同或是它的后代,那么这个值就是相容的。通过替代原理,一个后代的值可用在任何明声祖先类型声明的地方。一个值的实现取决于模拟器或它出现的执行环境。
在协作或状态机中,表达式为动作而出现。在这些表达式中,调用和消息发送需要参数说明。这些参数说明也是表达式。当在运行时计算这些表达式时,它们必须计算与它们匹配的声明参数一致的值。
然而在模板绑定中,UML模型中的参量在建模时间出现。在这种情况下,参量表示成用某种语言(通常是约束语言或编程语言)表示的表达式。模板参量不仅仅可以包括普通的数据值和对象,也可以包括类元本身。在后一种情况下,对应的参数类型必须是类元或其他的元类型。模板参量的值必须在建模时确定,它不能用来表示运行时的参量。如果参数没有在建模时间被限定则不要使用模板。
30. artifact(制品)
制品是被软件开发过程所利用或通过软件开发过程所生产的一段信息,如外部文档或工作产物。制品可以是一个模型、描述或软件。
31. association(关联)
如果几个类元的实例之间有联系,那么这几个类元之间的语义关系即关联。
见association class,association end,association generation,binary association,n-ary association。
语义
关联是两个或多个特定类元之间的关系,它描述了这些类元的实例的联系。参与其中的类元在关联内的位置有序。在一个关联中同一个类可以出现在多个位置上。关联的每个实例(链接)是引用对象的有序表,关联的外延即这种链接的一个集合。在链接集合中给定的对象可以出现多次,或者在关联的定义允许的情况下可以在同一个链中(在不同的位置)出现多次。关联将一个系统组织在一起,如果没有关联,那只有一个无连接类的集合。
结构
关联可以有一个名称,但是它的大部分描述建立在关联端点中,每个端点描述了关联中类对象的参与。关联端点只是关联描述的一部分,不是可区分的语义或可用符号表示的概念。
* 名称。关联可以有一个名称,在包含包的所有关联和类中它必须是唯一的(关联类既是一个关联又是一个类,所以关联和类分享同一个命名空间)。关联不是必须要有一个名称,它的端点的角色名称提供了在同一个类中辨别多个关联的另一种途径。按照习惯,名字以类在表中出现的顺序读出:Person为compry工作;Salesman卖Car给消费者。
* 关联端点。关联包含一张有多个关联端点的有序表(也就是说这些端点是可以被区分的并且是不可替换的)。每个关联端点定义了在关联中给定位置的一个类(角色)的参与。同一个类可以出现在多个位置上,而位置通常是不可交换的。每个关联端点指定了的应用于对应对象的参与特性,如在关联中一个独立的对象在链接中会出现多少次(多重性)。某些特性,如导航性只应用于二元关联,但是多数可以应用于n元关联。
见association ends。
实例化
链是关联的实例。它包含对于每个关联端点的槽,每个除对象表之外,槽包含对一个对象的引用,该对象是作为对应关联端点的类的(直接的或间接的)实例。链没有身份标识。关联外延中的链组成了一个集合,在这之中不会存在副本。一个对象在链集合中出现的次数必须与关联的每个端点的多重性相一致,例如,关联SoldTickets将多张票与一场演出连接起来,那么每张票在一个链中只出现一次,但是每场演出可以出现多次,每次对应不同的票。
链在系统执行过程中可以被创造和销毁,服从每个关联端点可修改性的限制。在某些情况下,链可以从关联端点一端的对象创建或改变而不能从另一端做同样的事。一个链从一组对象引用中创建。链没有自己的身份标识,所以讨论改变它的值是没有意义的。然而,它可以被销毁,可创建一个新的链来代替它。一个关联类的链,除了定义它的身份的一组对象外还有一个或多个属性值,而且属性值在保持参与对象的引用的情况下可以由操作来改变。
表示法
二元关联用连接两个类边界的实线路径表示(如图13-22),n元关联用菱形表示,菱形通过路径与每个参与到其中的类连接,见后文如图13-129 (在二元关联中菱形省略)。路径的多个端点可以连接到一个独立的类。
路径包含一个或多个相关的实线部分,通常是直线,但是也允许使用弧线和其他的曲线,尤其是在表示自关联(即一个类出现多次的关联)时。每个单独的部分没有语义含义。线的风格由用户选择。
见path。
路径的端点处有描述关联中类的参与情况的修饰符号。一些修饰符号位于路径的端点,线和类符号之间。如果有多个符号,那么它们被按照从线的端点到类符号的顺序摆放--导航箭头、聚合/组合菱形、限定符(如图13-23)。
其他修饰符,如名称标签,被放在靠近它们所确认的事物旁。角色名称被放置在靠近路径端点外。

图13-22 关联

图13-23 关联端的修饰符的顺序

图13-24 关联名
关联名称
关联的名称放置在路径的旁边,但远离关联的一端,这样就不会引起混淆(混淆的危险对人类而言纯粹是视觉上的,在一个图形工具内,相关的符号可以用清晰的内部超链接相互连接)。关联名称可以在多段连接中从一个部分拖到另一个部分而没有语义冲突。关联名称可以用一个小的实心三角形表示表中类的顺序。直观地,名称箭头表示如何去读名字。在图13-24中,类Person和类Company之间的关联 Works For 有一个从Person指向Company的名称三角形,该关联可以读成"人为公司工作"。请注意名称旁的次序三角形纯粹是一个符号化的装置,它用来指明关联端点的顺序。在模型中,端点本质上是有序的,所以模型中的名字不需要次序特性。
关联上的构造型通过将构造型名字放在小双尖括号内表示,它放在关联名称前或替代关联名称。特性表可以放置在关联名称的后面或下面。
关联类
我们将类符号用虚线连接到关联路径上来表示关联类。对n元关联来说,虚线连接到关联菱形上。关联中有关类的特性表示在类的符号中,而有关关联的特性则表示在路径上。然而,即使图形由两个图构成,基本的建模结构也是单个元素。
详association class。
异或约束
{xor}约束将两个或多个关联连接起来,这些关联在某一端连接到一个独立的类(基类)。基类的一个实例可以参与到通过约束连接的关联中的一个。必须注意到所选择关联的多重性。如果任何关联多重性包括基数0,那么基类的一个实例可能不会有关于关联的连接,否则,它必定有一个。
异或约束用连接两个或多个关联的虚线表示,所有关联必须有一个公共类,约束字符串{xor}标识在虚线旁(如图13-25)。远离公共类一端的角色名必须是不同的(这仅是一种通过使用标准约束重叠实现好的约束表示法的预定义用法)。

图13-25 异或关联
讨论
关联不需要有名字。通常角色名更方便一些,因为它们为导航和编码生成提供了名字,并且避免了如何读名字的问题。如果它有名字,那么名字在它的包内必须是唯一的。如果在两个类之间只有一个关联,那么类名对于确定关联来说就足够了。
当真实世界的概念有一个名字时,关联名更有用一些,如Marriage 或Job。当关联名被指定依照给定方向读出,仅仅用角色名更好一些,这样读起来不会有歧义。
参看暂时连接我们可得到有关建模只在过程执行时存在的实例关系的讨论。
见组成部分的有关涉及两个关联的泛化的例子。
标准元素
隐含(implicit),永久性(persistence),异或(xor)。
关联(二元) association(binary)
见二元关联(binary association)。
关联(n维) association(n-ary)
见n元关联(n-ary association)。
32.关联类(association class)
关联类既是关联又是类。关联类有着关联和类的特性。它的实例是有属性值的连接和对其他对象的引用。尽管它的符号包括关联和类的符号,但是它的确是一个独立的模型元素。
见关联(association),类(class)。
语义
关联类有着关联和类的特性,它将多个类连接起来又有着属性和操作。当每个链必须有它自己的属性值、操作或对对象的引用时,关联类就有用了。它可以被看作有着对每个关联端点有着特殊类引用的类,对于实现它而言这是一条明显和通常的途径。每个关联类的实例有对象引用和通过类部分说明的属性值。
连接类A和类B的关联类C不同于与A和B有二元关联关系的类D,(见讨论部分)。与所有的连接一样,像C这样的关联类的一个连接从对象引用中得到它的身份。属性值没有涉及到提供身份上。所以即使它们的属性值有区别,两个连接不能有同样的(a,b)对象对,因为它们不会有同样的身份。也就是说,给定的属性E,不允许(a、b、e1)和(a、b、e2)都是C的实例,因为它们分享同一个身份(a、b)。然而,对象有固有的身份,所以两个对象可以有同样的属性值或对相同对象的连接。也就是说,一个关联包括像C这样的关联类,是一个有序表集合并且它的对象引用中没有副本;然而,像D这样的隐含关系更像一个包,它可以有副本。见讨论。
关联类可以有操作,这些操作可以改变连接的属性或者增加连接本身和移走它。因为关联类也是一个类,它也可以参与到关联本身。
关联类可以不把它自己作为参与类中的一个(虽然有些人能够确切地找到这种递归结构的意义。

图13-26关联类
表示法
关联类表示成一个类符号(矩形),由一条虚线与关联路径连接(如图13-26)。类符号的名字和附着在关联路经上的名字字符串是冗余的。关联路径可以有通常的关联端符号。类符号可以有属性和操作,作为类它参与到自己的关联中。在虚线上没有符号,它不是一个关系而仅仅是整体的关联类符号的一部分。
风格指导
连接点不应该太靠近路径的两端,这样就不会使它看起来像连接在路径的端点上或连接到任何角色符号上。
请注意关联路径和关联类是独立的模型元素,所以有着独立的名字。名字可以表示在路径上或类符号上或在两者上。如果关联类只有属性但是没有操作或其他的关联,那么名字可以在关联路径上表示出来,并且为了突出它的"关联自然性"而从关联类符号中省略。如果它有操作和其他的关联,那么名字会从路径上忽略并且为了突出"类自然性"而放在类矩形中。在两个情况中,实际的语义都没有区别。
讨论
图13-26表示了代表雇用关系的关联类。公司与个人之间的雇用关系是多对多的。一个人可以有多个工作,但只有一个工作是对指定的公司的。薪水既不是公司又不是个人的属性,因为关联是多对多的。它必须是关系本身的属性。
老板-工人的关系不仅仅是两种人之间的关系,它是处于某种职业的人与处于另一种职业的人之间的关系,它是关联类和它自己之间的关联。
下面的例子表示关联类和建模成类的具体化关系之间的区别。在图13-27中,股票的所有者被建模成人与公司之间的关联。关联类属性quantity表示了拥有股份的数量。这个关系建模成关联类是因为对任何person-company对只有一个入口。
如图13-28所示,为了建模购买股票,我们没有用关联类,因为对同一个人和公司来说可以有多个购买。然而,它们必须是可区别的,因为每次购买是不同的而且有它自己的日期和价格以及数量。这个关系必须是具体化的,即形成有着自己的身份证明的可区别的对象。一个普通的类是建模这种情况的正确的方式,因为每次购买有着它们自己的身份证明,独立于与它联系的Person和Company类。

图13-27 带属性的关联类

图13-28 具体化的关联
33.关联端点(association end)
关联端点是关联的一个结构部分,它定义了在关联中类的参与。在同一个关联中一个类可以连接到多个端点。在关联中的关联端点有不同的位置而且有名字,并且通常是不可互换的。关联端点一旦脱离它的关联独立存在也不再有含义。
语义
结构
关联端点保持一个目标类元的引用。它定义了在关联中类元的参与。关联的实例(链)必须在指定位置含有给定类或它的一个后代的实例。类的后代继承关联的参与。
一个关联端点有如下的特性:
聚集(aggregation)
判定相关对象是聚集还是组成,有枚举值{none,aggregate, composite}。如果值是none,那么关联就叫做一个聚集或一个组成。缺省情况是none。只有二元关联才能是聚集或组成,并且只有一端能是聚集或组成。
可修改性(changeability)
判定与对象有关的连接集合是否可修改,有枚举值{changeable,frozen,addOnly}。缺省情况下是changeable。
接口说明(interface specifier)
对相关对象,类元中的说明类型的可选择的限制。
多重性(multiplicity)
与一个对象相关的对象的可能的数量,通常指定为整数范围。
导航性(navigability)
一个布尔值,表示是否可能将一个二元关联转化以得到有关一个类实例的对象或对象集合。缺省是真。
定序(ordering)
判定一组不相关对象是否是有序的,枚举值有{unordered,ordered}。为了设计的目的,sorted值也可以被用到。
限定符(qualifier)
一组属性用来选择关联联系起来的对象。
角色名字(rolename)
关联断点的名字,一个标识符字符串。这个名字确定关联内对应类的特定角色。角色名在关联中和在源类的直接和继承的伪属性中必须是唯一的。
目标范围(target scope)
判定连接与对象或整个类是否相关,枚举值有{instance,classifier}。缺省是instance。
可见性(visibility)
连接是否可访问类而不能访问关联中相反的一端。可见性位于连接到目标类的一端。转换的每个方向有它自己的可见性值。
表示法
关联路径的端点连接到对应类符号的矩形边缘上。关联端点特性表示成在路径端点上或旁边的符号,这条路径连接到一个类元符号(如图13-29)。下面的表是对每个特性的符号的简要的总结。要了解详细资料见独立的章节。
聚集 (aggregation)
位于聚集端的一个空的菱形,对于组成来说是一个实菱形。
可修改性(changeability)
在目标端的文字属性{frozen}或{addOnly},通常省略{changeable}。
接口说明(interface specifier)
角色名上的名字后缀,形式是:typename。
多重性(multiplicity)
靠近路径端点的文字标记,形式是:min..max。
导航性(navigability)
路径端点上的箭头表示了导航的方向。如果两个端点都没有箭头,就是假设关联在两个方向上都是可导航的。
定序 (ordering)
靠近目标端点的文字属性{ordered},有目标类实例的有序表。
限定符(qualifier)
在路径端点和源类之间的一个小矩形。矩形内包含了一个或多个关联的属性。
角色名(rolename)
靠近目标端的一个名字标签。
目标范围(target scope)
类范围角色名是加下划线的,除非它是实例范围。
可见性(visibility)
可见性符号{+ # -}位于角色名前。
如果在一个独立的角色上有多个符号,那么它们以如下顺序表示,从连接类的路径的一端读起(如图13-23)
限定符
聚集或组成符号
导航箭头
角色名和多重性应该放置在靠近路径的一端,这样它们不会与别的关联混淆。它们可以放置在线的任何一端。把它们总是放在线的一端更好一些,但是有时明确性更重要。角色名和多重性可以放在同一个角色相对的两边,或者它们也可以放在一起。

图3-29
标准元素
关联(association),全局(global),局部(local),参数(parameter),自身(self)。
34.关联泛化(association generalization)
关联泛化是两个关联之间的泛化关系。
见关联(association),泛化(generation)。
语义
关联之间的泛化是允许的,虽然这有点不太常见。与其他的泛化关系一样,后代元素必须加入到父的内容中(定义规则),并且作为父的外延(实例的集合)的子集。加入到内容中意味着加入附加的限制,一个子关联比它的父有更多的约束。比如,在图13-30中,如果父关联将类Subject和Symbol连接起来,那么子关联可以将类Order和OrderSymbol连接起来,在这里面Order是Subject的子,OrderSymbol是Symbol的子。作为外延的子集意味着子关联的每个连接是父关联的一个连接,而反之却不能。上面的例子遵循了这条规则,任何连接Order和OrderSymbol的连接也可以连接Subject和Symbol,但是不是所有连接Subject和Symbol的连接都可以连接Order和OrderSymbol。
表示法
泛化箭头符号(实线、空三角形箭头)将子泛化和父泛化连接起来。箭头在父泛化一方。由于线段连接到其他的线段,关联泛化符号可能造成混淆所以应该小心使用。
举例
图13-30表示了Subject和Symbol之间普通model-view关联的两个特举例:Order和OrderSymbol之间的关联是一个特例,另一个是Customer和CustomerSymbol之间的关联。它们都将一个Subject类和一个Symbol类连接起来。Subject-Symbol关联可以看作是抽象的关联,而两个子关联是具体的。
这种由关联连接的成对类层次模式相当普遍。
标准元素
被销毁的(destroyed)。

你可能感兴趣的:(设计模式,数据结构,编程,活动,UML)