JML起步
使用JML 改进你的Java程序
by Joe Verzulli (joe55055@yahoo.com)
http://www-106.ibm.com/developerworks/java/library/j-jml.html
Java建模语言(Java Modeling Language,JML)是一种进行详细设计的符号语言,他鼓励你用一种全新的方式来看待Java的类和方法。本教程中,Java程序设计资深顾问Joe Verzulli 将会给大家介绍这一新的工具以及如何使用这个工具。
面向对象的分析和设计(OOAD)的一个重要原则就是过程性的思考应该尽可能地推迟,不过遵循这个原则的大多数人也不过是把这个原则适用到方法实现这个级别上。一旦设计好了类和接口,下面的事情自然就是实现其中定义的方法了。对呀,我们还能做什么呢?还有什么其它方法可以使用吗?毕竟,用Java进行程序设计和用其他语言进行程序设计一样,我们都要一步一步地实现每一个方法。
标记本身只是表示如何做一个事情(how to do something),根本不管我们希望做什么。如果我们在做一个事情之前就能够知道我们能够达到什么样的结果是非常好的,不过Java语言并没有给我们提供一个可以显示地把这些信息插入到我们程序代码的方法。
Java建模语言(Java Modeling Language,JML)在Java代码中增加了一些符号,这些符号用来标识一个方法是干什么的,却并不关心它的实现。如果使用JML的话,我们就能够描述一个方法的预期的功能而不管他如何实现。通过这种方式,JML把过程性的思考延迟到方法设计中,从而扩展了面向对象设计的这个原则。
JML引入了大量用于描述行为的结构,比如有模型域、量词、断言可视范围、预处理、后处理、条件继承以及正常行为(与异常行为相对)规范等等。这些结构使得JML非常强大,不过你并不必要理解或者使用上面所述的所有方面,也不需要一次使用所有的这些方面。你可以一点一点的学习,从非常简单的开始。
这篇文章中采用循序渐进的方式来介绍JML。我们要先了解一下使用JML的各种好处,特别是对开发和编译过程的影响。然后,我们要讨论一下JML的一些结构,比如前置条件、后置条件、模型域、量词、副作用以及异常行为等等。同时,在讨论这些结构的同时,我们会给出一些例程来给你一个直观的感觉。这样经过本文的学习,你将可以对JML是如何工作的有一个概念性的理解,从而能够在你自己的项目中应用JML。
JML概览
使用JML来声明性地描述一个方法或类的预期行为可以显著提高整体的开发进程。把建模标记加入到你的Java程序代码中有以下好处:
- 能够更为精确地描述这些代码是做什么的
- 能够高效地发现和修正程序中的bug
- 可以在应用程序升级时降低引入bug的机会
- 可以提早发现客户代码对类的错误使用