Abstract
Code generators are a crucial part of the model-driven development (MDD) approach. They systematically transform abstract models to concrete executable source code. Typically, a generator developer determines the code parts that should be generated and separates them from handwritten code. Since performed manually, this task often is time-consuming, labor-intensive, difficult to maintain and may produce more code than necessary. This paper presents an iterative approach for identifying candidates for generated code by analyzing the dependencies of categorized code parts. Dependency rules are automatically derived from a predefined software category graph and serve as basis for the categorization process. Generator developers can use this approach to systematically identify code generation candidates. The ideas and concepts of this paper were introduced at the MODELSWARD conference [1] and are extended in this contribution.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
The example is taken from [14] and reduced to only the aspects required to explain our approach.
- 2.
This game (in German called Schafkopf or Schaffkopf) is a popular and complex Bavarian card game with thirty-two cards where four players play in dynamic alliances. The English translation Sheepshead is actually wrong as it comes from ancient times where the game was played on top (kopf) of a barrel (schaff). It has nothing to do with sheep.
- 3.
Note that Swing classes are global (belonging to the JDK) and well-tested; hence meet the criteria of the category 0. But –as usually the user-interface should be exchangeable– Swing classes are not necessarily global in a specific software system.
- 4.
In [14] also the Representation (R) category is presented. This category contains only software for transforming A category software to T and vice versa. It is a kind of cleaner version of AT. To demonstrate our approach, the R category can be neglected.
- 5.
Note that a D-class that depends on a T-class is rather a DT-class.
References
Mir Seyed Nazari, P., Rumpe, B.: Using software categories for the development of generative software. In: Hammoudi, S., Pires, L.F., Desfray, P., Filipe, J.F. (eds.) Proceedings of the 3rd International Conference on Model-Driven Engineering and Software Development, pp. 498–503. SciTePress, Angers (2015)
Kleppe, A.G., Warmer, J., Bast, W.: MDA Explained: the Model Driven Architecture: Practice and Promise. Addison-Wesley Longman Publishing Co., Inc, Boston (2003)
Rumpe, B.: Modellierung mit UML, 2te edn. Springer, Berlin (2011)
France, R., Rumpe, B.: Model-driven development of complex software: a research roadmap. In: Future of Software Engineering 2007 at ICSE, pp. 37–54 (2007)
Kelly, S., Tolvanen, J.P.: Domain-Specific Modeling: Enabling Full Code Generation. Wiley, Hoboken (2008)
Schindler, M.: Eine werkzeuginfrastruktur zur agilen entwicklung mit der UML/P. In: Aachener Informatik Berichte, Software Engineering. Shaker Verlag (2012)
Krahn, H., Rumpe, B., Völkel, S.: Roles in software development using domain specific modelling languages. In: Gray, J., Tolvanen, J.P., Sprinkle, J., (eds.) Proceedings of the 6th OOPSLA Workshop on Domain-Specific Modeling 2006 (DSM 2006), Volume TR-37 of Technical report., Portland, Oregon, USA, pp. 150–158. Jyväskylä University, Finland (2006)
Stahl, T., Voelter, M., Czarnecki, K.: Model-Driven Software Development: Technology, Engineering, Management. Wiley, Chichester (2006)
Fowler, M.: Domain Specific Languages. Addison-Wesley Professional, Boston (2010)
Rumpe, B.: Agile Modellierung mit UML. Xpert Press, 2nd edn. Springer, Berlin (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: Hammoudi, S., Pires, L.F., Desfray, P., Filipe, J.F. (eds.) Proceedings of the 3rd International Conference on Model-Driven Engineering and Software Development, pp. 74–85. SciTePress, Angers (2015)
Clements, P., Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Reading (2002)
Pohl, K., Böckle, G., van der Linden, F.J.: Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag New York, Inc., Secaucus (2005)
Siedersleben, J.: Moderne Software-Architektur: Umsichtig Planen, Robust Bauen mit Quasar. Dpunkt.Verlag GmbH, Heidelberg (2004)
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), Companion Volume, Leipzig, Germany, 10–18 May 2008 (2008)
Krahn, H., Rumpe, B., Völkel, S.: Monticore: modular development of textual domain specific languages. In: Paige, R., Meyer, B. (eds.) TOOLS EUROPE 2008. LNBIP 11, vol. 11, pp. 297–315. Springer, Heidelberg (2008)
Krahn, H., Rumpe, B., Völkel, S.: MontiCore: a framework for compositional development of domain specific languages. Int. J. Softw. Tools Technol. Transf. (STTT) 12, 353–372 (2010)
Völkel, S.: Kompositionale entwicklung domänenspezifischer sprachen. In: Number 9 in Aachener Informatik-Berichte, Software Engineering. Shaker Verlag (2011)
Look, M., Navarro Pérez, A., Ringert, J.O., Rumpe, B., Wortmann, A.: Black-box integration of heterogeneous modeling languages for cyber-physical systems. In: Combemale, B., De Antoni, J., France, R.B. (eds.) Proceedings of the 1st Workshop on the Globalization of Modeling Languages (GEMOC). CEUR Workshop Proceedings, vol. 1102, Miami, Florida, USA (2013)
Haber, A., Look, M., Mir Seyed Nazari, P., Navarro Perez, A., Rumpe, B., Völkel, S., Wortmann, A.: Integration of heterogeneous modeling languages via extensible and composable language components. In: Hammoudi, S., Pires, L.F., Desfray, P., Filipe, J.F. (eds.) Proceedings of the 3rd International Conference on Model-Driven Engineering and Software Development, pp. 19–31. SciTePress, Angers (2015)
Murphy, G.C., Notkin, D., Sullivan, K.J.: Software reflexion models: bridging the gap between design and implementation. IEEE Trans. Softw. Eng. 27, 364–380 (2001)
Terra, R., Valente, M.T.: A dependency constraint language to manage object-oriented software architectures. Softw. Pract. Experience 39, 1073–1094 (2009)
Passos, L., Terra, R., Valente, M., Diniz, R., Mendon, N.: Static architecture-conformance checking: an illustrative overview. IEEE Softw. 27, 82–89 (2010)
Bellon, S., Koschke, R., Antoniol, G., Krinke, J., Merlo, E.: Comparison and evaluation of clone detection tools. IEEE Trans. Softw. Eng. 33, 577–591 (2007)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, Reading (1995)
Gil, J.Y., Maman, I.: Micro patterns in java code. In: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications. OOPSLA 2005, pp. 97–116. ACM, New York (2005)
Clarke, P., Malloy, B., Gibson, P.: Using a taxonomy tool to identify changes in OO Software. In: Proceedings of Seventh European Conference on Software Maintenance and Reengineering, 2003, pp. 213–222 (2003)
Clarke, P.J., Babich, D., King, T.M., Kibria, B.G.: Analyzing clusters of class characteristics in OO applications. J. Syst. Soft. 81, 2269–2286 (2008)
Zaidman, A., Demeyer, S.: Automatic identification of key classes in a software system using webmining techniques. J. Softw. Maintenance Evol. Res. Pract. 20, 387–417 (2008)
Dragan, N., Collard, M.L., Maletic, J.I.: Reverse engineering method stereotypes. In: Proceedings of the 22nd IEEE International Conference on Software Maintenance. ICSM 2006, pp. 24–34. IEEE Computer Society, Washington (2006)
Dragan, N., Collard, M.L., Maletic, J.I.: Using method stereotype distribution as a signature descriptor for software systems. In: 2009 IEEE International Conference on Software Maintenance, ICSM 2009, pp. 567–570 (2009)
Dragan, N., Collard, M.L., Maletic, J.I.: Automatic identification of class stereotypes. In: Proceedings of the 2010 IEEE International Conference on Software Maintenance, ICSM 2010, pp. 1–10. IEEE Computer Society, Washington (2010)
Lanza, M., Ducasse, S.: A categorization of classes based on the visualization of their internal structure: the class blueprint. In: Proceedings of the 16th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2001, pp. 300–311. ACM, New York (2001)
Robbes, R., Ducasse, S., Lanza, M.: Microprints: a pixelbased semantically rich visualization of methods. In: In Proceedings of ESUG 2005, 13th International Smalltalk Conference, pp. 131–157 (2005)
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
Mir Seyed Nazari, P., Rumpe, B. (2015). Identifying Code Generation Candidates Using Software Categories. 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_21
Download citation
DOI: https://doi.org/10.1007/978-3-319-27869-8_21
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)