Rhizome: a Feature Modeling and Automatic Code Generation Platform 
Rhizome consists of a feature modeling language (VarML) and a code generation engine. It allows system designers to make feature design choices at high level, e.g. by selecting what features should be included or disincluded, or providing values for feature structures. These feature design choices are captured in a feature model. Then, a code generator uses this feature model as input and parameterizes this model. Parameter values then replace parameters in source code templates according to several code generation patterns and finally we get the source code that implements this feature model automatically. Template files are designed by product family platform designers, who study existing products and summerize the implementation in templates that have embedded parameters.
FeatureML: A Feature Modeling Language
FeatureML is an XML schema that contains three basic elements: vp_entity models structure or static feature design choices such as feature and sub-feature structures, feature value types, additional value constraints, etc; vp_application describes dynamic or behavior feature design choices such as different activities associated with a user type; code_generation_unit connects templates and provides parameter values to these templates for code generation purpose.
A feature model described in FeatureML is one of the many possible ways to design a product in a product family. The whole collection of design knowledge, expertise and existing feature models are captured in a variability model described using a variability modeling language. We don't have a concrete variability modeling language so far and we are still working on that part now. The language format will be quite similar to VarML that we invented for Bamboo project though.
Bamboo: Automatic Generation of SCM Systems 
Bamboo is my MS thesis project and predecessor of Rhizome feature modeling and automatic generation platform. We learned many valuable insights from Bamboo project. Bamboo code generator is a selector-based generator, meaning we predefine a set of feature design choices and connect this set of choices at the code generation time. Semantic information are captured manually beforehand instead of transferring to the generated code dymanically at generation time. This design has scalability problems and we later replaced this selector-style code generation with a more general template-based generation.
Another problem with Bamboo is that the version control system product family used for proof-of-concept has a small scale and lack complicated code structure and library dependency. This made we opt for the choice of online exam Web application product family later in Rhizome project since Web applications have a more complex code structure and middle to large system scale. Online exam system Web applications also have real world usage and they are not simply research toy systems.
Software Configuration Management (SCM) Systems: Software tools that help control the evolution of complex software systems. Examples include RCS, CVS, Subversion, Rational ClearCase, Perforce, etc. They provide features like requirement engineering, version control, workflow management, distributed workspace collaboration, auditing and accounting, testing, bug tracking, build and release, etc.
Problem Defintion: Currently, most SCM systems are commercial off-the-shelf products and vendors provide only high level feature descriptions and success stories. Users turn to SCM vendors for a suitable solution when problems happen with their existing development process. With these specific problems, customers select SCM solutions according to problem requirements, previous SCM experience, product features and reputation, price performance comparison, or they pay for consultation from SCM experts. There are no standard modeling methodologies and little tool support for detailed cross-system feature comparison and requirement-oriented SCM selection process.
The decision about which SCM system to pick is tough: all features should be availalbe including those might become necessary in future. SCM vendors will thus pack every possible feature into the tools and make a "big monster" system. Such systems are big, expensive, and difficult to use and this makes entry barrier for SCM adoption very high. There are no SCM tools that provide feature customization that fit exactly with what customers want and no solution for evolutionary SCM tools that change when customer requirements change.
Our Take on the Problems: We propose to develop a domain model and a tooling framework for automatic generation of rule-based SCM systems. Developers and customers work together to match requirements with the set of features they want and develop data model and semantic model specifications. Code generator will automatically create the code that implements those specifications and produce running SCM systems. When customer requirements change, model specifications can be revised and updated systems are regenerated instantly and inexpensively.
For technical details, please visit Bamboo project website (it's down now for technical reasons, we are fixing it). The Bamboo generator we have developed can now automatically produce source code from a set of configuraiton files that model feature customization details. So far, a linear versioning system and a branching system can be generated using our tool. See the ASE'05 demo video below.
Bamboo VarML: a Variability Modeling Language
Overview: During the process of developing Bamboo SCM generator, we found that variability modeling is an interesting and crucial problem for areas such as product line software engineering, software domain modeling and feature modeling, design space exploration and modeling, etc. But existing approaches don't address the variability dependency quite well, i.e. they only support simple relationships like XOR, OR, AND, etc. There is also no standard variability modeling language that can help build design knowledge for software reuse and domain analysis purposes.
We are developing a modeling language called VarML. It has four elements to create a variability model: vp_element represents containment structures for system components, vp_activity describes content for system operations, dep stores dependency relationships using Schematron XML schema language, and instance records existing system instances derived from the variability model. For simplicity, we designed in a way such that we can use the same XML schema for variability model and system instances. We also built a tool called VarML GUI (currently in 0.0.1 version) that can help graphically model the variabilities. See the demo videos below in the Demo section.
Reports and Publications
Guozheng Ge, E. James Whitehead, Jr., "Scenario-based Evaluation for Configuration Management Systems", Technical Report, School of Engineering, University of California, Santa Cruz, 2006
Guozheng Ge, E. James Whitehead, Jr., "Bamboo: An Architecture Modeling and Code Generation Framework for Configuration Management Systems", 20th ACM/IEEE International Conference on Automated Software Engineering, Demonstrations, Long Beach, California, USA, November 7-11, 2005
Pan Kai, E. James Whitehead, Jr., Guozheng Ge, "Textual and Behavioral Views of Function Changes", 3rd International Workshop on Traceability in Emerging Forms of Software Engineering (TESFE'05), Long Beach, California, USA, November 8, 2005
Guozheng Ge, E. James Whitehead, Jr., "Automatic Generation of Rule-based Software Configuration Management Systems", ISR Graduate Student Research Forum, June 3, 2005, University of California, Irvine.
Guozheng Ge, "Automatic Generation of Rule-based Software Configuration Management Systems", 27th International Conference on Software Engineering (ICSE'05) Doctor Symposium, May 17, 2005, St. Louis, Missouri. (a longer version can be found here)
Guozheng Ge, "Automatic Generation of Rule-based Software Configuration Management Systems", Advancement to PhD Candidacy Proposal, December 12, 2004, University of California, Santa Cruz.
E. James Whitehead, Jr., Guozheng Ge, Kai Pan, "Automatic Generation of Hypertext System Repositories, A Model Driven Approach." Proceedings of the Fifteenth ACM Conference on Hypertext and Hypermedia (Hypertext 2004), August 9-13, 2004, Santa Cruz, California, pp. 205-214. (23%)
Kai Pan, E. James Whitehead, Jr., Guozheng Ge, "Hypertext Versioning for Embedded Link Models." Proceedings of the Fifteenth ACM Conference on Hypertext and Hypermedia (Hypertext 2004), August 9-13, 2004, Santa Cruz, California, pp. 195-204. (23%)
Project Demos
Rhizome demo video: In this video, we show the whole process of generating source code, importing the code into Eclipse, compiling and running the generated Web application (a fammily of online exam systems). The video can be found here
(15m01s, 45MB).
VarML demo videos: The first video shows graphical XML schema for VarML language: VarML schema introduction
(2m55s, 4.63MB)
The second video demonstrates a graphical editor for VarML language that we developed using Eclipse Graphical Modeling Framework (GMF) and Graphical Editing Framework (GEF): VarML GUI demo
(11m39s, 16.07MB)
ASE'05 Demo Presentation, poster, demo video
(14m23s, 11.2MB), November 9, 2005, Long Beach,
CA
Presentation Slides
Ph.D. Disseration Defense Presentation, (PDF version) March 14, 2008, Santa Cruz, CA
ISR Graduate Student Research Forum Presentation, June 3, 2005, Irvine, CA
ICSE'05 Doctoral Symposium Presentation, May 17, 2005, St. Louis, Missouri.
Advancement to PhD Candidacy Talk, December 22, 2004, University of California, Santa Cruz.
ABLE-based Business Rule Processing(intern talk at IBM Almaden, link removed due to IBM request), September 2004.
Hypertext'04 Conference Presentation, August 13, 2004, Santa Cruz, California.
Research Group
Last update: