Abstract
Software language descriptions comprise several heterogeneous interdependent artifacts that cover different aspects of languages (abstract syntax, notation and semantics). The dependencies between those artifacts demand the simultaneous adaptation of all artifacts when the language is changed. Changes to a language that do not change semantics are referred to as refactorings. This class of changes can be handled automatically by applying predefined types of refactorings. Refactorings are therefore considered a valuable tool for evolving a language.
We present a model transformation based approach for the refactoring of software language descriptions. We use asymmetric bidirectional model transformations to synchronize the various artifacts of language descriptions with a refactoring model that contains all elements that are changed in a particular refactoring. This allows for automatic, type-safe refactorings that also includes the language tooling. We apply this approach to an Ecore, Xtext, Xtend based language description and describe the implementation of a non-trivial refactoring.
Access provided by Autonomous University of Puebla. Download to read the full chapter text
Chapter PDF
Similar content being viewed by others
References
Favre, J.-M.: Languages evolve too! changing the software time scale. In: Proceedings of the Eighth International Workshop on Principles of Software Evolution (IWPSE 2005), pp. 33–44. IEEE Computer Society (2005)
Fowler, M., Beck, K.: Refactoring – improving the design of existing code. Addison-Wesley Professional (1999)
Diskin, Z., Xiong, Y., Czarnecki, K.: From State- to Delta-Based Bidirectional Model Transformations – the Asymmetric Case. Journal of Object Technology 10, 6:1–6:25 (2011), http://www.jot.fm/issues/issue_2011_01/article6.pdf
Wachsmuth, G.: Metamodel adaptation and model co-adaptation. In: Ernst, E. (ed.) ECOOP 2007. LNCS, vol. 4609, pp. 600–624. Springer, Heidelberg (2007)
Herrmannsdoerfer, M., Ratiu, D., Wachsmuth, G.: Language evolution in practice –The history of GMF. In: van den Brand, M., Gašević, D., Gray, J. (eds.) SLE 2009. LNCS, vol. 5969, pp. 3–22. Springer, Heidelberg (2010)
Strein, D., Kratz, H., Lowe, W.: Cross-language program analysis and refactoring. In: Sixth IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2006), pp. 207–216. IEEE Computer Society (2006)
Favre, J.: Meta-model and model co-evolution within the 3D software space. In: Proceedings of the Interantaional Workshop on Evolution of Large-scale Industrial Software Applications (ELISA), pp. 98–109 (2003), http://plg.math.uwaterloo.ca/~migod/papers/2003/ELISAproceedings.pdf
Pizka, M., Jürgens, E.: Tool-supported multi-level language evolution. In: Software and Services Variability Management Workshop, vol. 3, pp. 48–67. Helsinki University of Technology (2007), http://citeseerx.ist.psu.edu/viewdoc/doi=10.1.1.190.9220&rep=rep1&type=pdf
Jürgens, E., Pizka, M.: The Language Evolver Lever-Tool Demonstration. Electronic Notes in Theoretical Computer Science 164(2), 55–60 (2006), http://dx.doi.org/10.1016/j.entcs.2006.10.004
Wider, A., Schmidt, M., Kühnlenz, F., Fischer, J.: A Model-Driven Workbench for Simulation-Based Development of Optical Nanostructures. In: Proceedings of the 2nd International Conference on Computer Modelling and Simulation (CSSim 2011) (2011) IEEE CD with ISBN 978-80-214-4320-4
Barth, M., Kouba, J., Stingl, J., Löchel, B., Benson, O.: Modification of visible spontaneous emission with silicon nitride photonic crystal nanocavities. Optics Express 15(25), 17231–17240 (2007), http://dx.doi.org/10.1364/OE.15.017231
Bäumer, D., Gamma, E., Kiezun, A.: Integrating Refactoring Support into a Java Development Tool. In: OOPSLA 2001 Companion. ACM (2001), http://people.csail.mit.edu/akiezun/companion.pdf
Foster, J.: Bidirectional Programming Languages. PhD thesis, University of Pennsylvania (2009), http://repository.upenn.edu/cgi/viewcontent.cgi?article=1967&context=cis_reports
Wider, A.: Towards Combinators for Bidirectional Model Transformations in Scala. In: Sloane, A., Aßmann, U. (eds.) SLE 2011. LNCS, vol. 6940, pp. 367–377. Springer, Heidelberg (2012)
Foster, J.N., Greenwald, M.B., Moore, J.T., Pierce, B.C., Schmitt, A.: Combinators for Bi-Directional Tree Transformations: A Linguistic Approach to the View Update Problem. In: Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2005), pp. 233–246. ACM (2005)
George, L., Wider, A., Scheidgen, M.: Type-Safe Model Transformation Languages as Internal DSLs in Scala. In: Hu, Z., de Lara, J. (eds.) ICMT 2012. LNCS, vol. 7307, pp. 160–175. Springer, Heidelberg (2012)
Jouault, F., Allilaire, F., Bézivin, J., Kurtev, I.: ATL – A model transformation tool. Science of Computer Programming 72(1-2), 31–39 (2008)
Stevens, P.: Bidirectional model transformations in QVT – Semantic issues and open questions. Software and Systems Modeling 9(1), 7–20 (2010)
Sasano, I., Hu, Z., Hidaka, S., Inaba, K., Kato, H., Nakano, K.: Toward Bidirectionalization of ATL with GRoundTram. In: Cabot, J., Visser, E. (eds.) ICMT 2011. LNCS, vol. 6707, pp. 138–151. Springer, Heidelberg (2011)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Schmidt, M., Wider, A., Scheidgen, M., Fischer, J., von Klinski, S. (2013). Refactorings in Language Development with Asymmetric Bidirectional Model Transformations. In: Khendek, F., Toeroe, M., Gherbi, A., Reed, R. (eds) SDL 2013: Model-Driven Dependability Engineering. SDL 2013. Lecture Notes in Computer Science, vol 7916. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-38911-5_13
Download citation
DOI: https://doi.org/10.1007/978-3-642-38911-5_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-38910-8
Online ISBN: 978-3-642-38911-5
eBook Packages: Computer ScienceComputer Science (R0)