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, vector, list, and whatever else. The tool would create the code and compile it as a library. -- IanRae 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