Software is constantly in motion. Bugs are fixed, new features added, current features improved and architectures improved. Being the core of most applications, data models do not escape continuous changing. As software is in use, it gathers and stores data, following a data model structure. When a data model is updated, persistent data is may no longer be readable and is lost.

To cope with changing data models, data migration can transform old data to adhere the new rules set by an updated data model. Data migrations are tedious to construct, bug-sensitive and are needed for every new version of the data model, requiring a significant effort in development focused on changing the data model as less as possible and an infeasible manual effort in agile development.

Automating Data Model Evolution

Acoda automatically migrates data along an evolving data model. Input to Acoda are two versions of a data model and a database. Acoda automatically detects what was changed from one data model to the other and changes a copy of the data accordingly. Output is a ready-to-use database dump adhering the latest data model version.

Acoda is built for object oriented data models, but works equally well for relational data models. It supports arbitrary types of primitive attributes, type inheritance, object relations, abstract types, sets, lists, attribute cardinalities (including mandatory) and inverse relations. The changes Acoda supports include: attribute and type renaming, attribute moving, changing attribute types, resolving implicit references, wrapping attributes, introducing uniqueness and changing attribute cardinalities.

Acoda support

For bugs, imrpovements or feature requests, please visit the Acoda issue tracker at

Acoda is a project from the Software Engineering Research Group of Delft Technical University of Technology. It is supported by NWO/JACQUARD project 638.001.610, MoDSE on Model-Driven Software Evolution.

Revision: r1.12 - 11 Feb 2010 - 14:54 - SanderVermolen
Acoda > WebHome
Copyright © 2003-2017, Software Engineering Research Group, Delft University of Technology, The Netherlands