JOOP Archives


Dynamic Java Program Corpus AnalysisPart 1: The Analyzer

Program corpus analysis is important in the optimization of runtime systems. Conventional linguistic analysis is static in nature and cannot reflect dynamic behaviors revealed by versatile object-oriented programming languages. The authors propose a pattern-based runtime profiler in Part 1 of this article.

Global System Analysis at WorkIntroducing the compilation strategy of SmallEiffel, the GNU Eiffel compiler

SmallEiffel is a highly successful open-source implementation of Eiffel developed under the direction of Dominique Colnet at LORIA in France. It uses a number of particularly original and innovative compilation techniques. In this column, Colnet and his colleague Olivier Zendra raise the veil and show how they have taken advantage of global system analysis techniques to achieve a high degree of performance in the SmallEiffel compilation process and the resulting code.

Adding CBD to OPEN

When using the OPEN approach to system development, we start with the metamodel—known as the M2 level in the terminology of the Object Management Group. The metamodel presents the entities we can instantiate into our process, a process usually described at the organizational level. The instances we create may be our own, or may be selected from a predefined set: Activities and Tasks for OPEN are defined in "The Open Process Specification," while predefined Techniques are outlined in "The OPEN Toolbox of Techniques." These predefined Activities can be thought of as belonging to a process component repository.

From UML to Design by Contract

A trustworthy, reusable component will clearly advertise the set of services it provides in its interface. More information can be gained about how to use a service by examining an operation's signature and accompanying comments. However, is this all the information necessary to fully understand how to use a component? For example, rummaging around in the implementation to discover whether or not a Video Rental Abstract Data Type (ADT) allows customers to rent more than 10 videos defeats the purpose of an interface. Design by Contract (DBC) promotes techniques for strengthening the semantics of classes and their properties right from their inception.

Goal-driven Modeling, Part II

This is the fifth article in a series on modeling behavior in the context of object orientation, and the second on goal-driven modeling in particular. The previous article showed how to use goals in existing object-oriented languages to constrain the choice of operation parameters, discover new object structure, and support more powerful forms of method dispatch. This article elaborates on that by proposing extensions to object-oriented languages that more directly support goal-driven modeling.

Extending UML to Improve the Representation of Design Patterns

Several design patterns are defined to make systems more flexible and extensible. The main goal of this work is to show how the representation of these kind of patterns, which we refer to as configuration design patterns, can be vastly improved through extensions to the diagrams used to model them. An extension to the UML design notation to better represent configuration patterns is proposed and illustrated through examples of well-known design patterns and real-world frameworks. The article also shows that the proposed representation can be more easily mapped to new implementation techniques such as Aspect-Oriented Programming and Subject-Oriented Programming.

Poorly Designed Features 0f C++ Constructors

In C++, a constructor is a special function that must be invoked when an object is created. Its objective is to initialize a new object to a valid state before any processing occurs using the object. Constructors appear to have some poorly designed features for many reasons, such as the condition, which requires the class constructor's name to be the same as the class name. These features are explored so that some precautions can be taken when building any C++ compiler. In addition, any future modification to the C++ language or the design of any new object-oriented language can avoid these features. The resolution for some of these features is suggested.