Abstract
In the context of model-driven development of database applications with UML, the (usually relational) database schema is obtained automatically from the application’s structural (class) UML model. Changes in requirements often lead to modifications of the application’s structural model. Such changes, in turn, have to be propagated to the underlying database schema. Very often, especially when the system is in production with a large volume of users’ live data, the data is considered to be valuable enough to be preserved through these changes. This paper describes an approach to cope with the problem of model evolution with the ultimate requirement to preserve the data stored in the database. The algorithm interactively determines differences between structural UML models before and after the changes and resolves those differences into transformations in the relational database domain.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.Notes
According to the previously given assumption about limited changes between subsequent production versions.
References
Lehman, M.M.: On understanding laws, evolution, and conservation in the large-program life cycle. J. Syst. Softw. 1, 213–221 (1980)
Curino, C., Moon, H.J., Tanca, L., Zaniolo, C.: Schema evolution in Wikipedia: toward a web information system benchmark. In: International Conference on Enterprise Information Systems (ICEIS) (2008)
Conradi, R., Westfechtel, B.: Version models for software configuration management. ACM Comput. Surv. (CSUR) 30(2), 232–282 (1998)
Kögel, M., Herrmannsdoerfer, M., Li, Y., Helming, J., David, J.: Comparing state- and operation-based change tracking on models. In: Enterprise Distributed Object Computing Conference (EDOC), 2010 14th IEEE, International, pp. 163–172 (2010)
Kögel, M., Herrmannsdörfer, M., Helming, J., Li, Y.: State-based vs. operation-based change tracking. In: Proceedings of the Joint ModSE-MCCM Workshop on Models and Evolution, ModSE-MCCM, vol. 9 (2009)
Bellahsene, Z., Bonifati, A., Rahm, E.: Schema Matching and Mapping. Springer, Heidelberg (DE) (2011)
Euzenat, J., Shvaiko, P.: Ontology Matching. Springer, Heidelberg (DE) (2007)
Shvaiko, P., Euzenat, J.: A survey of schema-based matching approaches. J. Data Semant. IV, 146–171 (2005)
Kolovos, D.S., Di Ruscio, D., Pierantonio, A., Paige, R.F.: Different models for model matching: an analysis of approaches to support model differencing. In: Proceedings of the 2009 ICSE Workshop on Comparison and Versioning of Software Models. Washington, DC, USA. IEEE Computer Society, pp. 1–6 (2009)
Brosch, P., Langer, P., Seidl, M., Wieland, K., Wimmer, M., Kappel, G., Retschitzegger, W., Schwinger, W.: An example is worth a thousand words: composite operation modeling by example. In: Model Driven Engineering Languages and Systems (MoDELS). Springer, Berlin/Heidelberg, pp. 271–285 (2009)
Lippe, E., Van Oosterom, N.: Operation-based merging. In: Proceedings of the Fifth ACM SIGSOFT Symposium on Software Development Environments. New York, NY, USA. ACM, pp. 78–87 (1992)
SOLoist. http://www.soloist4uml.com
Milicev, D.: Model-Driven Development with Executable UML. Wiley (Wrox series), London (2009)
Lin, Y., Gray, J., Jouault, F.: DSMDiff: a differentiation tool for domain-specific models. Eur. J. Inf. Syst. 16(4), 349–361 (2007)
Eclipse Modeling Framework Compare Project. http://www.eclipse.org/emf/compare/
Treude, C., Berlik, S., Wenzel, S., Kelter, U.: Difference computation of large models. In: Proceedings of the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 295–304 (2007)
Curino, C., Moon, J., Ham, M., Zaniolo, C.: The PRISM workbench: database schema evolution without tears. In: ICDE’09. IEEE 25th International Conference on Data Engineering, 2009. IEEE, pp. 1523–1526 (2009)
Moon, H.J., Curino, C.A., Deutsch, A., Hou, C.Y., Zaniolo, C.: Managing and querying transaction-time databases under schema evolution. Proc. VLDB Endow. 1(1), 882–895 (2008)
Barnes, J.M.: Object-relational mapping as a persistence mechanism for object-oriented applications. Honors projects. Paper 6 (2007)
Ambler, S.W.: Mapping objects to relational databases: O/R mapping in detail. (2006). http://www.agiledata.org/essays/mappingObjects.html
Bernstein, P.A., Madhavan, J., Rahm, E.: Generic schema matching, ten years later. Proc. VLDB Endow. 4(11), 695–701 (2011)
Xing, Z., Stroulia, E.: UMLDiff: an algorithm for object-oriented design differencing. In: Proceedings of the 20th IEEE/ACM International Conference on Automated Software Engineering, pp. 54–65 (2005)
Girschick, M.: Difference Detection and Visualization in UML Class Diagrams. Technical report TUD-CS-2006-5, TU Darmstadt (2006)
Kelter, U., Wehren, J., Niere, J.: A generic difference algorithm for UML models. Softw. Eng. 64, 105–116 (2005)
Falconer, S.M., Noy, N.F.: Interactive techniques to support ontology matching. In: Bellahsene, Z., Bonifati, A., Rahm, E. (eds.) Schema Matching and Mapping, pp. 29–52. Springer, Berlin (2011)
Do, H.H., Rahm, E.: Matching large schemas: approaches and evaluation. Inf. Syst. 32(6), 857–885 (2007)
Falconer, S.M., Storey, M.A.: A cognitive support framework for ontology mapping. In: Proceedings of International Semantic Web Conference (ISWC 2007), pp. 114–127. Busan, Korea (2007)
Noy, N.F., Musen, M.A.: The PROMPT suite: interactive tools for ontology merging and mapping. Int. J. Hum.-Comput. Stud. 59(6), 983–1024 (2003)
Lanzenberger, M., Sampson, J.: Alviz—a tool for visual ontology alignment. In: Proceedings of the Conference on Information Visualization, pp. 430–440. London. IEEE Computer Society, Washington, DC (2006)
Mapforce. www.altova.com/mapforce.html
Alexe, B., Chiticariu, L., Miller, R.J., Pepper, D., Tan, W.C.: Muse: a system for understanding and designing mappings. In: Proceedings of the 2008 ACM SIGMOD International Conference on Management of Data, pp. 1281–1284 (2008)
Miller, R.J., Hernandez, M.A., Haas, L.M., Yan, L.L., Ho, C.T.H., Fagin, R., Popa, L.: The Clio project: managing heterogeneity. SIGMOD Rec. 30(1), 78–83 (2001)
Rivera, J., Vallecillo, A.: Representing and operating with model differences. In: Proceedings of Objects, Components, Models and Patterns: 46th International Conference TOOLS EUROPE. Springer, PNBIP 11, pp. 141–160 (2008)
Hartung, M., Terwilliger, J., Rahm, E.: Recent advances in schema and ontology evolution. In: Bellahsene, Z., Bonifati, A., Rahm, E. (eds.) Schema Matching and Mapping, pp. 149–190. Springer, Berlin (2011)
Oracle Enterprise Manager Management Packs. http://www.oracle.com/technetwork/articles/oem-packs-overview-195704.html
Dewson, R.: SQL Server Management Studio. In: Gennick, J., Castro, A., Fox, M. (eds.) Beginning SQL Server 2012 for Developers, pp. 31–49. Apress, New York (2012)
Database version control with IBM Optim Database Administrator V2.2. http://www.ibm.com/developerworks/data/library/techarticle/dm-0704henry/index.html
Visser, E.: WebDSL: a case study in domain-specific language engineering. In: Lämmel, R., Visser, J., Saraiva, J. (eds.) International Summer School on Generative and Transformational Techniques in Software Engineering (GTTSE 2007), vol. 5235 of Lecture Notes in Computer Science, pp. 291–373. Springer, Heidelberg (2008)
Vermolen, S.D., Visser, E.: Heterogeneous coupled evolution of software languages. In: MODELS ’08, vol. 5301 of LNCS, pp. 630–644. Springer (2008)
Code First Blog. http://blogs.msdn.com/b/efdesign/archive/2010/10/22/code-first-database-evolution-aka-migrations.aspx
Terwilliger, J.F., Bernstein, P.A., Unnithan, A.: Worry-free database upgrades: automated model-driven evolution of schemas and complex mappings. In: Special Interest Group on Management of Data (SIGMOD): Proceedings of the 2010 ACM SIGMOD International Conference on Management of data, ACM, pp. 1191–1194 (2010)
Terwilliger, J.F., Bernstein, P.A., Unnithan, A.: Automated co-evolution of conceptual models, physical databases, and mappings. In: Lecture Notes in Computer Science, vol. 6412/2010, pp. 146–159 (2010)
PRISM. http://yellowstone.cs.ucla.edu/schema-evolution/index.php/Prism
Cicchetti, A., Ruscio, D.D., Iovino, L., Pierantonio, A.: Managing the evolution of data-intensive web applications by model-driven techniques. Softw. Syst. Model. 12(1), 53–83 (2013)
Kolovos, D.S.: Establishing correspondences between models with the epsilon comparison language. In: ECMDA-FA ’09: Proceedings of the 5th European Conference on Model Driven Architecture—Foundations and Applications, pp. 146–157. Springer, Heidelberg (2009)
Hainaut, J.L.: The Transformational approach to database engineering. Generative and transformational techniques in software engineering (GTTSE). In: Lecture Notes in Computer Science, vol. 4143, pp. 95–143 (2006)
Domínguez, E., Lloret, J., Rubio, A.L., Zapata, M.A.: MeDEA: a database evolution architecture with traceability. Data Knowl. Eng. 65(3), 419–441 (2008)
Rose, L.M., Paige, R.F., Kolovos, D.S., Polack, F.A.: An analysis of approaches to model migration. In: Proceedings of the Joint MoDSE-MCCM Workshop, pp. 6–15 (2009)
Del Fabro, M.D., Valduriez, P.: Semi-automatic model integration using matching transformations and weaving models. In: Proceedings of the 2007 ACM Symposium on Applied Computing, pp. 963–970, ACM (2007)
Wachsmuth, G.: Metamodel adaptation and model co-adaptation. In: ECOOP 2007-Object-Oriented Programming, Springer, Berlin, Heidelberg, pp. 600–624 (2007)
Specification, MOF QVT Final Adopted. OMG document 05-11-01 (2005)
Cicchetti, A., Ruscio, D.D., Eramo, R., Pierantonio, A.: Automating co-evolution in model-driven engineering. In: EDOC ’O8: Proceedings of the 12th IEEE International EDOC Conference, München, Germany (2008)
Vermolen, S.D., Wachsmuth, G., Visser, E.: Reconstructing complex metamodel evolution. In: Software Language Engineering, pp. 201–221. Springer, Berlin, Heidelberg (2012)
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by Prof. Heinrich Hussmann.
Appendices
Appendix 1
Table manipulation DMPs | |
---|---|
createTable(tableDesc) | |
Contains a full description of the table that is to be created (name, columns, etc.). | |
renameTable(oldTableName, newTableName) | |
deleteTable(tableName) |
Column manipulation DMPs | |
---|---|
addColumn(columnDesc) | |
Contains a full description of the column that is to be created. | |
renameColumn(TableName, oldColumnName, newColumnName) | |
deleteColumn(tableName, columnName) | |
modifyColumn(tableName, oldColumnDesc, newColumnDesc) | |
Handles column transformations like conversion and multiplicity change |
Constraint manipulation DMPs | |
---|---|
addFKey(columnDesc, FKColumnDesc) | |
ColumnDesc and FKColumnDesc describe the column on which the constraint is created and the referenced column, respectively. | |
dropFKey(columnDesc) | |
Drops a foreign key defined on the column columnDesc |
Instance data manipulation DMPs | |
---|---|
insertData(tableName, values) | |
Insert instances values into table named tabledName | |
deleteData(tableName, condition) | |
updateData(tableName, columnName, value, condition) | |
Updates instance data in the column named columnName of table named tableName to value if the condition is satisfied |
Appendix 2
This appendix contains the list of DMPs generated during resolving of the evolution step shown in Fig. 1. For the sake of clarity, we will use the element names from the UML model, as if assuming that functions tableName() and columnName() (used for name mapping between the UML model and the relational domain) simply return the input value. Note that the delete operations do not actually delete the database elements, but rename them, so they become invisible to the runtime OR mapper and the application. This way, the data can be restored if necessary.
-
1.
dropFKey(Manager, assoc);
-
2.
renameColumn(ContactPhone, phoneNum, number);
-
3.
renameColumn(Employee, id, identification);
-
4.
renameTable(Board, Committee);
-
5.
createTable(Cleaner);
-
6.
createTable(assoc_Manager_Committee);
-
7.
createTable(Cashier_register);
-
8.
insertData(assoc_Manager_Committee, Manager. assoc.values);
-
9.
insertData(Cashier_register, Cashier.register.values);
-
10.
deleteColumn(Employee, address);
-
11.
deleteColumn(Cashier, register);
-
12.
deleteColumn(Manager, assoc).
Rights and permissions
About this article
Cite this article
Milovanovic, V., Milicev, D. An interactive tool for UML class model evolution in database applications. Softw Syst Model 14, 1273–1295 (2015). https://doi.org/10.1007/s10270-013-0378-9
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10270-013-0378-9