SysML概述
SysML,System Modeling Language,系统建模语言,这抽象的名字就让人望而生畏,九种不同的模型图令初学者手足无措,学习资料的匮乏、说明书的枯燥,令许多想学习的人把SysML拒之门外。而国外的NASA实验室、洛克希德.马丁等多家知名单位早已采用SysML进行产品设计,巴西海军甚至在某项目的招标文件中,明确提出竞标单位要使用SysML描述解决方案。SysML究竟是什么,有何过人之处?就让我为您揭开SysML的神秘面纱。
现阶段的装备都是高复杂性大系统,装备设计制造越来越复杂,往往涉及多学科领域,如机械、电子、控制、传感器等等。另一方面,一个项目往往由多个团队组成,不同团队和人员的专业背景、个人能力、表达方式各不相同,这给项目的交流带来很大困难。因此,迫切需要一种语言,可以描述任何学科,使项目工程师采用同一种方式描述各自负责的系统,解决跨学科、跨部门沟通的难题。
SysML是一种语言,与汉语、英语、日语等自然语言一样,SysML语言是人与人沟通的媒介,也有语法和词汇。系统工程师利用SysML语言“说出”各自观点,由于语法和词汇相同,也可以“听得懂”其他系统工程师“说出”的模型。可以把SysML形象的比喻为系统工程的“普通话”。
SysML—系统工程的“普通话”
SysML是一种图形建模语言,使结构、行为、需求和参数等系统设计的重要方面可视化,帮助工程师解决日益增长的系统复杂性问题,促进系统工程师之间跨学科的沟通。SysML不仅可以打通软件、硬件等具体设计领域,还可将需求、成本、项目管理等不同阶段的工程整合到一起,促进跨开发生命周期的沟通。
SysML的优点
SysML是一种通用的、功能强大的标准建模语言,消除了不同方法在表达式和术语上的差异,避免了符号表示和理解上不必要的混乱。对于日常的设计工作,使用SysML,可以给我们带来哪些好处呢?
知识表达的无二意性
文字的描述经常会因为个人理解的差异而产生不同的解释,而SysML采用面向对象的思想建模,模型是一种高度图形化的表示方法,具有直观、无歧义、模块化、可重用等优点,建立系统模型可以准确统一地描述系统各个方面,对系统内部的各个细节形成统一的理解。
实现跨学科的有效沟通
高复杂度系统涉及大量学科,需要不同学科部门和人员协同设计,不同人员需要进行跨学科沟通,不同学科的产出物也需要沟通。工程师在文档中会使用图形进行辅助沟通,但每个人绘图习惯不同,很难理解其他人绘制的图形,而且容易产生歧义。另外,大都采用表格的方式描述不同组成部分的接口,基于表格进行产出物的沟通,非常混乱,不易交流和修改。
SysML完美的解决了这一问题。通过采用统一、完善的模型图与元素类型,使不同专业的人员都可以轻松读懂各专业模型图提高了沟通效率。SysML各模型图之间关联完善,可以建立完善的接口和数据交互关系,使各学科产物完美的关联起来。
系统设计的一体化
系统模型涵盖了系统的整个生命周期过程,可以提供一个完整的、一致的并可追溯的系统设计,从而可以保证系统设计的一体化,避免各组成部分间的设计冲突,降低风险。
快速响应需求变更
目前的设计方法,根据总体要求,通过写文档的方式确认技术指标、规划流程与功能,在装备研制过程中,会产生大量文档。对系统的所有记录都是基于文档的,每次变更都会导致所有文档的变更,不得不深入到每个部分去修改,即使这样,也难免会有遗漏和错误发生。
利用SysML建模工具,绘制SysML图的的过程,就是创建系统模型的过程,所有的设计都是基于SysML模型。当需求发生变更时,不再需要把所有的文档都改一遍,只需要修改需求影响的模型,所有应用此模型的场景都会修改,节省了大量的时间,也不会有遗漏的情况发生。
系统内容可重用
面向对象是为了解决系统的可维护性,可扩展性,可重用性,SysML语言采用面向对象的方法,在模块中封装了属性和操作,可以在不影响其他模块的前提下对模块进行操作。通过对模块的实例化,大大提高了模型的重用性和扩展性。
多角度分析系统
可以通过模型多角度的分析系统,分析更改的影响,并在早期进行系统的验证和确认,从而降低风险,降低更改的时间和费用。
SysML的九种图
一共有9种SysML图:模块定义图、内部模块图、包图、用例图、活动图、序列图、状态机图、参数图、需求图。其中模块定义图、内部模块图、包图属于结构图,用例图、活动图、序列图、状态机图属于行为图。SysML的九种图

9种图从不同角度对系统进行描述,系统工程师根据项目具体情况在9种图中选择,完成SysML建模,从而实现跨学科、跨部门的沟通。
SysML图由元素类型和规则组成,元素类型即是SysML语言的“词汇”,规则即是SysML语言的“语法”,每种图均有各自的元素类型和规则,系统工程师在规则的约束下组织元素类型,即形成了SysML模型图。
用例图
对于系统工程师来说,指定系统用例是一种常见的设计活动,通过用例来替代系统的功能需求,那么什么是用例呢?
简单来说,用例是特定的一系列动作,系统可以通过用例与外部角色来交互,以提供服务。从实践的角度,用例要定义系统边界,边界内是系统,边界外是外部角色,再按照某种规则(如时间、业务逻辑、组成单元等)对系统进行划分,形成用例。用例图包括系统边界、用例、外部角色和关联关系。
需求图
对一个系统进行全新开发,首先要获取涉众需求,即利益相关方的需要和需求,利益相关方可能包括供应商、客户、开发者、验证方、确认方,还可能包括法律法规等,只有全面识别出所有利益相关方,并了解清楚各方的关注点(或关切),捕获的需求才能完整。
捕获到利益相关方的需求后,需要对需求进行分析,形成系统需求,再依据需求进行相应的开发,需求一般分为功能性需求和非功能性需求。此时,获得的系统需求是基于文字的需求。
需求图是一种重要的SysML图。建模者可以使用六种关系来确定需求之间的可追踪性,以及从需求到系统模型中的结构和行为的可追踪性。需求图是SysML的主要媒介,可以向利益相关者传达这类信息。
基于文字的需求是系统工程中的重要产品,在SysML中,通过创建用例来替代基于文字的功能性需求,创建约束表达式来替代基于文字的非功能性需求。然而,如果项目没有创建基于文字的需求,而需要显示需求及需求与其他模型元素之间关系的时候,可以创建需求图。
需求图是非常有价值的图,可以直观的显示需求,并展示需求与其他模型元素之间的关系,可以建立需求之间,需求与包、用例、模块、约束模块之间的关系。在需求图中可以建立的需求关系包括:包含、跟踪、继承、改善、满足、验证。
模块定义图
模块定义图(BDD)是最常见的SysML图,可以在BDD中显示不同类型的模型元素和关系。在BDD中显示的模型元素包括模块、角色、值类型、约束模块、接口等,都是其他模型元素的类型,它们会出现在其他8种SysML图中。
模块(Block)是SysML结构的基本单元,可以使用模块为系统中或者系统外部环境中任意一种感兴趣的实体类型创建模型。
那么,何时创建BDD呢?答案是经常创建,应该经常创建BDD,BDD并不会与系统生命周期的特定阶段或者设计等级绑定,在执行不同系统工程活动时,如利益相关者需求分析、需求定义、架构设计、性能分析、测试案例开发、集成,通常会和其他SysML图一起创建BDD,从而为所关注系统的一个方面提供完整的视图。
内部模块图
内部模块图(IBD)是系统的静态视图,描述了系统的内部结构,表达了系统的组成部分必须如何组合才能构建有效的系统,还会显示系统如何与外部角色相连接。
IBD的元素类型包括外部角色、模块、端口和连接器,模块用来表达了系统及系统内部组成,外部实体表达与系统有交互关系的外部角色,端口是模块与模块之间、模块与系统之间交互的进出口,连接器用来连接端口。简单的几种元素类型即可构建完整的内部模块图,描述系统的结构。
包图
包图是现实系统模型的组织方式时所创建的图。系统模型的组织方式由包的层级关系决定。系统模型没有唯一的正确结构,不同的方法会有不同的模型结构,项目的目标不同,模型结构产生的效果也不同。
包图会传达关于模型本身结构的信息,一旦确定了项目有效的模型结构,创建包图会很有用,可以为利益相关者提供一种针对结构容易理解的视图。
除了描述系统的静态结构,SysML模型提供了活动图、序列图、状态机图用于描述系统的动态行为。
活动图
活动图可以表示各式各样的活动,甚至可以描述最复杂的行为,活动图擅长通过行为表示事件或数据的流动,关注系统操作时,对象是如何在行为的执行过程中被修改的。
活动图的优势是可读性强,是有效的分析工具,一般情况下是首先要创建的行为图,可以使用活动图与利益相关者或项目成员沟通。
复杂系统设计过程中,工程师需要撰写文档,由于文字的不易理解和二义性,都会绘制流程图、组成图进行辅助说明,每个人的绘制方式都不同,沟通时需要向对方解释自己的图形,互相也很难理解,而且容易产生歧义。而采用了SysML语言之后,你用活动图描述你的,我用活动图描述我的,同样的元素类型和规则,理解起来非常容易,为沟通带来极大的便利,同样的表述方式也利于系统的合并和分解。
序列图
活动图可读性强,但在详细设计阶段,就不那么适用了,活动图并没有明确说明随着时间推移而发生的行为和事件的序列,也没有明确表达系统与外界、系统内部发生的交互。同时,由于活动图中并行及选择结构的存在,系统会存在多种可能性,但活动图并没有针对场景进行设计,在需要针对场景分析或设计测试用例时,活动图就显得不适用了。
这时就需要序列图了,序列图是一种行为图,是对行为的精确说明,说明随着时间推移而发生的行为和事件序列。当需要精确地指定实体之间的交互、某场景内交互的时候,序列图就是非常好的选择。
序列图包括生命线、消息及组合片段等元素,序列图绘制比较灵活,可针对某场景单独绘制序列图,也可通过组合片段提供的并行、选择、循环等操作,将多场景结合在一起。
状态机图
状态机图是一种行为图,关注的是系统中的结构如何根据随时间发生的事件改变状态。一个系统有时会拥有一系列定义好的状态,在系统操作过程中可以处以那些状态。如点灯有“打开”和“关闭”两种状态,通过对“打开开关”、“关闭开关”等事件做出响应,在状态之间迁移。
状态机图中包含状态、转移线、各种节点。
参数图
参数图是一种独特的SysML图,用于说明系统的约束,这些约束一般以数学模型的方式表达。需求中的性能需求,可以在参数图中体现。通过把数学表达式(SysML中叫约束模块,ConstraintBlock)中的每个变量与模型的某个值绑定,即可向模型使用数学表达式。通过这种方式,可以创建任意复杂的数学模型,然后把它和任意复杂的系统模型的各种组成部分绑定。
|