构件图和部署图
在构造一个面向对象的软件系统的时候,不光要考虑到系统的逻辑部分,也要考虑到系统的物理部分。逻辑部分需要描述对象类、接口、交互和状态机等,物理部分要定义构件和节点。在UML中,使用构件图和部署图来表示物理图形。这两种图用于建立系统的实现模型,使用构件图描述业务过程,使用部署图描述业务过程中的组织机构和资源。
构件:在构件中,将系统中可重用的模块封装成具有可替代性的物理单元,我们称之为构件,它是独立的,是在一个系统或子系统中的封装单位,提供一个或多个接口,是系统高层可重用的部件。构件作为系统中一个物理实现单元,包括软件代码或者相应组成部分,例如脚本或命令行文件等,还包括带有身份标识并有物理实体的文件,如运行时的对象、文档、数据库等。
构件作为系统定义良好接口的物理实现单元,它能够不直接依赖于其他构件而仅仅依赖于构件所支持的接口。通过使用被软件或硬件所支持的操作集——接口,构件可以避免在系统中与其他构件之间直接发生依赖关系。在这种情况下,系统中的一个构件可以被正确接口的其他构件替代。
在系统实现过程中,构件之所以非常重要,是因为它在功能和概念上都比一个类或者一行代码强。典型的,构件拥有类的一个协作的结构和行为。在一个构件中支持了一系列的实现元素,如实现类,即构件提供元素所需的源代码。构件的操作和接口都是由实现元素实现的,当然一个实现元素可能被多个构件支持。每个构件都有明确的功能,它们通常在逻辑上和物理上有粘聚性,能够表示一个更大系统的结构或行为块。
构件图的含义:构件图是用来表示系统中构件与构件之间,以及定义的类或接口与构件之间关系的图。在构件图中,构件与构件之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖或实现关系。
构件图通过显示系统的构件以及接口等之间的接口关系,形成系统的更大的一个设计单元。在以构件为基础的开发中,构件图为架构设计师提供了一个系统解决方案模型的自然形式,并且他还能够在系统完成后允许一个架构设计师验证系统的必须功能是否由构件实现的,这样确保了最终系统将会被接受。
初次之外,对于不同的开发小组人员来说,构件图能够呈现整个系统的早期设计,是系统开发的各个小组由于实现不同的构件而连接起来,构件图成为方便不同开发小组的有用交流工具。系统的开发者通过构件图呈现的将要建立的系统的高层次架构视图,开始建立系统的各个里程碑,并决定开发的任务分配以及需求分析。系统管理员也通过构件图获得将运行于它们系统上的逻辑构件的早期视图,较早的提供关于组件及其关系的信息。
部署图的含义:部署图描述了一个系统运行时的硬件节点,以及在这些节点上运行的软件构件将在何处物理的运行和他们将如何彼此通信的静态视图。在一个部署图中,包含了两种基本的模型元素:节点和节点之间的连接。在每一个模型中仅包含一个部署图。
部署图表示该软件系统是如何部署到硬件环境中的,显示了该系统不同的构件将在何处物理的运行,以及他们如何彼此通信。系统的开发人员和部署人员可以很好地利用这种图去了解系统的物理运行情况。其实在一些情况下,比如我们开发的软件系统只需要运行在一台计算机上,并且这台计算机使用的是标准设备,不需要其他辅助设备,这个时候甚至不需要去为他画出系统的部署图。部署图只需要给那些复杂的物理运行情况进行建模,比如说分布式系统等。系统的部署人员可以根据部署图了解系统的部署情况。
我们可以将建一个部署模型的目的概括如下:1、描述一个具体应用的主要部署结构。通过对各种硬件和在硬件中的软件,以及各种连接协议的显示,可以很好的描述系统是如何部署的。2、平衡系统运行时的计算资源分布。运行时,在节点中包含的各个构件和对象是可以静态分配的,也可以在节点间迁移。如果含有依赖关系的构件实例放置在不同节点上,通过部署图可以展示出在执行过程中的瓶颈。3、部署图也可以通过连接描述组织的硬件网络结构或者是嵌入式系统等具有多种相关硬件和软件的系统运行模型。