cover_image

Rational Rhapsody状态机调试-洗碗机

潘加宇 UMLChina
2017年11月13日 01:20

新建Dishwasher项目

1. File|New,新建名为Dishwasher的项目。

图片

图片

添加类Dishwasher

1. 展开Object Model Diagrams包,双击Model1。在Model1对象模型图上放置一个类,名为Dishwasher

图片

2. Dishwasher类增加以下属性:

rinseTimeVisibilityPrivateTypeintInitial Value0

washTimeVisibilityPrivateTypeintInitial Value0

dryTimeVisibilityPrivateTypeintInitial Value0

cyclesVisibilityPrivateTypeintInitial Value0

图片

图片

3. Dishwasher类增加以下操作:isDriedisInNeedOfServiceisRinsedisWashedsetup,返回类型如下图。

图片

4. 为各个操作添加实现,如下:

图片

图片

图片

图片

图片

图片

图片

添加类型MAX_CYCLES

1. 在浏览器中展开Packages,右击Default包,选择Add New|Type。在属性框中的General页签,修改NameMAX_CYCLES,并确认Kind选中Language。在Declaration页签输入:

const int %s = 3;

图片

图片

图片

2. 单击OK关闭属性框,可以看到Default包下面多了一个Type目录,下面有MAX_CYCLES类型。

图片

创建组件

1. 展开浏览器的Components包,把DefaultComponent改为Test把下面的DefaultConfig改成Debug

图片

2. 设置Debug配置,Instrumentation Mode改为AnimationEnvironment设为合适的环境,选择创建Dishwasher的初始实例。

图片

图片

3. 选择Code|Generate/Make/Run看看是否成功构建。

图片

图片

★如果提示找不到编译环境,可修改安装文件夹下Share\etc子文件夹中的msvcmake.bat文件,例如:C:\ProgramData\IBM\Rational\Rhapsody\8.1.4\Share\etc\msvcmake.bat。修改set VS_PATH=后面的信息,让它指向正确的路径。

创建状态机

1. Dishwasher类添加一个状态图。拖动鼠标,尽量扩大状态图绘图区的面积。

图片

图片

2. 在状态图上添加状态active,把active状态的面积放到尽可能大。

图片

3. 单击工具箱Diagram Tools组下的与线图标图片,单击active状态内的左侧某处,再单击active状态内的右侧某处,可以看到分区线出现。

图片

4. 再添加一条与线,得到下图:

图片

5. 右击其中一个分区,选择Display Option。在弹出对话框的Show Name组选择Name单选钮。单击OK。针对另两个分区做同样的操作。

图片

图片

图片

6. 将三个并发状态分别命名为runningservicemode

图片

7. 单击工具箱顶上的戳记模式图片,单击状态图片,为状态图添加以下状态。

图片

8. 添加历史连接器图片以及名称为done的图形连接器图片

图片

9. 为每个状态机添加缺省迁移图片

图片

10. 继续添加迁移(Transition)和动作(Action),如下图。

图片

11. 双击normal状态,在Action on entry栏输入cycles=0;,单击OK。这是为normal状态添加入口动作。单击normal状态右上角的图标,让入口动作显示出来。

图片

图片

调试状态机

1. 选择Code|Generate/Make/Run。单击动画工具栏上的Go Idle图标图片,在浏览器中可以看到生成了Dishwasher的实例。双击该实例,可以看到实例的属性值和链接对象。

图片

图片

2. 右击Dishwasher[0],选择Open Instance Statechart,打开实例状态图。可以看到三个分区中都有活动状态。

图片

图片

3. 右击动画状态图绘图区,选择Generate Event,确认当前选中事件为evStart,单击Generate,单击Close

图片

图片

4. 单击动画工具栏上的Go图标图片,观看动画。

图片

5. 重复产生evStart事件4次,可以看到service分区活动状态变为faulty。双击Dishwasher[0],查看对象属性值。

图片

图片

6. 生成evService事件,可以看到sevice区的活动状态变回normal

图片

图片


http://www.umlchina.com/training/course171125.htm

11月25-26日(周六日)成都软件需求设计UML全程实作公开课


http://www.umlchina.com/training/courseadzoom.htm

11月14日(周二)19:30-22:30 Rational Rhapsody建模


图片


图片


继续滑动看下一个
UMLChina
向上滑动看下一个