Skip To Content

Athabasca University

Section 2

Section Goals

  • To describe software reverse engineering and program comprehension.
  • To explain the benefits of using knowledge management principles in software maintenance.

Learning Objectives

Learning Objective 1

  • Describe the techniques used in software maintenance, including program comprehension and reverse engineering.
  • Describe tools in software maintenance.

Objective Leading Questions

  • What is reverse engineering?
  • Why do we need reverse engineering?
  • What are the main research challenges in reverse engineering?
  • How would you describe the current state of research in reverse engineering, and what are the most promising research directions?
  • What is program comprehension?
  • What are the most important tools, methods, and theories used in program comprehension?
  • How would you describe the state of the art in program comprehension?
  • What are the main research challenges in software comprehension?
  • What technologies appear to be the most promising for use in program comprehension?
  • What are commonly used tools in software maintenance?

Objective Readings

Required Readings

Chapter 5: "Section 4: Techniques for Maintenance" and "Section 5: Software Maintenance Tools" of SWEBOK [Bourque and Fairley 2014].

CanforaHarman, G. and M. Di Penta (2007), "New Frontiers of Reverse Engineering," In Future of Software Engineering [Conference proceedings], L.C. Briand and A.L. Wolf, Eds., Institute of Electrical and Electronic Engineers, Los Alamitos, CA, pp. 326-341. https://doi.org/10.1109/FOSE.2007.15

Storey, M.A. (2005), "Theories, Methods and Tools in Program Comprehension: Past, Present and Future," In Proceedings of the 13th International Workshop on Program Comprehension, Institute of Electrical and Electronic Engineers, Los Alamitos, CA, pp. 181-191. https://doi.org/10.1109/WPC.2005.38

Supplemental Readings

Chikofsky, E.J. and J.H. Cross, II. (1990), "Reverse Engineering and Design Recovery: A Taxonomy," IEEE Software 7, 1, 13-17. https://doi.org/10.1109/52.43044

Mens, T. and T. Tourwe (2004), "A Survey of Software Refactoring," IEEE Transactions on Software Engineering 30, 2, 126-139. https://doi.org/10.1109/TSE.2004.1265817

Byrne, E.J. (1992), "A Conceptual Foundation for Software Re-Engineering," In Proceedings of the Conference on Software Maintenance, Institute of Electrical and Electronic Engineers, Los Alamitos, CA, pp. 226-235. https://doi.org/10.1109/ICSM.1992.242539

von Mayrhauser, A. and A.M. Vans (1995), "Program Comprehension during Software Maintenance and Evolution," Computer 28, 8, 44-55. https://doi.org/10.1109/2.402076

Kanellopoulos, Y., C. Makris and C. Tjortjis (2007), "An Improved Methodology on Information Distillation by Mining Program Source Code," Data & Knowledge Engineering 61, 2, 359-383. https://doi.org/10.1016/j.datak.2006.06.002

Rugaber, S. and K. Stirewalt (2004), "Model-Driven Reverse Engineering," IEEE Software 21, 4, 45-53. https://doi.org/10.1109/MS.2004.23

Kung, H.-J. and C. Hsu (1998), "Software Maintenance Life Cycle Model," In Proceedings of the Conference on Software Maintenance, Institute of Electrical and Electronic Engineers, Los Alamitos, CA, pp. 113-121. https://doi.org/10.1109/ICSM.1998.738499

van Deursen, A., E. Visser and J. Warmer (2007), "Model-Driven Software Evolution: A Research Agenda," In Proceedings of the 11th European Conference on Software Maintenance and Reengineering. Retrieved on August 28, 2023, from http://www.sciences.univ-nantes.fr/MoDSE2007/p19.pdf

Forward, A. and T.C. Lethbridge (2002), "The Relevance of Software Documentation, Tools and Technologies: A Survey," In Proceedings of the 2002 ACM Symposium on Documentation Engineering, Association for Computing Machinery, New York, pp. 26-33. https://doi.org/10.1145/585058.585065

Lethbridge, T.C., J. Singer and A. Forward (2003), "How Software Engineers use Documentation: The State of the Practice," IEEE Software 20, 6, 35-39. https://doi.org/10.1109/MS.2003.1241364

Learning Objective 2

  • Describe the importance of knowledge management in software maintenance.

Objective Leading Questions

  • Why is software maintenance considered to be a knowledge management task?
  • What are the main aspects of knowledge management in software maintenance?
  • How can ontologies help to describe the main aspects of software maintenance?
  • How do knowledge management techniques contribute to the postmortem analysis of software maintenance?
  • What knowledge management techniques and approaches seem to be the most promising for use in software maintenance?

Objective Readings

Required Readings

Anquetil, N., K.M. de Oliveira, K.D. de Sousa and M.G.B. Dias (2007), "Software Maintenance seen as a Knowledge Management Issue," Information and Software Technology 49, 5, 515-529. https://doi.org/10.1016/j.infsof.2006.07.007

Supplemental Readings

Rus, I. and M. Lindvall (2002), "Knowledge Management in Software Engineering," IEEE Software 19, 3, 26-38. https://doi.org/10.1109/MS.2002.1003450

Kitchenham, B.A., G.H. Travassos, A. von Mayrhauser, F. Niessink, N.F. Schneidewind, J. Singer, S. Takada, R. Vehvilainen and H. Yang (1999), "Towards an Ontology of Software Maintenance," Journal of Software Maintenance: Research and Practice 11, 6, 365-389. https://doi.org/10.1002/(SICI)1096-908X(199911/12)11:6%3C365::AID-SMR200%3E3.0.CO;2-W

Ramesh, B. (2002), "Process Knowledge Management with Traceability," IEEE Software 19, 3, 50-52. https://doi.org/10.1109/MS.2002.1003454

Birk, A., T. Dingsoyr and T. Stalhane (2002), "Postmortem: Never Leave a Project without it," IEEE Software 19, 3, 43-45. https://doi.org/10.1109/MS.2002.1003452

Witte, R., Y. Zhang and J. Rilling (2007), "Empowering Software Maintainers with Semantic Web Technologies," In Lecture Notes in Computer Science: Vol. 4519. The Semantic Web: Research and Applications, E. Franconi, M. Kifer, and W. May (Vol. Eds.), Springer, Berlin, Germany, pp. 37-52. https://doi.org/10.1007/978-3-540-72667-8_5

Kiefer, C., A. Bernstein and J. Tappolet (2007), "Analyzing Software with iSPARQL," Paper presented at the 3rd International Workshop on Semantic Web Enabled Software Engineering. Retrieved November 5, 2007, from https://www.merlin.uzh.ch/contributionDocument/download/2302

Updated August 28 2023 by FST Course Production Staff