AsmL实例研究(二)

原创 2003年05月09日 20:00:00

透过上面这个例子,我们可以了解到一些用AsmL描述的可执行规格的基本信息。整体结构上,可执行规格与传统的软件规格并没有太大不同。它将对软件逻辑的描述,用AsmL代码的形式,以特殊的符号(这里是AsmL)标记之后,夹杂在文字说明之间,以便使阅读它的人能够轻易对模型及其实现产生一定的认识。可执行规格的优势正在于对软件逻辑的描述上,别忘了AsmL的目标是产生“人类可读(Human-readable),机器可执行(Machine-executable)”的模型。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

传统的设计规格一般是在文字描述的过程中,辅以伪代码来描述某段程序的逻辑。因此Team中需要有个约定,在设计规格中采用何种格式的伪码,以便大家都能够看得懂。但是这样的约定将难于使Team之外的人能够轻易理解。在可执行规格中,AsmL充当了这种伪码的角色,甚至比伪码的效果更好。由于AsmL有一套类似编程语言的定义良好的规范,因此它很容易成为对模型的理解的基础。而且由于AsmL并非Team的专属物,因此以它来描述的规格很容易被Team之外的人所理解,只要他掌握了AsmL

 

AsmL相比于伪代码真正的强悍之处在于,经过AsmL建模所得到的规格,比如前面这个DiningPhilosophers例子,已经是一个可以执行的模拟程序了。你完全可以执行它,来检查设计是否完备,是否与预期的相符。在AsmL2.1.5.8中,即使是Word文档,也是可以通过AsmLWord插件编译执行的。当你编译它时,以“AsmL”标记起来的文字被认为是AsmL代码,它们被从文档中剥离,然后经编译器编译成可执行的程序。同样的,AsmLWord插件可以将Word版本的规格格式化成Xml格式,这样你就可以将它添加到Visual Stadio.NET的工程中。

 

AsmL2.1.5.8与其它的.NET语言之间也具有很好的交互性。看看前面的例子,你会注意到,前面的规格中缺少程序入口函数Main。正如你想象的,前面的规格是不能执行的。它可以被编译成dll,从而被其他的项目引用。事实上,例子DiningPhilosophers是个WinForm程序,在这个例子的Main Form中引用了前面定义的Table类。还记得[EntryPoint] 这个attribute吗?是的,用它标记过的方法是能够在C#中调用的。在Main Form中,Table的这些方法被调用,来反映程序的执行情况。不妨试试这个例子程序,它可是个挺有意思的小程序呢!

 

本文旨在引介AsmL。由于作者也刚刚接触AsmL不久,文中的错误与疏漏之处在所难免。如遇不明之处,相信能够从微软研究院的相关网站上找到答案。如果您还不清楚AsmL是什么,您可以参考作者之前的一篇文章《AsmL:可执行的软件规格》

MQTT的学习研究(二)moquette-mqtt 的使用之mqtt broker的启动

在MQTT 官网 (http://mqtt.org/software)中有众多MQTT的实现方式。具体参看官网,Moquette是基于Apache Mina 的模型的一个Java MQTT bro...
  • u013063810
  • u013063810
  • 2013年12月19日 16:04
  • 1404

xgboost 二分类问题实例

二分类问题 本文介绍XGBoost的命令行使用方法。Python和R的使用方法见https://github.com/dmlc/xgboost/blob/master/doc/README.md 。...
  • shenxiaoming77
  • shenxiaoming77
  • 2017年07月24日 20:49
  • 861

MySQL多实例配置(二)

MySQL数据库的集中化运维,可以通过在一台MySQL数据库服务器上,部署多个MySQL实例。该功能是通过mysqld_multi来实现。mysqld_multi用于管理多个mysqld的服务进程,这...
  • robinson_0612
  • robinson_0612
  • 2014年10月21日 08:41
  • 4001

企业信息门户平台整体解决方案研究(概述与案例分享)

前言:企业信息门户平台就是指在Internet的环境下,把各种应用系统、数据资源和互联网资源统一集成到企业信息门户之下,根据每个用户使用特点和角色的不同,形成个性化的应用界面,并通过对事件和消息的处理...
  • faifanuiop
  • faifanuiop
  • 2015年06月15日 09:49
  • 335

贝叶斯分类器,最小二乘

1贝叶斯分类器  问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。这里先解释什么是条件概率:       表示事件B已经发生的前提下,事...
  • mysql403
  • mysql403
  • 2016年03月01日 17:09
  • 826

图像识别算法研究(1)---二值化概述

我们遇到的识别图片,经常被认为的加入杂色干扰,形成一个浓淡分布不均的多值图像。把这样一幅多灰度值的图像(Gray Level Image)转化为只有黑(前景文字部分)白(背景部分)分布的二值图像(Bi...
  • cike110120
  • cike110120
  • 2014年01月29日 19:28
  • 5135

XGBoost:二分类问题

二分类问题 本文介绍XGBoost的命令行使用方法。Python和R的使用方法见https://github.com/dmlc/xgboost/blob/master/doc/README.md 。...
  • levy_cui
  • levy_cui
  • 2017年03月08日 17:37
  • 530

OpenCV基于局部自适应阈值的图像二值化

opencv局部自适应阈值 二值化
  • l740450789
  • l740450789
  • 2015年08月05日 12:10
  • 1723

二三维一体化 彰显GIS应急管理核心价值

原文地址:彰显GIS应急管理核心价值" href="http://blog.sina.com.cn/s/blog_7f1143e00100u1qd.html" target="_blank">二三维一...
  • sophiasy
  • sophiasy
  • 2013年12月25日 10:07
  • 4190

最小二乘法实际应用的一个完整例子

整个过程分七步,为了方便喜欢直接copy代码看结果的同学,每步都放上了完整的代码。 实验数据:             第一步:准备样本数据并绘制散点图        1)代码...
  • quryktcs
  • quryktcs
  • 2017年05月07日 15:56
  • 1898
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AsmL实例研究(二)
举报原因:
原因补充:

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