Issue No.02 - Feb. (2013 vol.39)
pp: 184-196
Marco Piccioni , ETH Zurich, Zurich
Manuel Oriol , ABB Corporate Research, Industrial Software Systems, Baden-Dättwil and University of York, York
Bertrand Meyer , ETH Zurich, Zurich
With the wide support for object serialization in object-oriented programming languages, persistent objects have become commonplace and most large object-oriented software systems rely on extensive amounts of persistent data. Such systems also evolve over time. Retrieving previously persisted objects from classes whose schema has changed is, however, difficult, and may lead to invalidating the consistency of the application. The ESCHER framework addresses these issues through an IDE-integrated approach that handles class schema evolution by managing versions of the code and generating transformation functions automatically. The infrastructure also enforces class invariants to prevent the introduction of potentially corrupt objects. This paper describes a model for class attribute changes, a measure for class evolution robustness, four empirical studies, and the design and implementation of the ESCHER system.
Object oriented modeling, Java, Databases, Software, Robustness, Dictionaries, Atomic measurements, IDE integration, Versioning, persistence, serialization, object-oriented class schema evolution
Marco Piccioni, Manuel Oriol, Bertrand Meyer, "Class Schema Evolution for Persistent Object-Oriented Software: Model, Empirical Study, and Automated Support", IEEE Transactions on Software Engineering, vol.39, no. 2, pp. 184-196, Feb. 2013, doi:10.1109/TSE.2011.123
[1] M. Piccioni, M. Oriol, B. Meyer, and T. Schneider, "An Ide-Based, Integrated Solution to Schema Evolution of Object-Oriented Software," Proc. IEEE/ACM Int'l Conf. Automated Software Eng., pp. 650-654, 2009.
[2] M.P. Atkinson, "Persistence and Java—A Balancing Act," Proc. Int'l Symp. Objects and Databases, pp. 1-31, 2000.
[3] M. Jordan, "A Comparative Study of Persistence Mechanisms for the Java Platform," Technical Report TR-2004-136, Sun Microsystems Laboratories, 2004.
[4] Oracle, "Java Serialization Specification," http://download. platform/serialization/specversion. html#6519 , 2012.
[5] Microsoft, "Version Tolerant Serialization," http://msdn. ms229752(VS.100).aspx, 2012.
[6] B. Meyer, "Applying 'Design by Contract'," Computer, vol. 25, no. 10, pp. 40-51, 1992.
[7] J. Paterson, S. Edlich, H. Hörning, and R. Hörning, Microsoft Windows Internals. Microsoft Press, 2005.
[8] J. Banerjee, W. Kim, H.-J. Kim, and H.F. Korth, "Semantics and Implementation of Schema Evolution in Object-Oriented Databases," Proc. ACM SIGMOD Int'l Conf. Management of Data, pp. 311-322, 1987.
[9] A.H. Skarra and S.B. Zdonik, "The Management of Changing Types in an Object-Oriented Database," Proc. Conf. Object-Oriented Programming Systems, Languages and Applications, pp. 483-495, 1986.
[10] S.-E. Lautemann, "An Introduction to Schema Versioning in Oodbms," Proc. Seventh Int'l Workshop Database and Expert Systems Applications, pp. 132-139, 1996.
[11] S.R. Monk and I. Sommerville, "Schema Evolution in OODBs Using Class Versioning," SIGMOD Record, vol. 22, no. 3, pp. 16-22, 1993.
[12] GemStone, "Gemstone/s 64 Bit Programming Guide," , 2009.
[13] Oracle "Edition-Based Redefinition," features/availabilityed.-based- redefinition-1-133045.pdf , 2009.
[14] M. Piccioni, M. Oriol, and B. Meyer, "Ide-Integrated Support for Schema Evolution in Object-Oriented Applications," Proc. Workshop Reflection AOP and MetaData for Software Evolution, pp. 27-36, 2007.
[15] B. Meyer, "Conversions in an Object-Oriented Language with Inheritance," J. Object-Oriented Programming, vol. 13, no. 9, pp. 28-31, 2001.
[16] G.M. Bierman, M.J. Parkinson, and J. Noble, "Upgradej: Incremental Typechecking for Class Upgrades," Proc. 22nd European Conf. Object-Oriented Programming, pp. 235-259, 2008.
[17] D. Dig, K. Manzoor, R. Johnson, and T.N. Nguyen, "Refactoring-Aware Configuration Management for Object-Oriented Programs," Proc. 29th Int'l Conf. Software Eng., pp. 427-436, 2007.
[18] K. Czarnecki, J.N. Foster, Z. Hu, R. Lämmel, A. Schürr, and J.F. Terwilliger, "Bidirectional Transformations: A Cross-Discipline Perspective," Proc. Second Int'l Conf. Theory and Practice of Model Transformations, pp. 260-283, 2009.
[19] M. Hofmann, B.C. Pierce, and D. Wagner, "Symmetric Lenses," Proc. ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, 2011.
[20] M.P. Atkinson, "Programming Languages and Databases," Proc. Fourth Int'l Conf. Very Large Data, pp. 408-419, 1978.
[21] M.P. Atkinson and R. Morrison, "Orthogonally Persistent Object Systems," Int'l J. Very Large Data Bases, vol. 4, no. 3, pp. 319-401, 1995.
[22] M.P. Atkinson and M. Jordan, "A Review of the Rationale and Architectures of Pjama: A Durable, Flexible, Evolvable and Scalable Orthogonally Persistent Programming Platform," Technical Report SMLI TR-2000-90, Sun Microsystems Laboratories, 2000.
[23] B.M.B. Lewis and N. Gafter, "Architecture of the PEVM: A High-Performance Orthogonally Persistent Java Virtual Machine," Technical Report TR-2000-93, Sun Microsystems Laboratories, 2000.
[24] M. Dmitriev, "Safe Class and Data Evolution in Long-Lived Java Applications," Technical Report SMLI TR-2001-98, Sun Microsystems Laboratories, 2001.
[25] G. Wachsmuth, "Metamodel Adaptation and Model Co-Adaptation," Proc. 21st European Conf. Object-Oriented Programming, pp. 600-624, 2007.
[26] B. Gruschko, D.S. Kolovos, and R.F. Paige, "Towards Synchronizing Models with Evolving Metamodels," Proc. Int'l Workshop Model-Driven Software Evolution, 2007.
[27] M. Herrmannsdoerfer, S. Benz, and E. Jürgens, "Automatability of Coupled Evolution of Metamodels and Models in Practice," Proc. 11th Int'l Conf. Model Driven Eng. Languages and Systems, pp. 645-659, 2008.
[28] A. Cicchetti, D.D. Ruscio, R. Eramo, and A. Pierantonio, "Automating Co-Evolution in Model-Driven Engineering," Proc. 12th IEEE Int'l Enterprise Distributed Object Computing Conf., pp. 222-231, 2008.
[29] J.-R. Falleri, M. Huchard, M. Lafourcade, and C. Nebut, "Metamodel Matching for Automatic Model Transformation Generation," Proc. 11th Int'l Conf. Model Driven Eng. Languages and Systems, pp. 326-340, 2008.
[30] I. Neamtiu, M.W. Hicks, G. Stoyle, and M. Oriol, "Practical Dynamic Software Updating for C," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 72-83, 2006.
[31] R.G.G. Cattell, The Object Data Standard: ODMG 3.0. Morgan Kaufmann, 2000.
[32] C. Delgado, J. Samos, and M. Torres, "Primitive Operations for Schema Evolution in ODMG Databases," Proc. Object-Oriented Information Systems, pp. 226-237, 2003.
[33] C. Date, Introduction to Database Systems, eighth ed. Addison Wesley, 2003.
[34] E. Rahm and P.A. Bernstein, "A Survey of Approaches to Automatic Schema Matching," Int'l J. Very Large Data Bases, vol. 10, no. 4, pp. 334-350, 2001.
[35] T. Milo and S. Zohar, "Using Schema Matching to Simplify Heterogeneous Data Translation," Proc. 24th Int'l Conf. Very Large Data Bases, pp. 122-133, 1998.
[36] B.S. Lerner, "A Model for Compound Type Changes Encountered in Schema Evolution," ACM Trans. Database Systems, vol. 25, no. 1, pp. 83-127, 2000.
[37] C.A. Curino, H.J. Moon, and C. Zaniolo, "Graceful Database Schema Evolution: The Prism Workbench," Proc. VLDB Endowment, vol. 1, pp. 761-772, 2008.
[38] V. Authors, "Schema Evolution Benchmark," http:/, 2012.
[39] C. Boyapati, B. Liskov, L. Shrira, C.-H. Moh, and S. Richman, "Lazy Modular Upgrades in Persistent Object Stores," Proc. 18th Ann. ACM SIGPLAN Conf. Object-Oriented Programing, Systems, Languages, and Applications, pp. 403-417, 2003.
[40] E. Franconi, F. Grandi, and F. Mandreoli, "Schema Evolution and Versioning: A Logical and Computational Characterisation," Proc. Workshop Foundations of Models and Languages for Data and Objects, pp. 85-99, 2000.
[41] D. Advani, Y. Hassoun, and S. Counsell, "Extracting Refactoring Trends from Open-Source Software and a Possible Solution to the "Related Refactoring" Conundrum," Proc. ACM Symp. Applied Computing, pp. 1713-1720, 2006.
[42] B. Meyer, "Attached Types and Their Application to Three Open Problems of Object-Oriented Programming," Proc. 19th European Conf. Object-Oriented Programming, pp. 1-32, 2005.
[43] ECMA International Standard: Eiffel Analysis, Design and Programming Language, ECMA Committee TC39-TG4 Std. 367, 2005.