Roadmap

  1. Why code generation? Introduction to generative technologies

  2. How to perform a domain analysis, create a model/meta-model and build a code generator - experiences from a thesis. (With participation from the industry)

  3. Simple generation: Java Code Annotation, Java generics, Java doc, XDoclet

  4. Template Processors: Eclipse JET and what you can do with it. The theory behind frame processors.

  5. Model driven generation: Eclipse Modelling Framework. Advanced code generation with this framework. We will use it and also take a look at its implementation.

  6. XML/XSL based code generation: using Relaxer, Schematron etc. to transform XML Meta-data into source code. Why is the functional language approach so successful in generation? Advantages of "duck modelling approaches (see Sean Mc Grath in the resources section)

  7. Compilation: how ANTLR works. Grammar, recognizers and AST. How to build a network protocol using a grammar. Or how to validate input using a compiler.

  8. Domain and software analysis for a large industry project. Shows how a large piece of software is analyzed and chances improvement - either through code generation or organizational processes - are detected. Shows how models and meta-models are a natural consequence of such an analysis. (With participation from the industry)

    Includes commonalities and variations, techniques for generalizations.

  9. Meta-modelling (MOF etc.) and Model-Driven Architecture. How to create meta-models and how they can be used in generative computing.

  10. Architectures and dependency management. Some theoretical work on how to separate business logic from presentation needs in templates. How to decouple components and interfaces. Externalization of interfaces and implementations using inversion-of-control type architectures.