本章内容
- 对源码建模
- 对可执行程序的发布建模
- 对物理数据库建模
- 对可适应的系统建模
- 正向工程和逆向工程
制品图是对面向对象系统的物理方面进行建模时要用到的两种图之一。制品图展示一组制品之间的组织以及其间依赖关系。
利用制品图可以对系统的静态实现视图建模。这包括对存在于结点上的物理事物的建模,如可执行程序、库、表、文件和文档等。制品图实质上是针对系统制品的类图。
制品图不仅对于可视化、详述和文档化基于制品的系统是重要的,而且对于通过正向工程和逆向工程构造可执行系统也是重要的。
1. 入门
当要建一所房子时,所做的工作肯定不仅仅是设计蓝图。提醒一下,蓝图之所以重要,是因为它可以帮助可视化、详述及文档化想要建造房子的种类,从而可以在合适的时间以合适的价格建造合适的房子。但是,最后还必须把房子的平面图和立体图变成由木头、石头或金属构成的实际的墙壁、地板和天花板。建造房子时不仅需要利用这些原材料,也要利用一些预制品,如橱柜、窗户、门和通风孔。如果在改造一所房子,可能会复用更大的制品,如整个房间和框架。
软件也是这样。通过创建用况图,可以推断所期望的系统的行为。通过类图,可以描述问题域的词汇。通过创建顺序图、协作图、状态图和活动图,可以详述问题域词汇中的事物是如何共同工作来完成这一行为的。最后,将把这些逻辑蓝图转化为存在于比特世界中的事物,如可执行程序、库、表、文件和文档。将会发现有些制品必须从头开始建立,但也会以新的方式复用已有的制品。
利用UML,可以用制品图来可视化这些物理制品的静态方面以及它们之间的关系,并描述构造细节,如下图所示,
2. 术语和概念
制品图(artifact diagram)展示了一组制品及它们之间的关系。在图形上,制品图是顶点和弧的集合。
2.1 普通特性
制品图只是一种特殊的图,所以它也具有与所有其他图相同的普通特性---一个名称和作文模型投影的图形内容。制品图与其他各种图不同的是它的特殊内容。
2.2 内容
制品图通常包括:
- 制品
- 依赖、泛化、关联和实现关系。
与其他图类似,制品图可以包括注解和约束。
2.3 一般用法
制品图用于对系统的静态实现视图建模。这种视图主要支持系统部件的配置管理,它是由可以用各种方式进行组装以产生可以执行系统的制品组成的。
在对系统的静态实现视图建模时,通常将按下列四种方式之一来使用制品图。
1)对源码建模
采用了当前大多数面向对象编程语言,将使用集成化开发环境来分割代码,并将源码存储到文件中。可以使用制品图来为这些文件的配置建模,并设置配置管理系统。这些文件代表了工作产品制品。
2)对可执行程序的发布建模
软件的发布是交付给内部或外部用户的相对完整而且一致的制品系列。在制品的语境中,一个发布注重交付一个运行系统所必须的部分。当用制品图对发布建模时,其实是在对构成软件的物理部分(即部署制品)所做的决策进行可视化、详述和文档化。
3)对物理数据库建模
可以把物理数据库看作模式(schema)在比特世界中的具体实现。实际上模式提供了对永久信息的应用程序编程接口(API),物理数据库模型表示了这些信息在关系数据库的表中或者在面向对象数据库中的页中的存储。可以用制品图表示这些以及其他种类的物理数据库。
4)对可适应的系统建模
某些系统是相对静止的,其制品进入现场、参与执行、然后离开。另一些系统则是较为动态的,其中包括一些为了负载均衡和故障恢复而进行迁移的可移动的代理或制品。可以将制品图与对行为建模的UML的一些图结合起来表示这类系统。
3. 常用建模技术
3.1 对源码建模
3.2 对可执行程序的发布建模
3.3 对物理数据库建模
3.4 对可适应系统建模
3.5 正向工程和逆向工程
4. 提示和技巧
当用UML建立制品图时,记住每一个制品图只是系统的静态实现视图的一个图形表示。
这意味着任何一个制品图都不必捕捉系统实现视图的所有方面,系统中所有制品图合起来表示系统的完整的静态实现视图,其中任何一个制品图只是单独表示实现视图的一个方面。
一个结构良好的制品图,应满足如下的要求:
- 侧重于描述系统的静态实现视图的一个方面。
- 只包含对理解这一方面是必要的那些模型元素。
- 提供与抽象层次一致的细节,只显露对于理解是必要的那些修饰。
- 图形不要过于简化,以致使读者对重要语义产生误解。
当绘制一个制品时,要遵循如下策略:
- 为制品图取一个能表示其意图的名称。
- 摆放元素时,尽量避免线的交叉。
- 在空间上合理地组织图的元素,使得语义上接近的事物在物理位置上也比较接近。
- 用注解和颜色作为可视化提示,以把注意力吸引到图中的重要特征上。
- 谨慎的采用衍型化元素。为项目或组织选择少量通用图标,并在使用它们时保持一致。