@inproceedings{CerqueusdeAlmeidaScherzinger, author = {Cerqueus, Thomas and de Almeida, Eduardo Cunha and Scherzinger, Stefanie}, title = {ControVol: Let Yesterday's Data Catch Up with Today's Application Code}, series = {Proceedings of the 24th International Conference on World Wide Web (WWW '15) ; Florence Italy, 18.05.2015 - 22.0.2015}, booktitle = {Proceedings of the 24th International Conference on World Wide Web (WWW '15) ; Florence Italy, 18.05.2015 - 22.0.2015}, editor = {Gangemi, Aldo and Leonardi, Stefano and Panconesi, Alessandro}, publisher = {ACM}, address = {New York, NY, USA}, isbn = {9781450334730}, doi = {10.1145/2740908.2742719}, pages = {15 -- 16}, abstract = {In building software-as-a-service applications, a flexible development environment is key to shipping early and often. Therefore, schema-flexible data stores are becoming more and more popular. They can store data with heterogeneous structure, allowing for new releases to be pushed frequently, without having to migrate legacy data first. However, the current application code must continue to work with any legacy data that has already been persisted in production. To let legacy data structurally "catch up" with the latest application code, developers commonly employ object mapper libraries with life-cycle annotations. Yet when used without caution, they can cause runtime errors and even data loss. We present ControVol, an IDE plugin that detects evolutionary changes to the application code that are incompatible with legacy data. ControVol warns developers already at development time, and even suggests automatic fixes for lazily migrating legacy data when it is loaded into the application. Thus, ControVol ensures that the structure of legacy data can catch up with the structure expected by the latest software release.}, language = {en} } @inproceedings{CerqueusCunhadeAlmeidaScherzinger, author = {Cerqueus, Thomas and Cunha de Almeida, Eduardo and Scherzinger, Stefanie}, title = {Safely Managing Data Variety in Big Data Software Development}, series = {2015 IEEE/ACM 1st International Workshop on Big Data Software Engineering, 23-23 May 2015, Florence, Italy}, booktitle = {2015 IEEE/ACM 1st International Workshop on Big Data Software Engineering, 23-23 May 2015, Florence, Italy}, publisher = {IEEE}, doi = {10.1109/BIGDSE.2015.9}, pages = {4 -- 10}, abstract = {We consider the task of building Big Data software systems, offered as software-as-a-service. These applications are commonly backed by NoSQL data stores that address the proverbial Vs of Big Data processing: NoSQL data stores can handle large volumes of data and many systems do not enforce a global schema, to account for structural variety in data. Thus, software engineers can design the data model on the go, a flexibility that is particularly crucial in agile software development. However, NoSQL data stores commonly do not yet account for the veracity of changes when it comes to changes in the structure of persisted data. Yet this is an inevitable consequence of agile software development. In most NoSQL-based application stacks, schema evolution is completely handled within the application code, usually involving object mapper libraries. Yet simple code refactorings, such as renaming a class attribute at the source code level, can cause data loss or runtime errors once the application has been deployed to production. We address this pain point by contributing type checking rules that we have implemented within an IDE plug in. Our plug in ControVol statically type checks the object mapper class declarations against the code release history. ControVol is thus capable of detecting common yet risky cases of mismatched data and schema, and can even suggest automatic fixes.}, language = {en} } @inproceedings{ScherzingerCerqueusCunhadeAlmeida, author = {Scherzinger, Stefanie and Cerqueus, Thomas and Cunha de Almeida, Eduardo}, title = {ControVol: A framework for controlled schema evolution in NoSQL application development}, series = {2015 IEEE 31st International Conference on Data Engineering, 13-17 April 2015, Seoul, Korea (South)}, booktitle = {2015 IEEE 31st International Conference on Data Engineering, 13-17 April 2015, Seoul, Korea (South)}, publisher = {IEEE}, isbn = {978-1-4799-7964-6}, doi = {10.1109/ICDE.2015.7113402}, pages = {1464 -- 1467}, abstract = {Building scalable web applications on top of NoSQL data stores is becoming common practice. Many of these data stores can easily be accessed programmatically, and do not enforce a schema. Software engineers can design the data model on the go, a flexibility that is crucial in agile software development. The typical tasks of database schema management are now handled within the application code, usually involving object mapper libraries. However, today's Integrated Development Environments (IDEs) lack the proper tool support when it comes to managing the combined evolution of the application code and of the schema. Yet simple refactorings such as renaming an attribute at the source code level can cause irretrievable data loss or runtime errors once the application is serving in production. In this demo, we present ControVol, a framework for controlled schema evolution in application development against NoSQL data stores. ControVol is integrated into the IDE and statically type checks object mapper class declarations against the schema evolution history, as recorded by the code repository. ControVol is capable of warning of common yet risky cases of mismatched data and schema. ControVol is further able to suggest quick fixes by which developers can have these issues automatically resolved.}, language = {en} }