Gen Voca

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 <list ofType(Foo) sorted persistent withIterators>
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<int>, vector<FooBar>, list<string>, 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


EditText of this page (last edited August 4, 2006) or FindPage with title or text search