I am interested in having someone use the Java(tm) Design by Contract(tm) Tool for the COM 3362 or COM 3220 project. Goal of the project: Demonstrate with example Java Programs that Design by Contract is useful for Java software development. Demonstrate how it improves testability of the software. I will give an introduction to design by contract in the next lecture. -- Karl Lieberherr From kramer@acm.org Wed Apr 15 14:48:00 1998 From: Reto Kramer Reply-To: "kramer@acm.org" To: "'Alexander Hinds'" , "'ae@esec.com'" , "'andreas@olsen.ch'" , "'Andrew Hunt'" , "'Aquilino Adolfo Juan Fuente'" , "'Augusto Sellhorn'" To: "'seibert@acm.org'" , "'Christian Leutloff'" , "'Christophe PORTE'" , "'daniel.schmid@pop.agri.ch'" , "'David Forslund'" , "'devon@olsen.ch'" To: "'fxm@welcome.ch'" , "'EHANKS.US.ORACLE.COM'" , "'mu@echo-on.net'" , "'filip@glo.be'" , "'Finnegan Southey'" , "'Fischmeister Sebastian'" To: "'gn@esec.com'" , "'luzian.hehr@ubs.com'" , "'Henzler Peter'" , "'Hugh Fargher'" , "'ivo_arnold.boehme@systor.com'" , "'corbett@hawaii.edu'" To: "'jag@eng.sun.com'" , "'Jeffery E. Payne'" , "'John F Dinneen (E-mail 3)'" , "'jschor@ctp.com'" , "'cruz@iam.unibe.ch'" , "'ruchti@swissonline.ch'" To: "'altherr@softwired.ch'" , "'baumann@bbv.ch'" , "'Matt Mower'" , "'mfoley@foley.com'" , "'mma@mcs.ch'" , "'Narendra'" To: "'nav@netwings.ch'" , "'Oscar Nierstrasz'" , "'braun@tarsec.com'" , "'Patrick SEBILEAU'" , "'pgiotta@olsen.ch'" , "'Paul Schwartz'" To: "'regula.nebel@systor.com'" , "'René Bach'" , "'rene.schwarb@customercare.ch'" , "'Roedy Green'" , "'Roque D. Oliveira'" , "'rphillips@celfi.com'" To: "'stouffs@arch.ethz.ch'" , "'ruw@esec.com'" , "'Scott Stanchfield'" , "'Scott Vachalek'" , "'shelley@act.sps.mot.com'" , "'Silvano Maffeis, ACM'" To: "'sgw@acm.org'" , "'Steve Nichols'" , "'Steven Lewis'" , "'parrt@magelang.com'" , "'Todd Plessel'" , "'Travis Winfrey'" To: "'Vasuki Raj Alatur'" , "'Victor Volle'" , "'Wolfgang Frech'" , "'zicari@ltt.de'" , "'K.J.Lieberherr'" Cc: "'kramer@acm.org'" Subject: iContract 0.2b5 available for download [Design by Contract for Java] Date: Wed, 15 Apr 1998 20:29:30 +0200 Return-Receipt-To: Reto Kramer X-Mailer: Microsoft Internet E-mail/MAPI - 8.0.0.4211 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Status: R The latest version of iContract, the freely available Java(tm) Design by Contract(tm) Tool is available for download at: http://www.promigos.ch/kramer (see NEW). Release 0.2b5 is a bugfix and consolidation release. Among numerous bugfixes (see release notes) the distribution now contains a guide to "Getting started with iContract" which helps users to install the tool and to instrument their very first application. (see http://www.promigos.ch/kramer/iContract-0.2b5/getting-started.htm) cheers, - Reto *** INTRODUCTION *** Design by contract refers to the concept of viewing the interfaces among system components as contracts that are specified as integral parts of the source-code. Based on this single source-code technique the documentation and the generated assertion-check code can be guaranteed to always match which is essential to the cost-effective adoption of dependable component based software-systems. Design by Contract for OO languages was pioneered by Bertrand Meyer. Until today, the explicit specification of contracts by means of class invariants and message pre- and post-conditions was only available to Eiffel developers. iContract is the first tool that provides the same thorough support for Java, enabling developer's to take advantage of the following benefits: (a) supports design for testability by enhancing the systems observability (failure occurs close to fault), (b) uniform implementation of invariant-, pre- and post-condition-checks throughout your team, (c) documentation and code are always in synch and (d)semantic level specification of what requirements/benefits a class/message offers. iContract is a freely available source-code pre-processor which instruments the code with checks for class invariants, pre- and post-conditions that may be associated with methods in classes and interfaces. Special comment tags (e.g. @pre, @post) are interpreted by iContract and converted into assertion checks code that is inserted into the source-code. The expressions are a superset of Java, compatible with a subset of the latest UML "Object Constraint Language (OCL)". Highlight features include old- and return-value references in post-conditions, implications and the naming of exception classes to throw. iContract fully supports the propagation of invariants, pre- and post-conditions via inheritance and multiple interface implementation, as well as multiple interface extension mechanisms. The instrumentation level (e.g. only pre-condition checks) can be chosen on a per file level enabling fine grained, vertical (inheritance, implementation) and horizontal (delegation) performance control throughout your system. Due to the non-mandatory nature of the comment tags, source code that contains design by contract annotations is still fully compatible with Java and can thus be processed with standard java compilers enabling a risk-free adoption of the technique in your organisation.