《SysML精粹》学习记录
第十章:包图
包图简介
包图是显示系统模型的组织方式时所创建的图。系统模型的组织方式由包的层级关系决定,而包的层级关系则将模型中的元素分配到逻辑上紧密相关的组中。系统模型并没有唯一正确的结构。包图可以显示内嵌在包中的包,从而表达模型的包含层级关系。随着生命周期的设计阶段不断进展,模型的结构不断扩展延伸,在此期间会创建新的包图以表达模型结构。
包图的图类型缩写是pkg,图的外框代表的模型元素类型可是:package(包)、model(模型)、modelLibrary(模型库)、view(视图)、profile(概况)。命名空间只是允许包含其他已命名元素的模型元素,即命名空间可以拥有已命名的元素,而它们内嵌在模型层级关系之中。因此,命名空间只有在系统模型中才有意义,在系统的实例中是没有意义的。图的头部命名的包是显示在内容区域的元素的所有者(包含者),除非在图上显式地显示了另一个命名空间的包含关系。SysML 提供了三种标识法,来显式地表达命名空间的包含:十字准线标识法、嵌套标识法和限定名称字符串标识法。这三种标识法在图中出现,会覆盖图的头部所显示的默认命名空间。包的标识法是一个文件夹符号:在左上角带有标签的矩形。
十字准线标识法出现在关系的命名空间一端,是带有圆圈围绕的加号的实线。选择使用嵌套的时候,SysML要求建模者在文件夹符号的标签上显示上一级包的名称。限定名称字符串标识法(命名空间包含的最后一个标识法)最能够有效利用空间(类似于C++中的命名空间)。其限定名称字符串可以任意长,从而指定多级包含关系,直到深深嵌套在系统模型底层的元素。可以针对任何元素使用限定名称字符串,以指定它在模型层级关系中的位置,而不管它出现在什么样的图中。完全限定的名称:限定名称字符串以模型本身的名称开始(例如:DellSat-77 System Model::Domain::Actors)。相对限定的名称:限定名称字符串并没有以模型的名称开始(例如:Domain::Actors)。指向字符串末尾元素的路径和图的头部中所命名的元素是相关的(以此开始)。建模者通常只有在元素的所有者没有显示在同一幅图上的时候,才会使用限定名称字符串。
可以用带有开口箭头的虚线来绘制包之间的依赖关系。在提供方元素(位于箭头端)中的变化可能会导致客户端(位于尾端)的变化。SysML对于可以显示在依赖关系任意一端的元素类型并无约束。
包引入关系:一个包引入了另一个包的内容。标识法是带有开放箭头的虚线,并且在线的附近带有关键字<<import>>。
特定包
包只是一系列命名元素的容器,其中有些可能是另外的包。SysML定义了四种特定类型的包:模型、模型库、特征和视图。除了基本的容器功能之外,每种包都有独特的目的。
模型这种包用作包含层级关系的根,即它是层级关系中顶级的包。模型的标识法和包一样:文件夹符号,但是模型必须在名称之前拥有<<model>>关键字,或者在文件夹符号的右上角有一个小三角形。
模型库这种包包含一系列要在多个模型中重用的元素。模型库的标识法和包一样:文件夹符号,但它在名称上面必须有<<modelLibrary>>关键字。不需要把任何特定的包创建为模型库;常见的模型库包括针对值类型和约束模型的。建模者还可能创建模型库来包含低层次硬件和软件组件的定义(模块),像通过审核的组成部分列表(Approved Parts List,APL)、传感器、操作系统库和编程语言库等。
特征是一种包含一系列元类型的包。元类型会定义一种新的模型元素,这是通过向已存在的模型元素增加属性、约束或者语义完成的。当建模者创建一个特征(元类型包)的时候,实际上定义了一种新的建模语言,它是现存建模语言的扩展。建模者可以把特征应用到包、模型或者模型库中。这表明包可以包含新的模型元素,它们存在于那个特征定义的建模语言中。创建新的特征和元类型是一种高级实践,一般不会在日常活动中经常碰到。
视图是过滤后的模型子集的包。这种包会有选择地引入系统模型中的其他包、元素和图,合起来代表一种模型。视图由定义好的视点组成。视点是一种模型元素,它包含五种属性:利益相关者、关注点、目的、语言和方法。利益相关者属性是一个字符串,其中列举了可能会发现这个视点与其关注点相关的利益相关者。关注点属性是一个字符串,它说明了利益相关者的一些问题,组合视图包含的元素和图会回答那些问题。目的属性是一个字符串,它指定了建模者定义这个视点的原因。语言属性是一个字符串,其中列举了在组合视图中将会使用的建模语言。方法属性是一个字符串,它指定了建模者在构建组合视图的时候需要遵循的一系列规则。如果建模者想要构建组合视图(手动执行引入包的操作),那么方法字符串就可以是一个短语或句子,以非正式的自然语言(像英语)说明。如果建模者想要使用SysML建模工具以自动化的方式创建组合视图,那么方法字符串必须拥有以正式的查询语言叙述的一系列声明,而那种工具会支持该语言。<<conform>>关系是一种特殊的依赖关系,标识法为:带有开口箭头的虚线,从视图画向视点。可以在项目中为不同的利益相关者创建多个视点(以及合规视图),可以方便利益相关者快速定位所关心的模型子集。
包图与模块定义图的选择
包图可以显示包,也可以显示它们包含的元素:模块、执行者、值类型、约束模块、接口以及流规范。模块定义图可以显示定义的元素:模块、执行者、值类型、约束模块、接口和流规范——以及包含它们的包。包图与模块定义图的选择:当想要把图的重点放在元素的定义以及它们之间的关系上时,就创建BDD;当想要把图的重点放在包和它们之间的关系上时,就创建包图。尽量避免在BDD上显示包,如果需要在图上指定元素的命名空间,那么可以使用限定名称字符串。
小结
包图会说明系统模型结构(即包包含的层级关系)。建模者通常会创建包图来表达模型元素的分组逻辑,并帮助利益相关者在需要定位特定元素的时候在模型结构中导航。SysML定义了四种特殊类型的包。模型是包含层级关系的根。模型库包含一系列可能在多个模型中重用的元素。特征包含一系列元类型的包;元类型是已存在的建模语言的扩展,会定义一种新的语言,更适合用在特定的设计领域。视图是包含经过过滤的模型子集的包,这个子集会组成经过定义的视点,并解决特定利益相关者的问题。