| Currently, there is no way to specify formally the behavior of the operations in a distributed software component interface in a manner that conveys as much information as possible while not putting an unrealistic burden on the interface developer. The Design by Contract approach to software development, exhibited in the Eiffel programming language, is aimed towards solving this very problem, although it does not explicitly address the concerns of distributed software.; In this dissertation we discuss the application of the Design by Contract approach to add behavioral specifications to distributed software component interfaces. The software that has been developed as a part of this work, Biscotti, enables testing of this concept. Biscotti provides a general Java assertion capability for both distributed and non-distributed software development. In particular, we have enhanced the syntax of Java Remote Method Invocation (RMI) interfaces and their implementing classes with Eiffel-style preconditions, postconditions, and invariants. The enhancements have been integrated with the Java language so that other Java facilities, such as reflection, can benefit from the new information. It is expected that Java developers will be able to transition easily to programming with behavioral specifications, since the new capabilities are added as a simple extension to their familiar programming model. |