GenVoca is tool developed by Don Batory for defining code constructs in a higher level than program code. In GenVoca, a module is specified by declaring the set of "layers" that make it up, where each layer defines an "aspect" of the module:
myFooContainer
Adding a layer in effect adds methods and/or adds arguments to existing methods. Layers can be mixed and matched in a very flexible way.
GenVoca creates C++ code.
One example was a tree data type whose memory allocation layer could be one of: a fixed array (for speed), a series of large RAM blocks (for large in-memory trees), and a full distributed memory system (for terabyte sized trees).
Papers
http://www.cs.utexas.edu/users/schwartz/Awards.html
http://citeseer.ist.psu.edu/batory97composition.html
The GenVoca Model of Software-System Generators
http://csdl.computer.org/comp/mags/so/1994/05/s5089abs.htm
terse description
http://www.program-transformation.org/Transform/GenVoca
A Distributed Architecture Definition Language: a DADL
(mentions GenVoca and related work)
http://www-db.stanford.edu/~burback/dadl/control.html
Personally, I prefer the idea of a tool over C++ templates for defining boilerplate classes. Templates don't really fit in a programming language. A sort-of mini-GenVoca where one could say that for this project we need vector
Is there anything like GenVoca for java or is that uneccessery and if it is, what does java do to deal with layers. -- Maiken
This seems related to or perhaps even directly built on the idea of PolicyBasedClassDesign; ModernCeePlusPlusDesign has some details on this.
See also: AspectOrientedProgramming