加入收藏 收藏网站 设为首页 设为首页
招生考试网
学历类| 阳光高考 研 究 生 自学考试 成人高考 专 升 本 中考会考 外语类| 四 六 级 职称英语 商务英语 公共英语 日语能力
资格类| 公 务 员 报 关 员 银行从业 司法考试 导 游 证 教师资格 财会类| 会 计 证 经 济 师 会计职称 注册会计 税 务 师
工程类| 一级建造 二级建造 造 价 师 造 价 员 咨 询 师 监 理 师 医学类| 卫生资格 执业医师 执业药师 执业护士 国际护士
计算机| 等级考试 软件水平 应用能力 其它类| 书画等级 美国高考 驾 驶 员 书法等级 少儿英语 报 检 员 单 证 员 出国留学
 招生考试网 - 计算机等级考试 - 考试辅导 - 正文

 
Java编程中的断言和时态逻辑
来源:fjzsksw.com 2009-11-20 编辑:yangmeiling 【字体:小 大】

{x == y} implies {Next {x == y + 1}}

  {x == y} Until {y == 0}

  {x == 0} implies {Next {Always {x != 0}}} // x is zero only once

  Sometime {! this.isInterrupted()} // this thread is not interrupted forever

  下面是两个断言它们从不死锁的线程的示例断言。(注:布尔方法 isWaitingOn 用于检查一个线程是否被另一个线程执行的任务挂起。)

  清单 2. 说明多线程的样本

  Always {x.isWaitingOn(y) implies {! y.isWaitingOn(x)}}

  可以扩展时态逻辑。

  扩展语言

  我们还可以扩展时态逻辑的语言以包括数据库中值集合的量词。例如,我们可以检查断言是否始终对表中的所有值保持有效或者至少对表中的一个值保持有效。

  有了这种级别的表示,我们可以构成非常强大的安全和安全性断言。例如,考虑显式代理对象可以请求访问各种文档的环境。我们可以组成清除可以查看各种文档的代理的断言。

  下列断言保证没有一个代理可以查看文档,直到他让明确可以有权这样做:

  清单 3. 说明数据库安全性的样本

  ForAll agents in AgentPool

  {ForAll document in TopSecretDocumentPool

  {{! agent.canView(document)} Until {agent.hasClearanceFor(document)}}}

  如何检查时态逻辑?

  现在,您可能会提出异议:“喔!我可以 讲所有这些事情真是太棒了,但我无法检查我所讲的是否正确,那么问题在哪里呢?!”

  对此我要说的是:有专门检查这些类型的断言的工具。在数字电路中,在构建芯片之前,先静态地验证这类断言。

  在软件中,我们静态检查这种断言的能力是微不足道的,但存在用于检查这些断言在程序的特殊运行(例如,单元测试的运行)期间是否保持有效的品质工具。这样的断言可以帮助您将单元测试提升到很高的程度;每个时态逻辑断言都可以与无数的传统断言对应(并且只是在传统断言完全可以用来表示断言的情况下)。

  Time Rover Inc. 的 Temporal Rover 是一种用于处理 Java 程序中时态逻辑断言并根据断言生成有效 Java 代码的工具。该公司还提供用于数据库表的工具 DBRover。

  Temporal Rover 包括所有时态操作符以及为讨论过去发生的事件而设计的其它操作符。DBRover 可以以数据库中值量化断言。不幸的是,这些工具不是免费的,但它们提供了 30 天的免费试用版本。

  与 JUnit 中的断言相似,Temporal Rover/DBRover 断言为程序员提供了在断言失败时打印诊断消息的选项。实际上,Temporal Rover 断言的语法与我在上面示例中使用的语法相同,其中,模态操作符采用的断言用花括号括起。然后,这些断言被传递到具有下列语法的 TRAssert 函数(Temporal Rover Assert):

  /* TRAssert{<assertion> => <output string>}

  <output string>是在断言无法保持有效时显示的。这样, TRAssert 语句就可以嵌入到有效的 Java 程序,并且这些程序仍可以不用 Temporal Rover 进行编译(当然,不用 Temporal Rover 进行编译可以使断言免受任何影响)。

  结束语

  这类时态逻辑可以帮助您将单元测试提升到更高的程度,因为每个时态逻辑断言都可以与许多传统断言对应。这意味着这些断言是如此强大,以致可以有力地帮助消除本专栏文章中讨论的许多典型的错误模式。



 
网站版权与免责声明
①由于各方面情况的不断调整与变化,本网所提供的相关信息请以权威部门公布的正式信息为准.
②本网转载的文/图等稿件出于非商业性目的,如转载稿涉及版权等问题,请在两周内来电联系.
最新文章
热门文章

报名考试
全国 | 黑龙江 | 吉林 | 辽宁 | 内蒙古
青海 | 宁夏 | 甘肃 | 新疆 | 陕西
西藏 | 北京 | 天津 | 河北 | 山东
江苏 | 安徽 | 河南 | 上海 | 浙江
福建 | 广东 | 山西 | 湖南 | 湖北
江西 | 广西 | 海南 | 云南 | 贵州
四川 | 重庆
分省高校计算机考试
黑龙江 | 吉林 | 辽宁 | 内蒙古 | 河北
北京 | 天津 | 新疆 | 甘肃 | 宁夏
青海 | 陕西 | 山西 | 河南 | 山东
江苏 | 安徽 | 浙江 | 福建 | 广东
海南 | 广西 | 江西 | 湖北 | 湖南
四川 | 上海 | 重庆 | 贵州 | 云南
西藏
成绩查询
报考指南
试题答案
模拟试题
考试辅导
计算机一级 | 计算机二级 | 计算机三级 | 计算机四级
经验交流
高校计算机