Software & Systems Modeling

, Volume 13, Issue 4, pp 1239–1268 | Cite as

Reengineering component-based software systems with Archimetrix

  • Markus von DettenEmail author
  • Marie Christin Platenius
  • Steffen Becker
Special Section Paper


Many software development, planning, or analysis tasks require an up-to-date software architecture documentation. However, this documentation is often outdated, unavailable, or at least not available as a formal model which analysis tools could use. Reverse engineering methods try to fill this gap. However, as they process the system’s source code, they are easily misled by design deficiencies (e.g., violations of component encapsulation) which leaked into the code during the system’s evolution. Despite the high impact of design deficiencies on the quality of the resulting software architecture models, none of the surveyed related works is able to cope with them during the reverse engineering process. Therefore, we have developed the Archimetrix approach which semiautomatically recovers the system’s concrete architecture in a formal model while simultaneously detecting and removing design deficiencies. We have validated Archimetrix on a case study system and two implementation variants of the CoCoME benchmark system. Results show that the removal of relevant design deficiencies leads to an architecture model which more closely matches the system’s conceptual architecture.


Reengineering Reverse engineering  Software architecture Component-based software systems Architecture reconstruction Design deficiencies  Deficiency detection  Code metrics CoCoME 



We thank Oleg Travkin for his contributions in the development of Archimetrix. We would also like to thank Christian Heinzemann, Dietrich Travkin, and the anonymous reviewers for their valuable comments. This work was partially supported by the German Research Foundation (DFG) within the Collaborative Research Centre “On-The-Fly Computing” (CRC 901).


  1. 1.
  2. 2.
    Aho, A.V., Lam, M.S., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques, and Tools, 2nd edn. Addison-Wesley, Boston (2006)Google Scholar
  3. 3.
    Alur, D., Crupi, J., Malks, D.: Core J2EE Patterns: Best Practices and Design Strategies. Prentice Hall/Sun Microsystems Press, Upper Saddle River (2001)Google Scholar
  4. 4.
    Arcelli, Fontana F., Zanoni, M.: A tool for design pattern detection and software architecture reconstruction. Inf. Sci. 181(7), 1306–1324 (2011)CrossRefGoogle Scholar
  5. 5.
    Arendt, T., Kranz, S., Mantz, F., Regnat, N., Taentzer, G.: Towards syntactical model quality assurance in industrial software development: process definition and tool support. In: Proceedings of the Software Engineering. Springer, Berlin (2011) (to appear)Google Scholar
  6. 6.
    Basit, H.A., Jarzabek, S.: Detecting higher-level similarity patterns in programs. SIGSOFT Softw. Eng. Notes 30(5), 156–165 (2005)CrossRefGoogle Scholar
  7. 7.
    Bauer, M., Trifu, M.: Architecture-aware adaptive clustering of OO systems. In: Proceedings of the 8th European Conference on Software Maintenance and Reengineering, pp. 3–14. ACM (March 2004)Google Scholar
  8. 8.
    Becker, S., Hauck, M., Trifu, M., Krogmann, K., Kofron, J.: Reverse engineering component models for quality predictions. In: Proceedings of the 14th European Conference on Software Maintenance and Reengineering on IEEE Computer Society, pp. 199–202 (2010)Google Scholar
  9. 9.
    Bianchi, A., Caivano, D., Marengo, V., Visaggio, G.: Iterative reengineering of legacy systems. Trans. Softw. Eng. 29(3), 225–241 (2003)CrossRefGoogle Scholar
  10. 10.
    Binkley, D., Gold, N., Harman, M., Li, Z., Mahdavi, K., Wegener, J.: Dependence anti patterns. In: Proceedings of the 4th International ERCIM Workshop on Software Evolution and Evolvability on IEEE, pp. 25–34 (2008)Google Scholar
  11. 11.
    Boehm, B., Basili, V.R.: Software defect reduction top 10 list. IEEE Comput. 34(1), 135–137 (2001)CrossRefGoogle Scholar
  12. 12.
    Bourquin, F., Keller, R.K.: High-impact refactoring based on architecture violations. In: Proceedings of the 11th European Conference on Software Maintenance and Reengineering on IEEE, pp. 149–158 (2007)Google Scholar
  13. 13.
    Brown, W.J., Malveau, R.C., McCormick, H.W., Mombray, T.J.: Anti Patterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley, New York (1998)Google Scholar
  14. 14.
    Chikofsky, E.J., Cross II, J.H.: Reverse engineering and design recovery: a taxonomy. IEEE Softw. 7(1), 13–17 (1990)CrossRefGoogle Scholar
  15. 15.
    Cho, E.S., Kim, M.S., Kim, S.D.: Component metrics to measure component quality. In: 8th Asia-Pacific, Software Engineering Conference, pp. 419–426 (December 2001)Google Scholar
  16. 16.
    Chouambe, L., Klatt, B., Krogmann, K.: Reverse engineering software-models of component-based systems. In: Proceedings of the 12th European Conference on Software Maintenance and Reengineering (CSMR 2008) on IEEE Computer Society, pp. 93–102, Athens (2008)Google Scholar
  17. 17.
    Coello Coello, C., Dhaenens, C., Jourdan, L.: Multi-objective combinatorial optimization: problematic and context. In: Advances in Multi-objective Nature Inspired Computing, vol. 272 of Studies in Computational Intelligence, pp. 1–21. Springer, Berlin (2010)Google Scholar
  18. 18.
    Dong, J., Zhao, Y., Peng, T.: A review of design pattern mining techniques. Int. J. Softw. Eng. Knowl. Eng. 19(6), 823–855 (2009)CrossRefGoogle Scholar
  19. 19.
    Ducasse, S., Pollet, D.: Software architecture reconstruction: a process-oriented taxonomy. IEEE Trans. Softw. Eng. 35(4), 573–591 (2009)CrossRefGoogle Scholar
  20. 20.
    Eppstein, D.: Subgraph isomorphism in planar graphs and related problems. In: Proceedings of the 6th Annual ACM-SIAM Symposium on Discrete Algorithms on Society for Industrial and Applied Mathematics, pp. 632–640. Philadelphia (1995)Google Scholar
  21. 21.
    Erdmenger, U., Fuhr, A., Herget, A., Horn, T., Kaiser, U., Riediger, V., Teppe, W., Theurer, M., Uhlig, D., Winter, A., Zillmann, C., Zimmermann, Y.: The SOAMIG process model in industrial applications. In: Proceedings of the 15th European Conference on Software Maintenance and Reengineering on IEEE, pp. 339–342 (2011)Google Scholar
  22. 22.
    Fischer, T., Niere, J., Torunski, L., Zündorf, A.: Story aiagrams: a new graph rewrite language based on the unified modeling language and java. In: Selected Papers from the 6th International Workshop on Theory and Application of Graph Transformations, vol. 1764 of Lecture Notes in Computer Science, pp. 296–309. Springer, Berlin (2000)Google Scholar
  23. 23.
    Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Reading (1999)Google Scholar
  24. 24.
    Fowler, M.: Patterns of Enterprise Application Architecture. Addison-Wesley, Reading (2002)Google Scholar
  25. 25.
    Frey, S., Hasselbring, W.: Model-based migration of legacy software systems to scalable and resource-efficient cloud-based applications: the CloudMIG approach. In: Proceedings of the First International Conference on Cloud Computing, GRIDs and Virtualization, pp. 155–158. Xpert Publishing Services (November 2010)Google Scholar
  26. 26.
    Glass, R.L.: Facts and Fallacies of Software Engineering. Addison-Wesley, Reading (2003)Google Scholar
  27. 27.
    Herold, S., Klus, H., Welsch, Y., Deiters, C., Rausch, A., Reussner, R., Krogmann, K., Koziolek, H., Mirandola, R., Hummel, B., Meisinger, M., Pfaller, C.: CoCoME—the common component modeling example. In: The Common Component Modeling Example, vol. 5153 of Lecture Notes in Computer Science, pp. 16–53. Springer, Berlin (2008)Google Scholar
  28. 28.
    Keller, R.K., Schauer, R., Robitaille, S., Pagé, P.: Pattern-Based Reverse-Engineering of Design Components. In: Proceedings of the 21st International Conference on Software Engineering, pp. 226–235, IEEE Computer Society Press (May 1999)Google Scholar
  29. 29.
    Koziolek, H., Schlich, B., Bilich, C., Weiss, R., Becker, S., Krogmann, K., Trifu, M., Mirandola, R., Koziolek, A.: An industrial case study on quality impact prediction for evolving service-oriented software. In: Proceedings of the 33rd International Conference on Software Engineering (ICSE 2011), Software Engineering in Practice Track. ACM Press (2011)Google Scholar
  30. 30.
    Kpodjedo, S., Ricca, F., Galinier, P., Guéhéneuc, Y.-G., Antoniol, G.: Design evolution metrics for defect prediction in object oriented systems. Empir. Softw. Eng. 16(1), 141–175 (2011)CrossRefGoogle Scholar
  31. 31.
    Krikhaar, R.: Reverse architecting approach for complex systems. In: Proceedings of the 13th International Conference on Software Maintenance on IEEE, pp. 4–11 (1997)Google Scholar
  32. 32.
    Krikhaar, R., Postma, A., Sellink, A., Stroucken, M., Verhoef, C.: A two-phase process for software architecture improvement. In: Proceedings of the 15th International Conference on Software Maintenance on IEEE, pp. 371–380 (1999)Google Scholar
  33. 33.
    Krogmann, K.: Reconstruction of Software Component Architectures and Behaviour Models Using Static and Dynamic Analysis. PhD thesis, Karlsruhe Institute of Technology (KIT), Karlsruhe (2010)Google Scholar
  34. 34.
    Krogmann, K., Kuperberg, M., Reussner, R.: Using genetic search for reverse engineering of parametric behavior models for performance prediction. IEEE Trans. Softw. Eng. 36(6), 865–877 (2010)CrossRefGoogle Scholar
  35. 35.
    Mancoridis, S., Souder, T.S., Chen, Y.-F., Gansner, E.R., Korn, J.L.: REportal: a web-based portal site for reverse engineering. In: Proceedings of the 8th Working Conference on Reverse Engineering on IEEE, pp. 221–230 (2001)Google Scholar
  36. 36.
    Marinescu, R.: Detection strategies: Metrics-based rules for detecting design flaws. In: Proceedings of the 20th International Conference on Software, Maintenance, pp. 350–359 (September 2004)Google Scholar
  37. 37.
    McCabe, T.J.: A coomplexity measure. IEEE Trans. Softw. Eng. SE–2(4), 308–320 (1976)MathSciNetCrossRefGoogle Scholar
  38. 38.
    Moha, N., Guéhéneuc, Y.-G., Duchien, L., Le Meur, A.-F.: DECOR: a method for the specification and detection of code and design smells. IEEE Trans. Softw. Eng. 36(1), 20–36 (2010)CrossRefGoogle Scholar
  39. 39.
    Munro, M.J.: Product metrics for automatic identification of “Bad Smell” design problems in java source-code. In: 11th IEEE International Symposium on Software Metrics, pp. 15–23 (September 2005)Google Scholar
  40. 40.
    Niere, J., Schäfer, W., Wadsack, J., Wendehals, L., Welsh, J.: Towards pattern-based design recovery. In: Proceedings of the 24th International Conference on Software Engineering, pp. 338–348. ACM Press (2002)Google Scholar
  41. 41.
    Platenius, M.C.: Reengineering of design deficiencies in component-based software Architectures. Master’s Thesis, University of Paderborn (October 2011)Google Scholar
  42. 42.
    Platenius, M.C., von Detten, M., Becker, S.: Archimetrix: improved software architecture recovery in the presence of design deficiencies. In: Proceedings of the 16th European Conference on Software Maintenance and Reengineering on IEEE, pp. 255–264 (March 2012)Google Scholar
  43. 43.
    Rausch, A., Reussner, R., Mirandola, R., Plasil, F.: The Common Component Modeling Example—Comparing Software Component Models, vol. 5153 of Lecture Notes in Computer Science. Springer, Berlin (2008)Google Scholar
  44. 44.
    Riel, A.J.: Object-oriented design Heuristics. Addison-Wesley, Reading (1996)Google Scholar
  45. 45.
    Salehie, M., Li, S., Tahvildari, L.: A metric-based heuristic framework to detect object-oriented design flaws. In: Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC 2006), IEEE Computer Society, pp. 159–168 (2006)Google Scholar
  46. 46.
    Sarkar, S., Ramachandran, S., Kumar, G.S., Iyengar, M.K., Rangarajan, K., Sivagnanam, S.: Modularization of a large-scale business application: a case study. IEEE Softw. 26(2), 28–35 (2009)CrossRefGoogle Scholar
  47. 47.
    Sartipi, K.: Software architecture recovery based on pattern matching. In: Proceedings of the International Conference on Software Maintenance, IEEE Computer Society, pp. 293–296 (2003)Google Scholar
  48. 48.
    Simon, F., Steinbrückner, F., Lewerentz, C.: Metrics based refactoring. In: Proceedings of the 5th Conference on Software Maintenance and Reengineering on IEEE, pp. 30–39 (2001)Google Scholar
  49. 49.
    SISSy—Structural Investigation in Software Systems: (2013)
  50. 50.
    Stürmer, I., Kreuz, I., Schäfer, W., Schürr, A.: The MATE approach: enhanced simulink/stateflow model transformation. In: Proceedings of the MathWorks Automotive Conference (June 2007)Google Scholar
  51. 51.
    Szyperski, C., Gruntz, D., Murer, S.: Component Software: Beyond Object-Oriented Programming, 2nd edn. Addison-Wesley, Reading (2002)Google Scholar
  52. 52.
    Tahvildari, L., Kontogiannis, K.: A metric-based approach to enhance design quality through meta-pattern transformations. In: Proceedings of the 7th European Conference on Software Maintenance and Reengineering, pp. 183–192 (March 2003)Google Scholar
  53. 53.
    Tourwé, T., Mens, T.: Identifying refactoring opportunities using logic meta programming. In: Proceedings of the 7th European Conference on Software Maintenance and Reengineering, pp. 91–100 (March 2003)Google Scholar
  54. 54.
    Travkin, O.: Kombination von Clustering- und musterbasierten Reverse-Engineering-Verfahren. Master’s thesis, University of Paderborn (June 2011) (in German)Google Scholar
  55. 55.
    Travkin, O., von Detten, M., Becker, S.: Towards the combination of clustering-based and pattern-based reverse engineering approaches. In: Proceedings of the 3rd Workshop of the GI Working Group L2S2—Design for, Future 2011 (February 2011)Google Scholar
  56. 56.
    Trifu, A., Seng, O., Genssler, T.: Automated design flaw correction in object-oriented systems. In: Proceedings of the 8th Conference on Software Maintenance and Reengineering, IEEE, pp. 174–183 (2004)Google Scholar
  57. 57.
    Tzerpos, V., Holt, R.C.: ACDC: an algorithm for comprehension-driven clustering. In: Proceedings of the 7th Working Conference on Reverse Engineering, WCRE on IEEE, pp. 258–267 (2000)Google Scholar
  58. 58.
    von Detten, M.: Reengineering of Component-Based Software Systems in the Presence of Design Deficiencies. PhD thesis, Heinz Nixdorf Institute, University of Paderborn, Germany (2013)Google Scholar
  59. 59.
    von Detten, M., Becker, S.: Combining clustering and pattern detection for the reengineering of component-based software systems. In: Proceedings of the 7th International Conference on the Quality of Software Architectures, pp. 23–32. ACM (June 2011)Google Scholar
  60. 60.
    von Detten, M., Heinzemann, C., Platenius, M.C., Rieke, J., Travkin, D., Hildebrandt, S.: Story diagrams—syntax and semantics. Technical report tr-ri-12-324, Software Engineering Group, Heinz Nixdorf Institute, Ver. 0.2, University of Paderborn (July 2012)Google Scholar
  61. 61.
    von Detten, M., Meyer, M., Travkin, D.: Reclipse—a reverse engineering tool suite. Technical report tr-ri-10-312, Software Engineering Group, Heinz Nixdorf Institute, University of Paderborn (March 2010)Google Scholar
  62. 62.
    von Detten, M., Meyer, M., Travkin, D.: Reverse engineering with the reclipse tool suite. In: Proceedings of the 32nd International Conference on Software Engineering, pp. 299–300. ACM (May 2010)Google Scholar
  63. 63.
    von Detten, M., Travkin, D.: An evaluation of the reclipse tool suite based on the static analysis of JHotDraw. Technical report tr-ri-10-322, Software Engineering Group, Heinz Nixdorf Institute, University of Paderborn (October 2010)Google Scholar
  64. 64.
    Zhang, M., Hall, T., Baddoo, N.: Code bad smells: a review of current knowledge. J. Softw. Maint. Evol. Res. Pract. 23(3), 179–202 (2011)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Markus von Detten
    • 1
    Email author
  • Marie Christin Platenius
    • 1
  • Steffen Becker
    • 1
  1. 1.Software Engineering Group, Heinz Nixdorf InstituteUniversity of PaderbornPaderbornGermany

Personalised recommendations