进一步认识AsmL

原创 2003年05月08日 14:19:00

AsmL听起来相当的神奇,尤其是它所建立的模型可以作为这些模型所描述的系统的模拟程序来运行这一特性,不但能够帮助我们在着手实现之前检查我们的设计的完备性,而且还能够帮助我们在实现过程中检查设计的合理性以及实现的正确性。这不正是我们想要得吗?还等什么?立即down一份来试试吧!(注:如果您还不知道什么是AsmL,没关系,您可以参考我的另一篇文章《AsmL: 可执行的软件规格》)

 

http://research.microsoft.com/foundations/asml/ 可以得到AsmL的安装程序和一些相关的文档。AsmL目前的版本是2.5.1.8,是一个for .NET的版本,能够与Visual Studio.NET以及Word集成。下载安装相当简便,不必多说。安装完毕之后,运行Visual Studio.NET会发现,IDE中多了一个插件,如下图:

此时插件上的按钮是无效的,只有打开AsmL模型文件时才会变得有效。AsmL的模型文件的文件名后缀是.asml,模型文件内部以Xml格式组织。插件上三个按钮的作用从左到右依次是:与Word文档同步,以HTML格式显示规格,重新组织Xml格式。

 

现在我们是这用AsmL来建立一模型。

 

首先,新建一个空的C#工程,不妨取名为AsmLTest。在Solution Explorer中右击项目,用“Add->Add New Item”添加一个新Item,此时会在Add New Item对话框中找到AsmL Document,添加之。这样我们的工程中就多了一个名为Modal1.asmlItem,如下图:

 

此时插件上的按钮已经有效,点击“与Word同步”按钮可以得到同步的Word文档,如下图:

 

点击“以Html显示”按钮,可以得到规格的html格式,如下图:

 

点击“重新格式Xml”,asml文件会被重新格式,如下图:

 

现在来试一下可执行规格的最重要的特性——可执行。AsmL的编译运行方法与其他的.NET程序别无二致,直接F5就可以。运行结果如下:

 

经过上面这个小例子,你心动了吗?想想吧,在你设计建模的时候,你只需将你的模型用AsmL描述出来,你就立即得到了三个版本的设计规格:XmlWordHtml。而且这三个版本是可以同步更新的,在不必担心规格与设计同步的问题了。更神奇的是,你的设计模型是可以执行的,你可以随时知道自己的设计是否合理,实现是否正确,而不必等到写了大量的代码之后又将设计推倒重来。

 

需要说明的是,目前的AsmL是一个仍处于研究中的项目,目前的版本也存在一些问题。比如,你有可能在安装完首次编译AsmL模型时遇到“找不到入口点”的错误,此时你只要将VS.NET关闭重来一次就行了,此问题只会在首次编译AsmL时出现。同时,AsmL也还无法与其他的.NET语言如VC等很好的交互。理论上来说,AsmL应该能够与任何语言交互,只是目前版本的AsmL插件的Wizard无法识别除C# project以外的project,也许下一版本会有所改善J

 

本文旨在引介AsmL。由于作者也刚刚接触AsmL不久,文中的错误与疏漏之处在所难免。如遇不明之处,相信能够从微软研究院的相关网站上招到答案。欲对AsmL有更深入地了解,可以参考《AsmL: The Abstract State Machine Language》,这篇文章同样可以在微软研究院的网站上找到。

 

进一步认识DTO

我是个Web前端出身,一直执着于View层的各种炫,Control的折腾也是为了迎合View,很少关心Model层的细枝末节,设甚至连J2EE里的各种Object都分不太清。 顿时想起了写这个的宗旨...
  • github_22022001
  • github_22022001
  • 2015年01月05日 11:53
  • 319

COUNT()的进一步认识

问题引出:要在一条SQL语句中查询film表中release_year值分别为2006,2007的记录数。返回结果集中结果分别为1000,合起来就是2000,但是数据表中最多就1000条记录,且记录的...
  • qq_33290787
  • qq_33290787
  • 2016年07月15日 22:37
  • 589

沟通,需要进一步认识

沟通,是建立人际关系的桥梁,如果这个世界缺少了沟通,那将是一个不可想象的世界。 可 以这样说,没有沟通就没有人际的互动关系,人与人之间关系,就会处在僵硬、隔阂、冷漠的状态,会出现误解、扭曲的局面,给...
  • woshidaniu
  • woshidaniu
  • 2015年01月02日 00:51
  • 425

C++进一步认识

这两天深入学习了C++底层的实现.有一些感想带有虚函数的类包含有一个虚函数表指针在其一个实例对象的开始部分.而每一个带虚函数的类都至少有一个虚函数表.对象的虚表指针就指向与之对应的类的虚表地址.对象调...
  • lhl168
  • lhl168
  • 2007年01月13日 13:45
  • 242

进一步认识RecyclerView

看了很多人对RecyclerView的认识,也说下自己项目中所用到的RecyclerView的知识,这篇博文主要是带来RecyclerView的LayoutManager的了解。 对LayoutMa...
  • u014372527
  • u014372527
  • 2016年12月23日 18:51
  • 174

如何进一步的学习java?

  本人现在是大三计算机专业的学生, 在编程开发方面比较有兴趣,现在正在学习java,但是我最近遇到了一些困惑:我现在学习了java的基本语法及相关的初级方面的知识,但是不知道应该怎么继续学习,也就是...
  • llz36
  • llz36
  • 2007年12月06日 17:40
  • 268

对软件系统的进一步认识

程序段,函数,组成长篇的程序文章,这些元素本身逻辑复杂度不难,由于这些元素太多了,而且之间有关联,这就让人一眼看上去觉得很复杂。解决办法:慢慢看,对于这篇文章,函数定义不去管,组件中的方法不去管,只要...
  • serverone
  • serverone
  • 2008年11月04日 17:42
  • 145

OpenCv-python之进一步认识像素

import cv2 import numpy as npdef salt(img, n): for k in range(n): i = int(np.random.rand...
  • sinat_34686158
  • sinat_34686158
  • 2017年03月19日 18:57
  • 323

对JCreator的进一步认识

     以前刚接触java时候用JCreator编译运行一些类,并没有进行啥配置.只知道先安装好jdk,再安JCreator,那JCreator就可以自己找到jdk目录.    今天写了几个小类,感...
  • sku0923
  • sku0923
  • 2007年07月18日 16:03
  • 687

对git的进一步认识

因为科研需要,所以需要对git的使用进行进一步认识,不能像之前那样只知道一点最基本的操作,但是并不能理解git到底是怎样管理项目的,所以在看别人项目的时候涉及到获取版本变更就会觉得有点困难,下面是我自...
  • fantiantianlucky
  • fantiantianlucky
  • 2016年07月01日 15:56
  • 142
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:进一步认识AsmL
举报原因:
原因补充:

(最多只允许输入30个字)