M2K - An Approach for an Object-oriented Model of C Applications

Ignacio Cassol, Gabriela Arévalo

Abstract

When analyzing legacy code, generating a high-level model of an application helps the developers understand how the application was structured and how the dependencies relate the different software entities. Based on useful properties that the object-oriented paradigm (and their supporting analysis tools) provide, such as UML models, we propose M2K as a methodology (supported by our own tool) that generates a high-level model from legacy C code and proposes differents refactorings. To understand how procedural-based applications were implemented is not a new problem in software reengineering, however our contribution is based on building automatically an object-oriented model and help the experts to define manually different refactorings that let the developer to improve the application. Besides a methodology and the supporting tool, we provide a summary of thirteen case studies based on small-scaled real projects implemented in C and we showed how the results validate our proposal.

References

  1. Astels, D. (2002). Refactoring with UML. In Proc. Int'l Conf. XP and Flexible Processes in Software Engineering, pages 67-70. Alghero, Sardinia, Italy.
  2. Boger, M., Sturm, T., and Fragemann, P. (2003). Refactoring browser for uml. pages 366-377.
  3. Fanta, R. and Rajlich, V. (1999). Restructuring legacy C code into C++. In Proc. Int'l Conf. Software Maintenance (ICSM), pages 77-85. IEEE Computer Society Press.
  4. Fowler, M., Beck, K., Brant, J., Opdyke, W., and Roberts, D. (1999). Refactoring: Improving the Design of Existing Code. Addison Wesley.
  5. G. Canfora, A. and M.Munro (1996). An improved algorithm for identifying objects in code. Software Practice and Experience, 26(1):25-48.
  6. G. Sunyé, Pollet, D., LeTraon, Y., and J.-M. Jézéquel (2001). Refactoring UML models. In Proc. UML, volume 2185 of LNCS, pages 134-138. Springer-Verlag.
  7. Garrido, A. and Johnson, R. E. (2003). Refactoring c with conditional compilation. In ASE, pages 323-326. IEEE Computer Society.
  8. Nierstrasz, O., Ducasse, S., and G?irba, T. (2005). The story of moose: An agile reengineering environment. SIGSOFT Softw. Eng. Notes, 30(5):1-10.
  9. Sahraoui, H. A., Melo, W. L., Lounis, H., and Dumont, F. (1997). Applying concept formation methods to object identification in procedural code. In ASE, pages 210-218.
  10. Siff, M. and Reps, T. (1999). Identifying modules via concept analysis. IEEE TSE, 25(6):749-768.
  11. van Gurp, J. and Bosch, J. (2002). Design erosion: Problems and causes. J. Syst. Softw., 61(2):105-119.
  12. Yadav, R., Patel, R. P., and Kothari, A. (2014). Reverse engineering tool based on unified mapping method (retum): Class diagram visualizations. Journal of Computer and Communications, (12):39-49.
  13. Yeh, A. S., Harris, D. R., and Reubenstein, H. B. (1995). Recovering abstract data types and object instances from a conventional procedural language. In Proc. of WCRE), page 227. IEEE Computer Society.
  14. Yourdon, E. and Constantine, L. L. (1979). Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design. Prentice-Hall, Inc.
  15. Zou, Y. and Kontogiannis, K. (2001). A framework for migrating procedural code to object-oriented platforms. In Proc. of IEEE APSEC, pages 408-418, Los Alamitos, CA, USA. IEEE Press.
Download


Paper Citation


in Harvard Style

Cassol I. and Arévalo G. (2015). M2K - An Approach for an Object-oriented Model of C Applications . In Proceedings of the 10th International Conference on Evaluation of Novel Approaches to Software Engineering - Volume 1: ENASE, ISBN 978-989-758-100-7, pages 250-256. DOI: 10.5220/0005457302500256


in Bibtex Style

@conference{enase15,
author={Ignacio Cassol and Gabriela Arévalo},
title={M2K - An Approach for an Object-oriented Model of C Applications},
booktitle={Proceedings of the 10th International Conference on Evaluation of Novel Approaches to Software Engineering - Volume 1: ENASE,},
year={2015},
pages={250-256},
publisher={SciTePress},
organization={INSTICC},
doi={10.5220/0005457302500256},
isbn={978-989-758-100-7},
}


in EndNote Style

TY - CONF
JO - Proceedings of the 10th International Conference on Evaluation of Novel Approaches to Software Engineering - Volume 1: ENASE,
TI - M2K - An Approach for an Object-oriented Model of C Applications
SN - 978-989-758-100-7
AU - Cassol I.
AU - Arévalo G.
PY - 2015
SP - 250
EP - 256
DO - 10.5220/0005457302500256