Enriching Reverse Engineering with Annotations

  • Andrea Brühlmann
  • Tudor Gîrba
  • Orla Greevy
  • Oscar Nierstrasz
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5301)


Much of the knowledge about software systems is implicit, and therefore difficult to recover by purely automated techniques. Architectural layers and the externally visible features of software systems are two examples of information that can be difficult to detect from source code alone, and that would benefit from additional human knowledge. Typical approaches to reasoning about data involve encoding an explicit meta-model and expressing analyses at that level. Due to its informal nature, however, human knowledge can be difficult to characterize up-front and integrate into such a meta-model. We propose a generic, annotation-based approach to capture such knowledge during the reverse engineering process. Annotation types can be iteratively defined, refined and transformed, without requiring a fixed meta-model to be defined in advance. We show how our approach supports reverse engineering by implementing it in a tool called Metanool and by applying it to (i) analyzing architectural layering, (ii) tracking reengineering tasks, (iii) detecting design flaws, and (iv) analyzing features.


Source Code Reverse Engineering External Knowledge Software Maintenance Annotation Type 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Koschke, R., Simon, D.: Hierarchical reflexion models. In: Proceedings of the 10th Working Conference on Reverse Engineering (WCRE 2003), p. 36. IEEE Computer Society, Los Alamitos (2003)CrossRefGoogle Scholar
  2. 2.
    Murphy, G., Notkin, D., Sullivan, K.: Software reflexion models: Bridging the gap between source and high-level models. In: Proceedings of SIGSOFT 1995, Third ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 18–28. ACM Press, New York (1995)CrossRefGoogle Scholar
  3. 3.
    Mens, K., Kellens, A., Pluquet, F., Wuyts, R.: Co-evolving code and design with intensional views — a case study. Journal of Computer Languages, Systems and Structures 32, 140–156 (2006)zbMATHCrossRefGoogle Scholar
  4. 4.
    Nierstrasz, O., Ducasse, S., Gîrba, T.: The story of Moose: an agile reengineering environment. In: Proceedings of the European Software Engineering Conference (ESEC/FSE 2005), pp. 1–10. ACM Press, New York (2005) (invited paper) Google Scholar
  5. 5.
    Yoder, J., Balaguer, F., Johnson, R.: Architecture and design of adaptive object models. In: Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2001), pp. 50–60 (2001)Google Scholar
  6. 6.
  7. 7.
    jEdit web site: jEdit: a programmer’s text editor (2008),
  8. 8.
    Meyer, M., Gîrba, T., Lungu, M.: Mondrian: An agile visualization framework. In: ACM Symposium on Software Visualization (SoftVis 2006), pp. 135–144. ACM Press, New York (2006)CrossRefGoogle Scholar
  9. 9.
    Ducasse, S., Gîrba, T.: Using Smalltalk as a reflective executable meta-language. In: Nierstrasz, O., Whittle, J., Harel, D., Reggio, G. (eds.) MoDELS 2006. LNCS, vol. 4199, pp. 604–618. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  10. 10.
    Brühlmann, A.: Enriching reverse engineering with annotations. Master’s thesis, University of Bern (2008)Google Scholar
  11. 11.
    Patel, S., Dandawate, Y., Kuriakose, J.: Architecture recovery as first step in system appreciation. In: 2nd Workshop on Empirical Studies in Reverse Engineering, Politecnico di Torino (2006),
  12. 12.
    Lanza, M., Marinescu, R.: Object-Oriented Metrics in Practice. Springer, Heidelberg (2006)zbMATHGoogle Scholar
  13. 13.
    Greevy, O., Ducasse, S.: Correlating features and code using a compact two-sided trace analysis approach. In: Proceedings of 9th European Conference on Software Maintenance and Reengineering (CSMR 2005), pp. 314–323. IEEE Computer Society, Los Alamitos (2005)Google Scholar
  14. 14.
    Greevy, O.: Enriching Reverse Engineering with Feature Analysis. PhD thesis, University of Berne (2007)Google Scholar
  15. 15.
    Eisenbarth, T., Koschke, R., Simon, D.: Locating features in source code. IEEE Computer 29, 210–224 (2003)Google Scholar
  16. 16.
    Antoniol, G., Guéhéneuc, Y.G.: Feature identification: a novel approach and a case study. In: Proceedings IEEE International Conference on Software Maintenance (ICSM 2005), pp. 357–366. IEEE Computer Society Press, Los Alamitos (2005)CrossRefGoogle Scholar
  17. 17.
    Wilde, N., Scully, M.: Software reconnaisance: Mapping program features to code. Software Maintenance: Research and Practice 7, 49–62 (1995)CrossRefGoogle Scholar
  18. 18.
    Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, 3rd edn. Addison Wesley, Reading (2005)Google Scholar
  19. 19.
    Stroustrup, B., Ellis, M.A.: The Annotated C++ Reference Manual. Addison Wesley, Reading (1990)Google Scholar
  20. 20.
    Kuhn, A., Ducasse, S., Gîrba, T.: Enriching reverse engineering with semantic clustering. In: Proceedings of 12th Working Conference on Reverse Engineering (WCRE 2005), pp. 113–122. IEEE Computer Society Press, Los Alamitos (2005)Google Scholar
  21. 21.
    Yoder, J.W., Johnson, R.: The adaptive object model architectural style. In: Proceeding of The Working IEEE/IFIP Conference on Software Architecture 2002 (WICSA3 2002) (2002)Google Scholar
  22. 22.
    Denker, M., Ducasse, S., Lienhard, A., Marschall, P.: Sub-method reflection. Journal of Object Technology 6, 231–251 (2007)Google Scholar
  23. 23.
    Denker, M., Greevy, O., Nierstrasz, O.: Supporting feature analysis with runtime annotations. In: Proceedings of the 3rd International Workshop on Program Comprehension through Dynamic Analysis (PCODA 2007), Technische Universiteit Delft, pp. 29–33 (2007)Google Scholar
  24. 24.
    Murphy, K.: Findlater: How are Java software developers using the Eclipse IDE? IEEE Software (2006)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Andrea Brühlmann
    • 1
  • Tudor Gîrba
    • 1
  • Orla Greevy
    • 1
  • Oscar Nierstrasz
    • 1
  1. 1.Software Composition GroupUniversity of BernSwitzerland

Personalised recommendations