Abstract
Reverse engineering creates primary models of software systems, representing their program elements and the relationships between them. According to the programming language or paradigm, these program elements are functions, variables, classes, methods, etc. The primary models are then used for different analysis purposes such as: impact analysis, modularization analysis, refactoring decisions, architectural reconstruction. Particularities of the programming language or paradigm do not affect the essence of these higher-level analysis tasks. Thus, having a unitary way of modeling program elements and their relationships is essential for the reuse and integration of higher-level analysis tools.
This work proposes a meta-model which provides a unitary way of describing static relationships between program elements. It defines a set of abstract concepts that can be mapped to program elements of both the object-oriented as well as the procedural programming paradigms. The proposed meta-model is validated by the implementation of model extraction tools from programs written in Java, C# (CIL) and ANSI C. The utility of the proposed meta-model has been shown by a number of different analysis applications that use it successfully.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Chikofsky, E., Cross, J.H.I.: Reverse engineering and design recovery: a taxonomy. IEEE Software 7(1), 13–17 (1990)
Canfora, G., Di Penta, M.: New frontiers of reverse engineering. In: Future of Software Engineering, FOSE 2007, pp. 326–341 (May 2007)
Sora, I., Glodean, G., Gligor, M.: Software architecture reconstruction: An approach based on combining graph clustering and partitioning. In: 2010 International Joint Conference on Computational Cybernetics and Technical Informatics (ICCC-CONTI), pp. 259–264 ( May 2010)
Kraft, N.A., Malloy, B.A., Power, J.F.: An infrastructure to support interoperability in reverse engineering. Information and Software Technology 49(3), 292–307 (2007); 12th Working Conference on Reverse Engineering
Sarkar, S., Maskeri, G., Ramachandran, S.: Discovery of architectural layers and measurement of layering violations in source code. J. Syst. Softw. 82, 1891–1905 (2009)
Sangal, N., Jordan, E., Sinha, V., Jackson, D.: Using dependency models to manage complex software architecture. In: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, pp. 167–176. ACM, New York (2005)
Mitchell, B.S., Mancoridis, S.: On the automatic modularization of software systems using the bunch tool. IEEE Transactions on Software Engineering 32, 193–208 (2006)
OMG: The metaobject facility specification (2011), http://www.omg.org/mof/
Maletic, J., Collard, M., Marcus, A.: Source code files as structured documents. In: Proceedings of 10th International Workshop on Program Comprehension, pp. 289–292 (2002)
Wong, S., Cai, Y., Kim, M., Dalton, M.: Detecting software modularity violations. In: Proceeding of the 33rd International Conference on Software Engineering, ICSE 2011, pp. 411–420. ACM, New York (2011)
Falleri, J.-R., Denier, S., Laval, J., Vismara, P., Ducasse, S.: Efficient retrieval and ranking of undesired package cycles in large software systems. In: Bishop, J., Vallecillo, A. (eds.) TOOLS 2011. LNCS, vol. 6705, pp. 260–275. Springer, Heidelberg (2011)
Wong, S., Cai, Y.: Predicting change impact from logical models. In: IEEE International Conference on Software Maintenance, pp. 467–470 (2009)
Winter, A.J., Kullbach, B., Riediger, V.: An overview of the GXL graph exchange language. In: Diehl, S. (ed.) Dagstuhl Seminar 2001. LNCS, vol. 2269, pp. 324–532. Springer, Heidelberg (2002)
Ferenc, R., Beszedes, A., Tarkiainen, M., Gyimothy, T.: Columbus - reverse engineering tool and schema for C++. In: Proceedings of International Conference on Software Maintenance, pp. 172–181 (2002)
OMG: The Unified Modelling Language (2011), http://www.uml.org/
Tichelaar, S., Ducasse, S., Demeyer, S., Nierstrasz, O.: A meta-model for language-independent refactoring. In: Proceedings of International Symposium on Principles of Software Evolution, pp. 154–164 (2000)
Lethbridge, T.C., Tichelaar, S., Ploedereder, E.: The Dagstuhl Middle Metamodel: A Schema For Reverse Engineering. Electronic Notes in Theoretical Computer Science 94, 7–18 (2004); Proceedings of the International Workshop on Meta-Models and Schemas for Reverse Engineering (ateM 2003)
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
Şora, I. (2013). Unified Modeling of Static Relationships between Program Elements. In: Maciaszek, L.A., Filipe, J. (eds) Evaluation of Novel Approaches to Software Engineering. ENASE 2012. Communications in Computer and Information Science, vol 410. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-45422-6_7
Download citation
DOI: https://doi.org/10.1007/978-3-642-45422-6_7
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-45421-9
Online ISBN: 978-3-642-45422-6
eBook Packages: Computer ScienceComputer Science (R0)