Design patterns are an important component in the toolkit of software developers. They are generic solutions to recurring, specific problems that software developers encounter on a day-to-day basis. However, "some [software developers] find it difficult to make the leap from the pattern description to a particular implementation [while] others might have no trouble translating the pattern into code, but they still find it a chore" (Budinsky et Al., "Automatic Code Generation from Design Patterns", 1996). Eloquence is a tool developed as an Eclipse plug-in to address this issue; it allows seamless and automated integration of aspect-oriented design pattern implementations with Java/AspectJ projects.
Eloquence consists of two components: first, a re-usable and extensible library of aspect-oriented implementations of common design patterns and second, an extension to Eclipse which facilitates the use of this library from within AspectJ/Java projects in Eclipse. Eloquence lets the user select a design pattern from a catalogue of design patterns, obtain more information on each design pattern, and integrate an instance of the particular design pattern with their code. The instance code is generated and instantiated into a project automatically, but the Eloquence library needs to be added manually in the cases when it is used.
Currently, Eloquence is in the stages of being a beta-version. Much of its functionality is implemented, and, in principle, it is ready to be used on a day-to-day basis. However, there are several improvements which we have planned. Amongst others, the library of design patterns still requires to be completed. At the moment, roughly a third of the Gang-of-Four design patterns is available: the Prototype, the Singleton, the Adapter, the Flyweight, the Mediator, the Observer, the Strategy and the Cuckoo's Egg are in the library. We intend to complete the library soon -- adding a design pattern is straightforward, you can find a description of the process here, in case you would like to contribute to this project.
The following screenshots illustrate Eloquence; the design pattern applied in this example is the observer:
You do not need to manually download Eloquence to set it up into your Eclipse workspace. Rather, you can use the workspace configuration management to automatically install/deinstall Eloquence into your Eclipse workspace: details are provided here and here.
The library of re-usable design pattern implementations in AspectJ which you will need to put into the classpath of projects that make use of Eloquence-generated design pattern instances can be found here. The filesize is roughly 36 kilobytes.
Alternatively, you can download the current release package, Eloquence 1.0.0, from here. This package includes source codes, compiled binaries, and plug-in documentation of both the library and the plug-in. Basically, this file represents a snapshot of our Eclipse workspace on Eloquence. The filesize is roughly 2.9 megabytes.
Eloquence has extensive documentation which is built into the help system that Eclipse provides. The following are a few important topics:
Furthermore, the current release package contains API documentation in Javadoc; we also tried to comment the code as well as possible. Should further issues arise, do not hesitate to contact us using the Sourceforge facilities such as the Bug Tracker, Support Request, Feature Request, and Patches modules.
The word Eloquence signifies "powerful and effective language" or "persuasive, powerful expression". Someone who masters a certain language well can be called eloquent in this language. Eloquence attempts to make a software developer's language more expressive with respect to design patterns -- in a sense, this means that Eloquence is both the name and the intent of the plug-in!
Eloquence was developed during an MSc in Advanced Computing project in the Department of Computing at Imperial College London. We acknowledge the support of all the people involved with this project; in particular, the project would have been impossible without Susan Eisenbach and Naranker Dulay. Furthermore, we thank Sourceforge for hosting the Eloquence plug-in at this website.
Some materials on this website have been taken or compiled from the following resource: