openArchitectureWare (oAW) is a modular MDA/MDD generator framework implemented in Java(TM). It supports parsing of arbitrary models, and a language family to check and transform models as well as generate code based on them. Supporting editors are based on the Eclipse platform. OAW has strong support for EMF (Eclipse Modelling Framework) based models but can work with other models, too (e.g. UML2, XML or simple JavaBeans) At the core there is a workflow engine allowing the definition of generator/transformation workflows. A number of prebuilt workflow components can be used for reading and instantiating models, checking them for constraint violations, transforming them into other models and then finally, for generating code. The following is a comprehensive list of the current features of openArchitectureWare: – The workflow engine precisely controls the generator’s workflow, as specified in an XML workflow definition. It is based on a dependency injection mechanism. – With a suitable instantiator, oAW can read any model. Currently, we provide out-of-the-box support for EMF , Eclipse’s UML2, various UML tools (MagicDraw, Poseidon, Enterprise Architect, Rose, XDE, Innovator, Â…), textual models (using the Xtext framework), XML, Visio as well as pure::variants variant configuration models. – A statically typed language family for checking, modifying and transforming models as well as generating code. All languages are based on the same type system (and expression language) providing a unique abstraction over different meta meta-models (e.g. EMF’s Ecore, Eclipse’s UML2, JavaBeans, XML DOM, etc.) – Check is an OCL-like language, supporting declarative definition of constraints – Xtend is a functional model transformation language, which is also used to ‘extend’ metatypes with additional behaviour in a non-invasive manner. – Xpand2 is a powerful template language that supports template polymorphism, template aspects and many other advanced features necessary for building non-trivial code generators – Rich Eclipse support for all three languages including static type checking, syntax highlighting, context sensitive code completion, etc. – Support for multiple models: you can read several models as part of one generator run. – Support for multiple meta-models: you can read several models based on different meta-models as part of one generator run. – Support for multiple meta meta-models: you can read several models based on different meta-models, based on different meta meta-models (e.g Ecore, XML, JavaBeans) as part of one generator run. – Complete modular design: You can enhance or extend any of the framework components as you see fit.