7.11 部件
7.11.1 部件概述
部件定义(part definition)表示结构中的一个模块化的单元, 例如系统、系统组件,或者和系统进行直接或间接地交互的外部实体。 部件定义是一种项目定义,因此,其定义了属于时间范畴(可能也在空间范畴)内的实存的一类部件对象。 部件使用是一种项目使用,其类型可能是一个或多个项目定义,但是也可能是不属于部件定义的项目定义。 这使得部件在某些情况下可以作为项目来使用(例如,正在装配的引擎在装配线上流动), 而在其他情况下作为部件来使用(例如,装配好的引擎安装在车辆上)。
系统被构建为一个复合部件,其部件使用本身可以进一步的具有复合的结构。 系统的部件可以具有属性,来表示不同的性能、物理以及其他质量指标。 部件可以具有端口,用于定义相互连接的点。 部件也可以执行(perform)动作,以引起项目在部件之间的连接中流动; 也可以展现(exhibit)状态,来出发不同的动作。
部件可以表示任意层级的抽象,例如不具有实现约束的纯逻辑组件, 或者具有部件编号的物理组件, 或者某些中间层次的抽象。 部件可以用来表示不同种类的系统组件,例如硬件、软件、基础设施、组织,以及系统用户。
7.11.2 部件定义和使用
部件定义或者部件使用可以通过关键字part
声明为一种实存定义或者实存使用。
作为一种项目使用,部件使用只能被项目定义(包括部件定义)或者KerML结构所定义。
部件使用的默认重数是[1..1]
。
item def Person;
part def Vehicle {
ref part driver[0..1] : Person;
part engine : Engine;
part wheels[4] : Wheel;
}
基本的部件定义是Parts库中的Part。 部件使用的基本元素是以下部件使用中的一个:
- 如果声明的部件使用是需求定义或需求使用的利益相关者, 那么就是Requirements库中的RequirementCheck::stakeholders。
- 如果声明的部件使用是需求定义或需求使用的执行者, 那么就是Requirements库中的RequirementCheck::actors。
- 如果声明的部件使用是案例定义或者案例使用的执行者, 那么就是Cases库中的Case::actors。
- 如果声明的部件使用是项目定义或者项目使用的特征,那么就是 Items库中的Item::subparts。
- 否则,就是Parts库中的parts。
注意:由于部件使用的基本元素是由部件定义所定义的部件使用,因此,每一个部件使用总是直接或者间接的 被至少一个部件定义所定义。这种定义如果没有显式指定,那么就是隐式的。
RequirementCheck::stakeholders RequirementCheck::actors Case::actors 和 Item::subparts 都是部件使用。