Department of Electrical and Computer Engineering


Molhado Software Configuration Management Infrastructure

MOLHADO is an SCM infrastructure that was specifically designed to support the development of object-oriented SCM systems. The key point of Molhado is its object-oriented approach to SCM in which all system objects are versioned and persistent.

New object types are defined based on a representation model in which a version model is built into a primitive data model. This approach facilitates versioning for logical objects since their internal properties and logical structures are visible to the version model.

An extensible, logical, and object-oriented system model provides a framework for developers to model a software system (according to any particular development paradigm), in terms of logical objects and their relations at different levels of abstraction and granularity. With the Molhado editor, developers can define new types of objects as normal Java classes inherited from basic entities in Molhado's system model, and code to handle versioning and storing for objects will be automatically inserted.

To support versioning for structured objects, a structure versioning infrastructure including fine-grained versioning algorithms for trees and directed graphs has been developed on top of the representation model.

Since working with logical objects, each of them requires the use of specialized tools such as editors for those objects. To address this problem, Molhado also provides a simple pluggable architecture that enables the integration of a resulting SCM system and specialized tools. The result of this integration is an SCM-centered development environment, where the SCM system is the heart of the environment and every changes to logical objects and structures during the development process will be recorded. By maximizing the reuse of SCM infrastructures via
built-in modules, Molhado can minimize developers' effort in building versioning and SCM services for objects in these environments.

In the Molhado product versioning approach, a version is global across entire project, rather than being a particular state of an artifact. That is, all system objects are persistent and versioned in a global version space of a software project. This product versioning choice enables an infrastructure for managing configurations among any objects of new types with a minimum requirement of code from developers. Molhado's transaction supports are all GUI-based.

The system model is also enhanced by a versioned hypermedia infrastructure, which manages the evolution of fine-grained links among objects separately from object contents.

Application of the approach

Based on the system model, we have built a library of commonly used object types and associated editors
including Java classes, Java programs with embedded multimedia documentation, documentation in XML, HTML, Scalable Vector Graphics (SVG). Editors are modified from the SC environment. Image, audio, and object files are considered to have no internal structure for the versioning purpose. Facilities are provided to import and export components (stored in our binary format) from and to corresponding external formats at any version.

All components in Molhado are versioned at both coarse- and fine-grained manners.

Structural comparison tools have been developed.

To produce a SCM-centered environment, all developers need to do is to implement new object types and associated tools, while reusing all other Molhado's modules described above. To demonstrate the use of Molhado, we have built four prototypes of object-oriented SCM systems and associated SCM-centered development environments, accommodating different development frameworks. Although none of these systems are fully functional as real-world development environments, they have advantages and illustrate the key benefit of Molhado: the reduction in developers' effort. These four environments share Molhado's infrastructure and the library of common object types and associated editors. Each of them has some specialized object types and associated editors. For example, MolhadoArch has architectural objects and the architecture editor. The prototypes are:

  1. SCM for Web engineering projects

  2. SCM for UML-based software development
  3. Traditional file/directory-based SCM-centered environment