(转)uml 概念域
· UML 的目标
UML 语言的开发有多个目标。首先,最重要的目标是使 UML 一个通用的建模语言,可供所有建模者使用。它并非某人专有,且建立在计算机界普遍认同的基础上,即它包括了各种主要的方法并可作为它们的建模语言。至少,我们希望它能够替代 OMT , Booch , Objectory 方法以及参与 UML 建议制订的其他人所使用的方法建立的模型。其次,我们希望 UML 采用源自 OMT Booch, Objectory 及其他主要方法的表示法,即尽可能地它能够很好地支持设计工作,像封装、分块、记录模型构造思路。此外,我们希望 UML 准确表达当前软件开发中的热点问题,比如大规模、分布、并发、方式和团体开发等。
UML 并不试图成为一个完整的开发方法。它不包括一步一步的开发过程。我们认为一个好的软件开发过程对成功的开发软件是至关重要的,我们向读者推荐一本书 [Jacobson-99] 。 UML 和使用 UML 的软件开发过程是两回事,这一些很重要。我们希望 UML 可以支持所有的,至少是目前现有的大部分软件开发过程。 UML 包含了所有的概念,我们认为这些概念对于支持基于一个健壮的构架来解决用例驱动的需求的迭代式开发过程是必要的。
UML 的最终目标是在尽可能简单的同时能够对实际需要建立的系统的各个方面建模。 UML 需要有足够的表达能力以便可以处理现代软件系统中出现的所有概念,例如并发和分布,以及软件工程中使用的技巧,如封装和组件。它必须是一个通用语言,像任何一种通用程序设计语言一样。然而,这样就意味着 UML 必将十分庞大,不可能像描述一个近乎于玩具一样的软件系统那样简单。现代语言和操作系统比起 40 年前要复杂多,因为我们对它们的要求越来越多。 UML 提供了多种模型,不是在一天之内就能够掌握的。它比先前的建模语言更复杂,因为它更全面。但是你不必一下就完全学会它,就像学习任何一种程序设计语言、操作系统或是复杂的应用软件一样。
· UML 概念域
UML 的概念和模型可以分成以下几个概念域。
静态结构 任何一个精确的模型必须首先定义所涉及的范围,即确定有关应用、内部特性及其相互关系的关键概念。 UML 的静态组件称为静态视图。静态视图用类构造模型来表达应用,每个类由一组包含信息和实现行为的离散对象组成。对象包含的信息被作为属性,它们执行的行为被作为操作。多个类通过泛化处理可以具有一些共同的结构。子类在继承它们共同的父类的结构和行为的基础上增加了新的结构和行为。对象与其他对象之间也具有运行时间连接,这种对象与对象之间的关系被称为类间的关联。一些元素通过依赖关系组织在一起,这些依赖关系包括在抽象级上进行模型转换、模板参数的捆绑、授予许可以及通过一种元素使用另一种元素等。另一类关系包括用例和数据流的合并。静态视图主要使用类图。静态视图可用于生成程序中用到的大多数数据结构声明。在 UML 视图中还要用到其他类型的元素,比如接口、数据类型、用例和信号等,这些元素统称为类元,它们的行为很像在每种类元上具有一定限制的类。
动态行为 有两种方式对行为建模。一种是根据一个对象与外界发生关系的生命历史;另一种是一系列相关对象之间当它们相互作用实现行为时的通信方式。孤立对象的视图是状态机—当对象基于当前状态对事件产生反应,执行作为反应的一部分的动作,并从一种状态转换到另一种状态时的视图。状态机模型用状态图来描述。
相互作用对象的系统视图是一种协作,一种与语境有关的对象视图和相互之间的链,通过数据链对象间存在着消息流。视图点将数据结构、控制流和数据流在一个视图中统一起来。协作和互操作用顺序图和协作图来描述。对所有行为视图起指导作用的是一组用例,每一个用例描述了一个用例参与者或系统外部用户可见的一个功能。
实现构造 UML 模型既可用于逻辑分析又可用于物理实现。某些组件代表了实现。构件是系统中物理上的可替换的部分,它按照一组接口来设计并实现。它可以方便地被一个具有同样规格说明的构件替换。节点是运行时间计算资源,资源定义了一个位置。它包括构件和对象。部署图描述了在一个实际运行的系统中节点上的资源配置和构件的排列以及构件包括的对象,并包括节点间内容的可能迁移。
模型组织 计算机能够处理大型的单调的模型,但人力不行。对于一个大型系统,建模信息必须被划分成连贯的部分,以便工作小组能够同时工作在不同部分上。即使是一个小系统,人的理解能力也要求将整个模型的内容组织成一个个适当大小的包。包是 UML 模型通用的层次组织单元,它们可以用于存储、访问控制、置以管理配及构造包含可重用的模型单元库。包之间的依赖关系是对包的组成部分之间的依赖关系的归纳。系统整个构架可以在包之间施加依赖关系。因此,包的内容必须符合包的依赖关系和有关的构架要求。
扩展机制 无论一种语言能够提供多么完善的机制,人们总是想扩展它的功能。我们已使 UML 具有一定的扩展能力,相信能够满足大多数对 UML 扩充的需求而不改变语言的基础部分。构造型是一种新的模型元素,与现有的模型元素具有相同的结构,但是加上了一些附加限制,具有新的解释和图标。代码生成器和其他的工具对它的处理过程也发生了变化。标记值是一对任意的标记值字符串,能够被连接到任何一种模型元素上并代表任何信息,如项目管理信息、代码生成指示信息和构造型所需要的值。标记和值用字符串代表。约束是用某种特定语言(如程序设计语言)的文本字符串表达的条件专用语言或自然语言。 UML 提供了一个表达约束的语言,名为 OCL 。与所有其他扩展机制一样,必须小心使用这些扩展机制,因为有可能形成一些别人无法理解的方言。但这些机制可以避免语言基础发生根本性变化。