The diagram below shows the different parts of Evolve.
These parts are explained in detail below, starting from the lower layers and working up.
At the heart of Evolve is a hierarchical component model with full connectors. Connectors act like wires between components, making it simple and intuitive to express detailed structures that are difficult or impossible in other approaches such as dependency injection.
These two constructs provide unprecedented levels of support for component reuse. Resemblance is a form of component inheritance. Evolution builds on this to allow the structure of an existing system to be remodeled, without destroying the original definition. These facilities can be used to create variants of a system, or to switch in test components.
This executes the programs created in Evolve.
Backbone is a compact domain-specific language that allows plain-vanilla JavaBeans to act as full components, and to be wired up according to the component model. The interpreter reads in the text files, and uses the instructions to instantiate and connect up the beans.
JavaBeans have a representation in Backbone and also in Java code. Composite components, formed by wiring together JavaBean instances, only have a Backbone representation however.
This level is analogous to the Spring XML bean configuration, but more powerful. Backbone is fully open source. See the Backbone page for an example program.
On top of this, Evolve provides a graphical editor for connecting up and evolving components. Industry standard UML2 component diagrams and state charts are used.
Optionally, Evolve can help you define and generate setter / getter code for JavaBeans. Evolve also makes it easy to import and wire together existing beans.