MBSE建模工具之Rhapsody
1、Rhapsody概述
Rhapsody为简称,原来的全名为IBM Rational Rhapsody,现在的全名已改为:IBM Engineering Systems Design Rhapsody。它是IBM公司提供的一款商业化的MBSE建模工具/软件,提供了模型驱动的嵌入式应用软件可视化开发和测试环境。该环境提供一个符合工业标准的图形化软件开发环境;实现从系统设计到软件设计的无缝连接;支持对软件需求分析、概要设计、详细设计的图形化描述和分析验证;自动生成高效的嵌入式代码;自动按照规定的格式和要求生成中文设计文档,从而保证文档与代码的一致性;在软件开发各阶段支持软件测试。Rhapsody提供配套的软件测试套件 ATG和 TestConductor支持软件测试。
Rhapsody同时也是一个开放的、可定制的、可扩展的设计平台。Rhapsody提供与市场上提供的优秀的配置管理工具、需求管理跟踪工具和测试分析工具的接口,如ClearCase、DOORS等。另外,利用Rhapsody的API和XMI数据接口,Rhapsody可以与开发工具链上的任何工具相连接。加上Rhapsody提供的可视化的模型区分与合并功能,真正使团队协作成为可能。同时,Rhapsody提供对标准的XML格式的支持,方便开发者共享他们的设计成果。总之,开发人员对于合作设计和远程团队开发的选择不会因为Rhapsody而受到任何限制。
2、Rhapsody的主要功能特性
Rhapsody将为我们的软件系统带来最优化、可升级、可靠、可维护和可重用的特点。据估计即使是初次使用Rhapsody来开发产品,也可以提高超过30%的开发效率。Rhapsody可以把多数的UML图形自动转化成高级语言C、C++、ADA或者Java代码,在开发过程中更早的利用这些高质量的代码可以对系统特定行为进行验证,从而减少开发过程中的错误。Rhapsody附加有DoDAF包用于开发符合DoDAF体系结构的产品。Rhapsody可生成经过DO-178B/ED-12B确认的代码。
Rhapsody具有如下相应的特性:
- 1)支持UML/SysML
- 由于UML/SysML语言的可视化特性,这可以为沟通想法带来直接的利益――它很容易理解。UML/SysML所特有的是表达信息的广度与描述的精确性。Rhapsody支持UML/SysML的增强功能,从而更加适合做实时系统建模,增强了对实时建模关注的调度、性能、时间(UML Profile for Schedulability, Performance, and Time)上的扩展;支持复杂系统领域内的系统设计,并可以在设计早期进行系统验证。在国防、航天航空、通讯、汽车、医疗领域,Rhapsody广泛地用于实时系统软件建模。Rhapsody的建模技术可以很容易支持C4ISR结构框架。通过UML及其扩展功能,使得工程师可以详尽的对系统进行讨论和设计,通过基于模型驱动的V型开发方法,使系统工程师、软件工程师和测试工程师,甚至客户有了更多的沟通,从而使系统工程师更能把握需求,设计出完善的模型,软件工程师和测试工程师在系统设计的早期就可以对系统有一个把握,从而设计出最好的代码结构和系统测试方法。
- 2)支持DSL(Domain Specific Language)
- Rhapsody支持美国国防部架构框架DoDAF、英国国防部MoDAF,从而可以在Rhapsody中对符合DoDAF和MoDAF架构的系统进行建模、仿真、验证,并且能够生成符合DoDAF、MoDAF规范的各种设计文档。支持使用标准的DoDAF/MoDAF图表和注释来设计、构建和分析完全遵守DoDAF/MoDAF标准的架构。此功能通过下列操作验证架构:模拟模型、自动生成派生产品和完整的DoDAF/MoDAF文档,同时在需求驱动的环境中完成全面的跟踪。Rhapsody DoDAF/MoDAF通过帮助用户在公用环境中定义和构建遵守DoDAF/MoDAF标准的架构,将显著地改善DoD/MoD、承包商和供应商之间的沟通。
- Rhapsody AUTOSAR,是第一个支持汽车领域专用于建模MDD环境,主要用于描述和设计汽车系统和软件应用程序。支持AUTOSAR语言,支持汽车领域的系统工程建模设计、EE设计、ECU设计和软件设计等。允许汽车工程师以熟悉的方式对车辆的电力和电子系统进行建模设计。并且在设计过程中,可以使用Rhapsody的其它功能,进行需求分析、跟踪,系统设计、软件开发和测试等整个开发生命周期内的各个阶段,增强了汽车工程师工作的标准化和工程化水平,提高了工作效率。
- 3)捕获与可视化需求
- 通过发现系统所必须响应的事件与所做的响应应该是什么来理解系统必须做什么是试图理解系统需求的最基本的部分。这是用例或场景分析的基础,它所面对的是功能需求。 当开始建立功能需求文档时,需要一种方式来捕获场景的细节,但是,随着系统变得越来越复杂,场景的数量也随之而增长。有一种能够通过场景进行浏览的方法就变得很重要。信息容易维护与更新也变得越来越重要。如果一些细节可以在一个地方来定义然后在需要的地方被引用,则维护描述的工作就会被大大地减少。
- 4)描述架构与接口
- 在开发过程中,完整的系统不可避免地要被分成更小的部件或子系统。使用子系统有许多优势,系统工程师可以利用Rhapsody来使这种优势最大化。例如,把一个大问题分解成小问题的策略只有在独立的团队能够快速完成小项目的情况下才能获得成功。为了使这一点成为可能,在描述中就不能有很多的歧义。一旦实施活动开始,就不能浪费时间来讨论子系统的边界问题。
- 5)支持MBSE方法论Harmony SE
- Harmony SE主要分为Requirements Analysis Phase、System Functinal Analysis Phase、Architectural Design Phase三个阶段;其中在Requirements Analysis Phase也就是需求分析阶段,首先需求分析人员Requirements Capture即需求捕获,在需求确定了之后,需要在Rhapsody中使用UseCase进行描述需求,即进入下个阶段Definition of System Use Cases。完成Use Case图描述完需求后,则需要根据Use Case图来分析确定系统要完成的功能,这里主要也是黑盒设计,对系统怎么样完成这些功能不涉及论述,只涉及系统与环境也就是交互者之间的互动关系,这就是System Functinal Analysis Phase。完成系统功能性分析后,就进入了系统架构设计阶段也就是Architectural Design Phase。在这一阶段,首先也是进行的黑盒设计,也就是系统架构设计,即System Architectural Design,这里不涉及子系统等具体的运行设计,只是对子系统作为基本模块的系统运行进行了架构设计;完成黑盒设计后,进入系统进行白盒设计阶段,即Subsystem Architectural Design,这一阶段主要是对子系统内部进行详细的运行设计。完成上面的三个阶段后,系统设计阶段任务基本上结束,下一阶段就是具体的软硬件设计阶段,在具体的软硬件设计阶段,我们遵循的过程也和上述阶段类似,也是需求分析、黑盒设计、白盒设计等阶段。在完成子系统设计后,进行系统集成,系统确认等。
- 6)模型/代码同步
- 模型/代码同步意味着软件代码实现不再是一个单独的依靠手工编写的过程。在Rhapsody中,软件代码可以由模型动态生成;反过来,代码的修改也可以反映到模型中来。模型可以产生高质量的代码,这种代码既可以作为系统模型验证的代码,也可以是系统最后提交的代码,并且这些简洁、可读性好的代码可以在其他商业IDE中很容易的被调试。代码生成的机制经过DO-178B/ED-12B确认。
- 7)可测试性的设计
- Rhapsody可以在主机环境下直观地调试设计的图形化内容,极大改善了应用的可见度,不用等待硬件设计好就可以开始绝大部分软件的调试。一旦硬件设计完毕,就很容易为目标硬件系统生成同样的可执行模型。Rhapsody的模型执行特性允许系统工程师,软件工程师和测试工程师在开发的任何阶段都可以对系统进行验证,Rhapsody与传统的设计过程不同,问题一产生就能够很快的发现,从而避免了错误只有等到研发的最后阶段才被发现所导致的高昂修改成本。这样,系统中每一个新增加的功能都建立在行为设计得到充分测试和验证基础之上。
- 8)自动化的文档生成
- 在几乎所有的系统工程方面,正式的文档都是采用文本描述的。用户需求、接口描述与系统设计文档就是这方面很好的例子。Rhapsody可以生成高质量的中文文档,可以生成软件应用所需的框架结构、运行库、编译文件、通讯方式、实施策略等。而且模型和代码的一致性更保证了文档和代码的一致性,为我们准确理解系统需求、后期经验的累积提供了很好的平台。
- 9)Graphical Panel Diagram
- Rhapsody从7.3版本增加了Graphical Panel Diagram的功能,使系统可以在设计阶段,轻松的生成设计原型,进行仿真验证。Graphical Panel Diagram特性增强了在设计阶段,设计人员与客户、项目主管交流设计行为能力,确保交付的设计满足客户需求。支持在模型中创建一个包含各种常用控件的视图,与模型中元素相关联,验证系统设计。与Rhapsody原有的仿真和设计阶段调试功能相结合,提供了一种好的验证设计的方法,一种快捷的创建客户调试接口的方法,以便在设计阶段早期发现缺陷。
- 10)模型自动测试
- Rhapsody测试用例自动生成模块ATG和测试模块TC协调工作,可以进行模型系统的自动测试。在系统开发的过程中,ATG自动生成高覆盖率的测试用例,这些测试用例可以用UML顺序图输出,测试模块TC执行这些测试用例。
- ATG/TC可以被用来进行单元测试,集成测试,衰退测试和基于目标机的测试。并可以和第三方软件结合进行代码覆盖率分析和测试。
3、Rhapsody版本
Rhapsody分为是四个不同版本,各个版本支持所支持的功能如下表所示。
Architect for Systems Engineers | Designer for Systems Engineers | Architect for Software | Developer |
一个面向复杂系统工程项目的基于模型的系统工程 (MBSE) 环境 | 将模拟和模型执行添加至 MBSE 环境,帮助启用对需求、架构和行为的早期验证功能 | 一个集成嵌入式软件开发环境,使用基于 UML 的建模功能来设计和开发嵌入式软件并使其可视化 | 通过模拟、行为代码生成和实时系统集成,开发和验证嵌入式软件应用程序环境 |
UML/SysML建模 | UML/SysML建模 | UML/SysML建模 | UML/SysML建模 |
参数分析,文档生成,并可通过RPE进行文档格式定制 | 参数分析,文档生成,并可通过RPE进行文档格式定制 | 参数分析,文档生成,并可通过RPE进行文档格式定制 | 参数分析,文档生成,并可通过RPE进行文档格式定制 |
AUTOSAR系统构建,提供系统工程用户界面 | AUTOSAR系统构建,提供系统工程用户界面 | AUTOSAR系统构建 | AUTOSAR系统构建,AUTOSAR RTE代码生成 |
DODAF、MODAF、UPDM建模,与DOORS集成接口,并可定制 | DODAF、MODAF、UPDM建模,与DOORS集成接口,并可定制 | DODAF、MODAF、UPDM建模,与DOORS集成接口,并可定制 | DODAF、MODAF、UPDM建模,与DOORS集成接口,并可定制 |
多维License选项,包括永久和临时,浮点和固定节点 | 多维License选项,包括永久和临时,浮点和固定节点 | 多维License选项,包括永久和临时,浮点和固定节点 | 多维License选项,包括永久和临时,浮点和固定节点 |
C,C++和Java代码框架生成,以及MISRA-C或者MISRA-C++代码生成 | C,C++和Java代码框架生成,以及MISRA-C或者MISRA-C++代码生成 | ||
可视化逆向工程 | 可视化逆向工程 | ||
快速图形化原型系统,以及仿真测试支持 | 快速图形化原型系统,以及仿真测试支持 | ||
完整代码生成(包括状态机),并与嵌入式IDE集成 | |||
使用代码生成来构建工件、实时执行框架、Ada开发和Linux支持 |
4、Rhapsody扩展模块
- 1)Rhapsody Tools & Utilities Add On—Rhapsody与外部环境的交互接口包
- a) ReporterPlus:基于模型可定制生成文档,满足公司及业界标准
- b) Gateway:提供先进的需求可追踪能力。基于需求管理工具的导入、管理并追踪需求
- c) Webify:可视化面板,支持快速原型测试
- d) XMI Toolkit:便于不同的支持XMI标准的工具之间的模型转换
- e) Siemens Teamcenter SE接口
- f) SOA (WSDL)支持
- g) Mathworks Simulink接口
- 2)Rhapsody Test Conductor—基于模型测试工具模块
- a) 遵循UML规范,基于场景的嵌入式测试生成和检验套件
- b) 应用UML 顺序图定义测试
- c) 使用插桩、监视、驱动等测试技术
- d) 参数化表示测试用例行为
- e) 通过不同颜色给出错误报告
- 3)Rhapsody Automatic Test Generation Add On—模型测试用例自动生成工具
- a) 根据 UML 模型生成系统和软件的完整测试用例对于不同模块进行针对性测试,如:模型元素覆盖率测试,MC/DC覆盖率测试等
- b) 自动生成各种测试用例用于单元测试、集成测试、回归测试
- c) 提供测试用例的文本和XMI格式的输出
- d) 通过TestConductor提供白盒观察测试执行的窗口,形成一个灵活、可扩展、可跟踪的测试平台
- 4)Rhapsody Developer Rules Composer and Rules Player Add On—代码规则自定义增强包
- a) 支持客户根据需要,自定义代码规则的生成
- b) 支持自定义的代码规则部署到Rhapsody中