Abstract
In many development projects models are core artifacts used to generate concrete implementations from them. However, for many systems it is impossible or not useful to generate the complete software system from models alone. Hence, developers need mechanisms for integrating generated and handwritten code. Applying such mechanisms without considering their effects can cause issues in projects, where model and code artifacts are essential. Thus, a sound approach for the integration of both forms of code is needed.
In this paper, we provide an overview of mechanisms for integrating handwritten and generated object-oriented code. To compare these mechanisms, we define and apply a set of criteria. The results are intended to help model-driven development (MDD) tool developers in choosing an appropriate integration mechanism. In this extended version, we additionally discuss essential integration aspects including the protection of generated code and elaborate on how to use action languages to extend generated code.
K. Hölldobler is supported by the DFG GK/1298 AlgoSyn.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
France, R., Rumpe, B.: Model-driven development of complex software: a research roadmap. In: Future of Software Engineering, ICSE 2007, pp. 37–54. IEEE Computer Society (2007)
Kleppe, A.G., Warmer, J., Bast, W.: MDA Explained: The Model Driven Architecture: Practice and Promise. Addison-Wesley Longman Publishing Co., Inc., Boston (2003)
Wile, D.S.: Lessons learned from real DSL experiments. In: Proceedings of the 36th Annual Hawaii International Conference on System Sciences, HICSS 2003, pp. 265–290. IEEE Computer Society (2003)
Rumpe, B.: Modellierung mit UML, 2nd edn. Springer, Heidelberg (2011)
Rumpe, B.: Agile Modellierung mit UML: Codegenerierung, Testfälle, Refactoring. Springer, Heidelberg (2012)
Rumpe, B., Schindler, M., Völkel, S., Weisemöller, I.: Generative software development. In: Proceedings of the 32nd International Conference on Software Engineering, ICSE 2010, pp. 473–474. ACM (2010)
Schindler, M.: Eine Werkzeuginfrastruktur zur agilen Entwicklung mit der UML/P. Ph.D. thesis, RWTH Aachen University (2012)
Grönniger, H., Hartmann, J., Krahn, H., Kriebel, S., Rothhardt, L., Rumpe, B.: Modelling automotive function nets with views for features, variants, and modes. In: Proceedings of Embedded Real Time Software and Systems, ERTS 2008 (2008)
Navarro Pérez, A., Rumpe, B.: Modeling cloud architectures as interactive systems. In: 2nd International Workshop on Model-Driven Engineering for High Performance and CLoud computing, MDHPCL 2013, Miami, Florida, CEUR Workshop Proceedings, pp. 15–24 (2013)
Ringert, J.O., Rumpe, B., Wortmann, A.: From software architecture structure and behavior modeling to implementations of cyber-physical systems. In: Software Engineering 2013 Workshopband, GI, pp. 155–170. Köllen Druck+Verlag GmbH, Bonn (2013)
Kurpick, T., Pinkernell, C., Look, M., Rumpe, B.: Modeling cyber-physical systems: model-driven specification of energy efficient buildings. In: Proceedings of the Modelling of the Physical World Workshop, MOTPW 2012, pp. 2:1–2:6. ACM (2012)
Greifenberg, T., Hölldobler, K., Kolassa, C., Look, M., Mir Seyed Nazari, P., Müller, K., Navarro Perez, A., Plotnikov, D., Reiss, D., Roth, A., Rumpe, B., Schindler, M., Wortmann, A.: A comparison of mechanisms for integrating handwritten and generated code for object-oriented programming languages. In: Proceedings of the 3rd International Conference on Model-Driven Engineering and Software Development, Angers, France, pp. 74–85. Scitepress (2015)
Stahl, T., Völter, M.: Model-Driven Software Development: Technology, Engineering, Management. Wiley, UK (2006)
Pietrek, G., Trompeter, J., Niehues, B., Kamann, T., Holzer, B., Kloss, M., Thoms, K., Beltran, J.C.F., Mork, S.: Modellgetriebene Softwareentwicklung. MDA und MDSD in der Praxis. Entwickler.Press (2007)
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, Boston (1995)
Eliens, A.: Principles of Object-Oriented Software Development. Addison-Wesley Longman Publishing Co., Inc., Boston (1994)
Vlissides, J.: Pattern Hatching: Design Patterns Applied. Addison-Wesley, UK (1998)
Fowler, M.: Domain Specific Languages. Addison-Wesley, Boston (2010)
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: Akşit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)
Kellens, A., Mens, K., Brichau, J., Gybels, K.: Managing the evolution of aspect-oriented software with model-based pointcuts. In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 501–525. Springer, Heidelberg (2006)
Grönniger, H., Krahn, H., Rumpe, B., Schindler, M., Völkel, S.: MontiCore: a framework for the development of textual domain specific languages. In: 30th International Conference on Software Engineering, ICSE 2008, pp. 925–926. ACM (2008)
Krahn, H., Rumpe, B., Völkel, S.: MontiCore: a framework for compositional development of domain specific languages. Int. J. Softw. Tools Technol. Transf. 12, 353–372 (2010)
XPand website, May 2014. http://www.eclipse.org/modeling/m2t/?project=xpand#xpand. Accessed on 13 May 2015
Acceleo website, May 2014. http://www.eclipse.org/acceleo/. Accessed on 13 May 2015
Rose, L.M., Paige, R.F., Kolovos, D.S., Polack, F.A.C.: The epsilon generation language. In: Schieferdecker, I., Hartman, A. (eds.) ECMDA-FA 2008. LNCS, vol. 5095, pp. 1–16. Springer, Heidelberg (2008)
JET website, May 2014. http://www.eclipse.org/modeling/m2t/?project=jet#jet. Accessed on 13 May 2015
Oldevik, J., Neple, T., Grønmo, R., Aagedal, J.Ø., Berre, A.-J.: Toward standardised model to text transformations. In: Hartman, A., Kreische, D. (eds.) ECMDA-FA 2005. LNCS, vol. 3748, pp. 239–253. Springer, Heidelberg (2005)
Budinsky, F., Steinberg, D., Merks, E., Ellersick, R., Grose, T.J.: Eclipse Modeling Framework, 2nd edn. Addison-Wesley, Boston (2008)
Gronback, R.C.: Eclipse Modeling Project: A Domain-Specific Language (DSL) Toolkit. Addison-Wesley, Boston (2009)
Petrasch, R., Meimberg, O.: Model-Driven Architecture: Eine praxisorientierte Einführung in die MDA. Dpunkt Verlag, Heidelberg (2006)
Völter, M.: A Catalog of Patterns for Program Generation, Version 1.6, April 2003. http://www.voelter.de/data/pub/ProgramGeneration.pdf. Accessed on 13 May 2015
Völter, M., Bettin, J.: Patterns for Model-Driven Software-Development, Version 1.4, May 2004. http://www.voelter.de/data/pub/MDDPatterns.pdf. Accessed on 13 May 2015
Groher, I., Voelter, M.: Aspect-oriented model-driven software product line engineering. In: Katz, S., Ossher, H., France, R., Jézéquel, J.-M. (eds.) Transactions on Aspect-Oriented Software Development VI. LNCS, vol. 5560, pp. 111–152. Springer, Heidelberg (2009)
Völter, M., Groher, I.: Handling variability in model transformations and generators. In: Proceedings of the 7th OOPSLA Workshop on Domain-Specific Modeling, DSM 2007. ACM (2007)
Kang, K.C., Sugumaran, V., Park, S.: Applied Software Product Line Engineering. Auerbach Publications, Boston (2009)
Dollard, K.: Code Generation in Microsoft .NET. Apress, Berkley (2004)
Greenfield, J., Short, K., Cook, S., Kent, S.: Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools. Wiley, New York (2004)
Tolvanen, J.P., Kelly, S.: MetaEdit+: defining and using integrated domain-specific modeling languages. In: Proceeding of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications, OOPSLA 2009, pp. 819–820. ACM (2009)
Kelly, S., Tolvanen, J.P.: Domain-Specific Modeling: Enabling Full Code Generation. Wiley, New York (2008)
Frankel, D.S.: Model Driven Architecture: Applying MDA to Enterprise Computing. Wiley, New York (2003)
LLBLGen Pro website, May 2014. http://www.llblgen.com/. Accessed on 13 May 2015
Warmer, J., Kleppe, A.: Building a flexible software factory using partial domain specific models. In: Proceedings of the 6th OOPSLA Workshop on Domain-Specific Modeling, DSM 2006, pp. 15–22. ACM (2006)
Brückmann, T., Gruhn, V.: An architectural blueprint for model driven development and maintenance of business logic for information systems. In: Babar, M.A., Gorton, I. (eds.) ECSA 2010. LNCS, vol. 6285, pp. 53–69. Springer, Heidelberg (2010)
Object Management Group website: Concrete Syntax for a UML Action Language: Action Language for Foundational UML (ALF) Version 1.0.1 (2013–09-01), May 2014. http://www.omg.org/spec/ALF/1.0.1/PDF/
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Greifenberg, T. et al. (2015). Integration of Handwritten and Generated Object-Oriented Code. In: Desfray, P., Filipe, J., Hammoudi, S., Pires, L. (eds) Model-Driven Engineering and Software Development. MODELSWARD 2015. Communications in Computer and Information Science, vol 580. Springer, Cham. https://doi.org/10.1007/978-3-319-27869-8_7
Download citation
DOI: https://doi.org/10.1007/978-3-319-27869-8_7
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-27868-1
Online ISBN: 978-3-319-27869-8
eBook Packages: Computer ScienceComputer Science (R0)