Lehrgebiet InformationssystemeFB Informatik |
||
Model-Driven Development of Versioning Systems
Jernej Kovse
Project goal: Develop and evaluate methods and tools for generative, model-driven development
of RDBMS-intensive middleware systems. Use versioning systems as an example for such systems.
OverviewGenerative software development [CE00] focuses on automated development of software systems from formal specifications. A specification is mapped to a system implementation by a generator (or many cooperating generators) that use a base of reusable assets, such as code templates, source code frameworks, code transformation rules (also called transforms), or ready-to-use binary components. Generative software development pays off in case an organization needs to deliver a variety of systems that share a common set of structural and behavioral features, but still differ in a carefully defined selection of features that can be determined by the end-user. In case these systems cover a certain market domain, they are said to constitute a software product line. In case the systems share a common software architecture, they are said to constitute a system family. In this project we treat versioning systems [Ber98] as a software product line. Each system from the product line supports storing and versioning data and accessing this data using set-oriented and navigational access. However, the implementation of the systems depends on the information model (schema) for the managed data. The information model depends on the concrete application the versioning system is to be used in - obviously, versioning systems used in (a) software development (for versioning specifications, models, test cases, source code, database schemas, and builds), (b) CAD (for versioning design plans), (c) Content Management (for versioning content, like articles, images, and graphs), or (d) experimentation environments (for versioning mining alghorithms for processing large data sets from proteomics, genomics and high-energy physics) will require highly different information models. Information models contain definitons of object types and relationship types for the stored data. Information models can be fine-tuned for storage requirements as well as performance. For example, you may specify which object types and relationship types support versioning behavior, define constraints on version trees (like each version should have at most four successor versions), or define how operations like new (creates a new object), create successor (creates a successor version to a given version), or freeze (freezes a given version) propagate across the relationships. Easy specification of an enhanced information model and the step of generating a version system out of this specification is investigated in three sub-projects: MT-Flow, VSGen, and DSL-DIA.
MT-FlowMT-Flow [] is an approach for automated production of system specifications expressed in UML. Instead of developing a UML model manually, the user is guided through a series of steps, where only domain-specific decisions (feature selection) have to be made in each step. At the end of each step, a concrete model transformation is automatically generated from a transformation template. This concrete transformation is then applied to the current state of the model to enhance or filter the model.
VSGenIn VSGen [], we have developed a UML profile (a set of stereotypes, constraints, tag definition and tagged values) for modeling versioning systems with UML tools. The model of a versioning system is imported to an in-memory UML repository and analyzed by a generator. The generator uses code templates to deliver an executable and optimized implementation of a versioning system for the J2EE platform. We have investigated various how various enterprise patterns influence the performance of generated versioning systems.
DSL-DIAGenerative software development is often associated with domain-specific languages that introduce problem-oriented abstractions for easy design and programmatic access to systems within a given product-line. Since versioning systems are database-intensive products, our DSL-DIA approach investigates the design and implementation of a domain-specific SQL language extension for developing database schemas of versioning systems and querying versioned data.
References[Ber98] Bernstein, P.A.: Repositories and Object-Oriented Databases, SIGMOD Record 27:1 (1998), pp. 34-46. [CE00] Czarnecki, K., Eisenecker, U.W.: Generative Programming: Methods, Tools and Applications, Addison-Wesley, 2000. |