• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

关于Visual Studio DSL改善状态机实例说明(2)

发布: 2010-3-29 10:19 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 62次 | 进入软件测试论坛讨论

领测软件测试网

  关于Visual Studio DSL改善状态机实例说明(2)  软件测试

  文章将主要介绍Visual Studio DSL的一些基本的知识,包括域类,域关系,图形符号,图形映射等,虽然这些东西看起来有些抽象,但是其是开发我们自己的Visual Studio DSL之前必须要掌握的。

  接下来,我们添加一个新的域类(从工具条中选择Domain Class拖到左侧域类区),更名为Action,这就是我们的元数据“操作”,为这个域类添加两个string类型的属性Label,Code。

  现在我们需要考虑一下元数据中提到的进入操作和退出操作,在进入一个状态前,对于这个状态可以有进入操作,在退出一个状态时,可以有退出操作,很明显,在状态和操作之间,应该是嵌入关系而非引用关系,也就是我们的状态可以包含零或多个进入操作,零或多个退出操作,那我们这个进入操作和退出操作怎么来用DSL的域类表示呢?如果我们也象描述状态State那样,由一个属性来区分是进入操作还是退出操作是否可行呢?如果是这样的话,对操作Action的添加等就需要特殊处理。另外一点,如果我们针对状态State与操作Action建立多个零至多的嵌入关系会导致DSL编译时就会发生错误,这是Visual Studio DSL所不允许的,这会造成歧义.[包含域类方面和图形映射方面都会有问题]。在这里我们打算用DSL的另外一个特性来实现,也就是域类的继承,我们建立两个新的域类来表示进入操作和退出操作,他们都继承操作Action:

  10.添加两个新域类EntryAction和ExitAction,并不需要给他们添加任何属性。

  11.建立它们与Action的继承关系,选中工具箱中的Inheritance,先选中EntryAction,再指向选中Action。

Action的继承关系

  上图就是完成后Action,我们可以通过Bring Tree Here更简化域类显示(上右图)。

  12.建立EntryAction和ExitAction和State的嵌入关系,注意选中工具箱中的embedding relationship后,要从State指向EntryAction.注意左边的重数是0…*,右边的重数是1..1.也就是说一个状态可以没有进入操作或退出操作,也可以有多个。而且对于每个进入操作和退出操作,它们只能从属于一个状态State。我们现在来看一下我们完成的整个DSL元数据:

整个DSL元数据

  保存整个DSL文件后,我们点击转换所有模板(Transform All Templates),Visual Studio DSL根据我们的DSL文件中的元数据,用T4模板文件生成对应的C#代码,注意我们在以后每当修改完DSL文件中的元数据后,都要记得转换模板,才会使更改起作用.当然,你也可以选中某一个tt文件,右键运行自定义工具(Run Custom Tool),针对这个文件单独生成,尤其当你的DSL文件相当庞大时,这样能够提高生成速度。转换完成后,可以重新编译整个解决方案,查看是否有错误发生。我们象第五节那样,查看一下DomainClasses.cs文件类图:

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: DSL studio Studio visual Visual 实例 状态

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网