As a response to technological changes, such as the massive use of microprocessors, fast networks and bit-mapped monitors, the software engineering process has moved from the traditional sequential software production paradigm to an evolutionary model of software development. The sequential approach will remain applicable to those problems in which requirements are well defined and complexity is relatively low. Problems that do not fit into this category will very likely be subject to an adaptative or evolutionary software engineering process. Object-orientation, openness and computational reflection offer promise of shortening development cycles through reuse/adaptation of software developed and tested in the previous iteration of the evolutionary development process. Guaranį has been designed to take the benefits of open and reflective software architectures a step further. We have studied existent open software architectures and determined that they could be improved through the use of composers and meta-objects that allow the implementation of highly coherent and loosely coupled software [29]. Composers and meta-objects form a framework that allows software developers to map a loosely-coupled and highly-coherent object model into an implementation that preserves these properties. The preservation of structural and communication properties in the implementation is essential to facilitate the application of the evolutionary software engineering techniques.
We have implemented this software architecture by modifying the Kaffe OpenVM TM, an implementation of the Java Virtual Machine Specification [19] whose source code is distributed under the GNU General Public License. The Java programming language, on the other hand, has not been changed at all: any program created and compiled with any Java compiler will run on our implementation, and it will be possible to use reflective mechanisms in order to adapt and/or extend them.