1
面向对象软件工程实践指南
1.2.3.5 3.5 静态建模机制模型图
3.5 静态建模机制模型图

3.5.1 用例图(use case diagram)

使用用例捕获系统功能需求,代表了从用户角度出发的应用系统的功能。用例图是用例的可视化表示。用例图主要包含参与者、用例及他们之间的关系。

参与者中的角色(actor),可以是人也可以是事物。若用例执行的动作由参与者引起,则这个参与者称为主参与者,放在用例的左侧;若参与者帮助用例完成动作,则这个参与者称为次参与者,通常放在用例的右侧。用例是用户与计算机的一次交互。参与者通过关联与用例发生作用,关联用一条线段表示。

用例之间的关系用带有箭头的虚线表示,有扩展、包含两种依赖关系以及泛化关系。以教室预订系统为例,系统的用例图如图3-2所示。中间的椭圆形代表了系统的用例,它们之间存在包含关系。Applicant和Admin是引发用例执行的主参与者,Notification System和Academic Information System是辅助用例完成的次参与者。

图3-2 教室预订系统用例图

3.5.2 类图(class diagram)

类图用于描述系统中的对象类型以及存在于它们之间的各种静态关系。类图也展示类的性质和操作,以及应用于对象连接方式的约束。性质(property)代表类的结构特性,有两种表示:属性和关联。属性(attribute)把性质描述成为类方框中的一行文本。关联(association)是一根两个类之间的实线,方向从源类到目标类,关联的名称以及多重性放在关联的目标端。图3-3给出了教室预订系统中类图的部分片段。

图3-3 教室预订系统的类图片段

3.5.3 包图(package diagram)

包是一种分组结构,最常见的用法是组织类。包图的主要元素是包、它们的可见性和它们的依赖关系。在UML2.0中,包的表示方法为左上角带有标签的文件夹,使用双冒号来表示所属包的名称。图3-4为包图的示例。

图3-4 包图

3.5.4 对象图(object diagram)

对象图用来说明系统中某一时刻存在的对象以及对象之间的关系。对象图是某时间点上的对象在系统中的快照。由于对象图展示的是实例而不是类,也称作实例图。对象图的表示与类图相似,不同的是对象名称下面带有下划线,每个名称的形式一般为“实例名:类名”,两个部分都可选,若只包含类名,则必须包含冒号。图3-5展示了对象图的例子。

图3-5 对象图

3.5.5 组件图(component diagram)

组件图描述了组件以及组件之间的协作。组件是代表代码、二进制的物理模块。在UML2.0中组件的名称和分类器是矩形框右上角显示的组件图标。

在软件开发过程中,我们可以用组件图来表达架构的逻辑分层和划分方式。图3-6展示了教室预订系统的组件图。

图3-6 组件图

3.5.6 部署图(deployment diagram)

部署图用于描述系统硬件的物理拓扑结构以及在此结构上运行的软件。部署图包含三个基本元素:制品(artifact)、节点(node)和它们之间的连接(association)。

1)制品

制品是软件中的具体文件,这些文件可以是可执行的(比如.exe文件、DLL或JAR文件),或数据文件、配置文件、HTML文档等。制品用类方框来表示。

2)节点

节点是一种计算资源,通常包含存储和处理能力。制品部署在节点上执行。节点可以包含其他节点,以表示它复杂的执行能力。节点分为两种类型:设备和执行环境。设备是提供计算能力的硬件,例如计算机或者路由器等。执行环境是软件,用于部署特定的执行工件,如Database,执行环境通常以设备作为宿主。

3)连接

节点之间的连接表示系统之间进行交互的通信路径,连接上可以指明网络协议。图3-7是教室预订系统的部署图,包含了节点、节点实例以及它们之间的连接。

图3-7 教室预订系统部署图