图8.10 酒店预订系统建模子组件示意图 2. 构件图的几种使用方式 构件图用于对系统的静态实现视图建模,这种视图主要支持系统部件的配置管理。通常可以按下列4种方式之一来使用构件图: (1)对源代码建模 采用当前大多数面向对象编程语言,将使用集成化开发环境来分割代码,并将源代码存储到文件中。可以使用构件图来为这些文件的配置建模,并设置配置管理系统。 对源代码建模,要遵循如下的策略: l 识别出感兴趣的相关源代码文件的集合,并把它们建模为组件。 l 对于较大的系统,利用包(文件夹)对其进行分组。 l 通过约束来表示源代码的版本号、作者和很后修改日期等信息,利用工具管理这个标记值。 l 用依赖关系来表示这些文件间编译的依赖关系 ,箭头指向为谁依赖谁。利用工具帮助产生并管理这些关系。 例如,图8.11中有5个源代码文件。文件signal.h是一个头文件,标记显示了版本号的值。这个头文件被其他两个文件(interp.cpp和signal.cpp)引用,这两个.cpp文件都是体文件,其中一个文件(interp.cpp)有一个到另一个头文件(iraq.h)的编译依赖关系,而device.cpp又有一个到interp.cpp的编译依赖关系。有了这个图,跟踪变化的影响就容易多了。例如源代码文件signal.h发生了变化将需要重新编译signal.cpp、interp.cpp以及device.cpp这3个文件。该图也显示了irq.h文件将不受影响。
图8.11 对源代码建模 (2)对可执行体的发布建模 软件的发布是交付给内部或外部用户的相对完整而且一致的组件系列。在组件的语境中,一个发布注重交付一个运行系统所必须的部分。当用构件图对发布建模时,其实是在对构成软件的物理部分(即部署组件)所做的决策进行可视化、详述和文档化。 对可执行程序的结构建模要遵循如下策略: l 首先识别你想建模的构件集合。 l 考虑集合中各构件的不同类型。 l 对这个集合中的每个构件,分析它们之间的关系。 例如,图8.12中体现了callcenter.exe对sh_ttsu.dll和shp_a3.dll这两个库的依赖。
图8.23 实例层部署图 (2)描述层部署图 描述层部署图表示了系统中的各节点和每个节点包含的组件。 图8.24中包括的各种关系如下: l 通信链关系(不带箭头的直线):TicketServe(票服务器)与Kiosk(信息厅)之间存在一对多的通信关联,与SalesTerminal(售票终端)也存在一对多的通信关联。 l 依赖关系 (带箭头的虚线):TicketSeller(售票)构件依赖CreditCardCharges(信用卡付款)构件和TicketDB(票数据库)构件提供的服务。 图中顾客购票的情景说明如下: 顾客通过位于Kiosk节点的顾客接口控件进行购票的操作,该顾客接口组件的购票操作依赖于处于TicketServer节点上的售票组件提供的服务,售票组件要完成售票操作,又要依赖统一节点上信用卡付款组件提供的付款服务和票数据库构件。
图8.24 描述层部署图图标 图中各节点的组件说明如下: l 节点TicketServer上的组件:CreditCardChargers/ManagerInterface/TicketSeller/TicketDB。 l 节点Kiosk上的组件:CustomerInterface。 l 节点SalesTerminal上的组件:ClerInterface。 (3)细缆以太网 细缆以太网是目前很流行的一种网络。计算机与网络电缆之间通过一个叫做T型连接器(T-connector)的连接设备连接。一个网段可以通过一个中继器(repeater)加入到另一个网段中。中继器是一种能够将接收到的信号放大、整形后再转发出去的网络连接设备。图8.25显示了为一个细缆以太网建模。