The canonical activities of reverse engineering

Abstract

This paper describes three categories of canonical activities that are characteristic of reverse engineering for program understanding. The activities are data gathering, knowledge management, and information exploration. All tasks carried out by a software engineer during a program understanding exercise can be mapped to a composition of one or more of these canonical activities. The design space formed by the canonical activities can be used to classify the capabilities provided by individual support mechanisms using a common vocabulary. A descriptive model that categorizes important support mechanism features based on a hierarchy of attributes is used to structure the canonical activities.

This is a preview of subscription content, access via your institution.

References

  1. Abrial, J.-R. (1974), "Data Semantics," In Data Management Systems, Klimbie and Koffman, Eds., North-Holland.

  2. Armstrong, M. and C. Trudeau (1998), "Evaluating Architectural Extractors," In Proceedings of the 5th Working Conference on Reverse Engineering, IEEE Computer Society Press, Los Alamitos, CA, pp. 30-39.

    Google Scholar 

  3. Bellay, B. and H. Gall (1997), "A Comparison of Four Reverse Engineering Tools," In Proceedings of the 4th Working Conference on Reverse Engineering, IEEE Computer Society Press, Los Alamitos, CA, pp. 2-11.

    Google Scholar 

  4. Borkin, S. (1980), Data Models: A Semantic Approach for Database Systems, The MIT Press, Boston, MA.

    Google Scholar 

  5. Botagofo, R. and B. Shneiderman (1991), "Identifying Aggregates in Hypertext Structures," In Proceedings of Hypertext'91, ACM Press, pp. 63-74.

  6. Broady, D., H. Haitto, P. Lidbaum, and M. Tobiasson (1993), "DARC: Document Archive Controller," Technical Report TRITA-NA-P9306, Royal Institute of Technology, Sweden.

    Google Scholar 

  7. Brodie, M., J. Mylopoulos, and J. Schmidt, Eds. (1984), On Conceptual Modelling: Perspectives from Artifical Intelligence, Databases, and Programming Languages, Springer-Verlag.

  8. Brooks, Jr. F. (1987), "No Silver Bullet: Essence and Accidents of Software Engineering," Computer 20, 4, 10-19.

    Google Scholar 

  9. Casanova, M., L. Tucherman, M. Lima, J. Netto, N. Rodriguez, and L. Soares (1991), "The Nested Context Model for Hyperdocuments," In Proceedings of Hypertext'91, ACM Press, pp. 193-201.

  10. Chen, P. (1976), "The Entity-Relationship Model: Towards a Unified View of Data," ACM Transactions on Database Systems 1, 1.

  11. Chikofsky, E. and J. Cross (1990), "Reverse Engineering and Design Recovery: A Taxonomy," IEEE Software 7, 1, 13-17.

    Article  Google Scholar 

  12. Chin, D. and A. Quilici (1996), "DECODE: A Cooperative Program Understanding Environment," Journal of Software Maintenance: Research and Practice 8, 1, 3-34.

    Article  Google Scholar 

  13. Codd, E. (1979), "Extending the Database Relational Model to Capture More Meaning," ACM Transactions on Database Systems 4, 4.

  14. Findler, N. (1979), "A Heuristic Information Retrieval System Based on Associative Networks," In Associative Networks (Representation and Use of Knowledge by Computers), N. Findler, Ed., Academic Press, pp. 305-326.

  15. Gilbert, J. (1990), "PolyView: An Object-Oriented Data Model for Supporting Multiple User Views," PhD Dissertation, Department of Information and Computer Science, University of California at Irvine, Irvine, CA.

    Google Scholar 

  16. Hara, Y., A. Keller, and G. Wiederhold (1991), "Implementing Hypertext Database Relations through Aggregations and Exceptions," In Proceedings of Hypertext'91, ACM Press, pp. 75-90.

  17. Hendrix, G. (1979), "Encoding Knowledge in Partitioned Networks," In Associative Networks (Representation and Use of Knowledge by Computers), N. Findler, Ed., Academic Press, pp. 51-92.

  18. Kazman, R., S. Woods, and J. Carrière (1998), "Requirements for Integrating Software Architecture and Reengineering Models: CORUM II," In Proceedings of the 5th Working Conference on Reverse Engineering, IEEE Computer Society Press, Los Alamitos, CA, pp. 154-163.

    Google Scholar 

  19. Klefstad, R. (1988), "Maintaining a Uniform User Interface for an Ada Programming Environment," PhD Dissertation, Department of Information and Computer Science, University of California at Irvine, Irvine, CA.

    Google Scholar 

  20. Korth, H. and A. Silberschatz (1986), Database System Concepts, McGraw-Hill.

  21. Kosslyn, S. (1980), Image and Mind, Harvard University Press, Cambridge, MA.

    Google Scholar 

  22. Kristensen, B. and K. Österbye (1994), "Conceptual Modeling and Programming Languages," ACM SIGPLAN 29, 9.

  23. Lang, S. and A. von Mayrhauser (1997), "Towards a Systematic Analysis of Program Comprehension Strategies for Legacy Software," In Proceedings of the Workshop on Migration Strategies for Legacy Systems, IEEE Computer Society Press, Los Alamitos, CA.

    Google Scholar 

  24. Marchionini, G. and B. Shneiderman (1988), "Finding Facts and Browsing Knowledge in Hypertext Systems," Computer 21, 70-80.

  25. Maurer, H. (1992), "Why Hypermedia Systems Are Important," Technical Report 331, Institute for Information Processing (IIG), Graz University of Technology, Austria.

    Google Scholar 

  26. Microsoft (1999), "Visual Studio," online at msdn.microsoft.com/vstudio.

  27. Müller, H. and K. Klashinsky (1988), "Rigi-A System for Programming in the Large," In Proceedings of the 10th International Conference on Software Engineering,IEEE Computer Society Press, Los Alamitos, CA, pp. 80-86.

    Google Scholar 

  28. Müller, H., S. Tilley, M. Orgun, B. Corrie, and N. Madhavji (1992), "A Reverse Engineering Environment Based on Spatial and Visual Software Interconnection Models," In Proceedings of the 5th ACM SIGSOFT Symposium on Software Development, ACM Software Engineering Notes 17, 5, 88-98.

    Article  Google Scholar 

  29. Murphy, G., D. Notkin, and E. Lan (1996), "An Empirical Study of Static Call Graph Extractors," In Proceedings of the 18th International Conference on Software Engineering, IEEE Computer Society Press, Los Alamitos, CA.

    Google Scholar 

  30. Mylopoulos, J. and H. Levesque (1984), "An Overview of Knowledge Representation," In On Conceptual Modelling: Perspectives from Artificial Intelligence, Databases, and Programming Languages, M. Brodie, J. Mylopoulos, and J. Schmidt, Eds., Springer-Verlag, pp. 3-17.

  31. Nanard, J. and M. Nanard (1991), "Using Structured Types to Incorporate Knowledge in Hypertext," In Proceedings of Hypertext'91, ACM Press, pp. 329-343.

  32. Nielsen, J. (1990a), Hypertext & Hypermedia, Academic Press.

  33. Nielson, J. (1990b), "The Art of Navigating Through Hypertext," Communications of the ACM 33, 3, 296-310.

    Article  Google Scholar 

  34. Paul, S. (1995), "Design and Implementation of Query Languages for Program Databases," PhD Dissertation, Department of Computer Science and Engineering, University of Michigan, Ann Arbor, MI.

    Google Scholar 

  35. Rohrich, J. (1987), "Graph Attribution with Multiple Attribute Grammars," ACM SIGPLAN 22, 11, 55-70.

    Article  Google Scholar 

  36. SET (1999), "The DISCOVER Development Information System," Software Emancipation Technology, online at www.setech.com.

  37. Shaw, M. (1989), "Larger Scale Systems Require Higher-Level Abstractions," ACM SIGSOFT Software Engineering Notes 14, 3, 143-146.

    Article  Google Scholar 

  38. Smith, D., H. Müller, and S. Tilley (1997), "The Year 2000 Problem: Issues and Implications," Technical Report CMU/SEI-97-TR-002, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, PA.

    Google Scholar 

  39. Sowa, J. (1988), Conceptual Structures: Information Processing in Mind and Machine, Addison-Wesley, Reading, MA.

    Google Scholar 

  40. Storey, M.-A., K. Wong, and H. Müller (1997), "How Do Program Understanding Tools Affect How Programmers Understand Programs?" In Proceedings of the 4th Working Conference on Reverse Engineering, IEEE Computer Society Press, Los Alamitos, CA, pp. 12-21.

    Google Scholar 

  41. Sullivan, T. (1999), "As Simple As Possible," Web Techniques 4, 4, 40-45.

    Google Scholar 

  42. Tilley, S. (1995), "Domain-Retargetable Reverse Engineering III: Layered Modeling," In Proceedings of the 1995 International Conference on Software, IEEE Computer Society Press, Los Alamitos, CA, pp. 52-61.

    Google Scholar 

  43. Tilley, S. (1997), "Discovering DISCOVER," Technical Report CMU/SEI-97-TR-012, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, PA.

    Google Scholar 

  44. Tilley, S. (1998), "A Reverse-Engineering Environment Framework," Technical Report CMU/SEI-98-TR-005, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, PA.

    Google Scholar 

  45. Tracz, W. (1994), "Domain-Specific Software Architecture (DSSA) Frequently Asked Questions (FAQ)," ACM SIGSOFT Software Engineering Notes 19, 2, 52-56.

    Article  Google Scholar 

  46. Ullman, J. (1980), Principles of Database Systems, Computer Science Press.

  47. van den Brand, M., A. Sellink, and C. Verhoef (1998), "Current Parsing Techniques in Software Renovation Considered Harmful," In Proceedings of the 6th International Workshop on Program Comprehension, IEEE Computer Society Press, Los Alamitos, CA, pp. 108-117.

    Google Scholar 

  48. Warren, P., C. Boldyreff, and M. Munro (1999), "The Evolution of Websites," In Proceedings of the 7th International Workshop on Program Comprehension, IEEE Computer Society Press, Los Alamitos, CA, pp. 178-185.

    Google Scholar 

  49. Wasserman, A. (1989), "Tool Integration in Software Engineering Environments," In Proceedings of the International Workshop on Environments, Springer-Verlag, pp. 137-149.

  50. Weiser, M. (1984), "Program Slicing," IEEE Transactions on Software Engineering 10, 4, 352-357.

    Article  Google Scholar 

  51. Woods, S., A. Quilici, and Q. Yang (1998a), Constraint-Based Design Recovery for Software Reengineering, Kluwer Academic, Dordrecht.

    MATH  Google Scholar 

  52. Woods, S., L. O'Brien, L. Tao, K. Gallagher, and A. Quilici (1998b), "An Architecture for Interoperable Program Understanding Tools," In Proceedings of the 6th International Workshop on Program Comprehension, IEEE Computer Society Press, Los Alamitos, CA, pp. 54-63.

    Google Scholar 

  53. Young, M., R. Taylor, and D. Troup (1988), "Software Environment Architectures and User Interface Facilities," IEEE Transactions on Software Engineering 14, 6, 697-708.

    Article  Google Scholar 

Download references

Author information

Affiliations

Authors

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Tilley, S.R. The canonical activities of reverse engineering. Annals of Software Engineering 9, 249–271 (2000). https://doi.org/10.1023/A:1018985010508

Download citation

Keywords

  • Software Engineer
  • Knowledge Management
  • IEEE Computer Society
  • Reverse Engineering
  • Subject System