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

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

虽然传统断言可以增加对 Java 代码执行的检查次数,但有许多检查不能用它们来执行。弥补这一缺陷的方法是使用“时态逻辑”,它是一种用于描述程序状态如何随时间而更改的形式体系。在本文中,Eric Allen 将讨论断言,介绍时态逻辑并描述用于处理程序中时态逻辑断言的工具。

  我们大家同意对 Java 代码检查得越多就越好,我们检查了断言在测试新的和改进的编程中的用法。虽然传统断言可以增加执行的检查次数,但有许多检查不能用它们来执行。

  然而,有一个方法可以弥补断言留下的检查缺口。那就是使用 时态逻辑。时态逻辑是用于描述程序状态如何随时间而更改的形式体系。让我们讨论一下断言及其特性,以及时态逻辑是如何适合检查的。然后,我们将研究用于处理时态逻辑断言的工具。

  断言及其特性

  除了类型检查和单元测试外,断言还提供了一种确定各种特性是否在程序中得到维护的极好方法。

  让我们快速浏览三种类型常见的断言特性(虽然是常见的,但它们没有提供我们所需的完整范围),将它们与可以用传统断言语言表示的程序特性的类型进行比较,并检查多线程上下文所必需的,但不可能表示成常规断言的断言特性。我们还将提供一些代码示例。

  常见的断言特性

  传统上,断言特性分成下面三种类型:

  ?代码块执行 之前特性所持有的条件前断言。

  ?代码块执行 之后特性所持有的条件后断言。

  ?代码块执行 之前和 之后特性所持有的不变断言。

  与这些典型形式的断言一样有用,它们不太会有我们希望能在程序中持有的所有特性范围。让我们看一下典型的用断言表示的程序特性。

  可表示为断言的程序特性

  这只是可以用传统断言语言表示的程序特性类型的简短列表 ― 所有程序员都希望在代码中包含的特性:

  ?确保任何一次性特性都仅生成一次

  ?断言文档决不被未授权的代理程序访问

  ?断言向每个线程提供运行机会

  ?断言系统将决不会使其本身陷入死锁

  安全性协议使用一次性特性(使用过一次的数字)生成器来确保事务未被用过。作为安全性中的简单概念,确保一旦生成特殊一次性特性,就不再生成它,这一点很重要。另一个重要的安全性断言是安全文档决不被未授权的代理程序访问。

  在多线程代码中,我们希望断言每个线程最终都会有运行机会。我们还希望确保系统决不会使其本身陷入 死锁状态(即在两个或多个线程可以继续处理之前,它们正在彼此等待提供资源)。

  基本的非常规断言特性

  下面是我们希望获得的(通常想要在多线程代码环境中获得的)两种非常有用的特性类型,不可能仅用常规断言来表示它们:

  ?安全断言

  ?生存断言

  安全断言声明某些不合需要的系统状态将决不在任何环境下起作用。生存断言声明保证最终发生某些事件 ― 例如,给定的线程将最终被唤醒,而不是永远休眠。

  时态逻辑可以帮助产生这些断言。



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

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