skip to main content
research-article
Free Access

Achievements and challenges in software reverse engineering

Published:01 April 2011Publication History
Skip Abstract Section

Abstract

Deeply understanding the intricacies of software must always come before any considerations for modifying it.

References

  1. Anderson, P. and Teitelbaurn, T. Software inspection using CodeSurfer. In Proc. of the 1st Workshop on Inspection in Software Engineering, 2001, 4--11.Google ScholarGoogle Scholar
  2. Antoniol, G., canfora, G., Casazza, G., De Lucia, A., and Merlo, E. Recovering traceability links between code and documentation. IEEE Transactions on Software Engineering 28, 10 (2002), 970--983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Baxter, I.D., Pidgeon, C., and Mehlich, M. DMS: Program transformations for practical scalable software evolution. In Proc. of the 26th International Conference on Software Engineering, 2004, 625--634. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Beyer, D. and Hassan, A.E. Animated visualization of software history using evolution storyboards. In Proc. of the 13th Working Conference on Reverse Engineering, 2006. IEEE CS Press, 199--210. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Beyer, D. and Lewerentz, C. CrocoPat: Efficient pattern analysis in object-oriented programs. In Proc. of the 11th International Workshop on Program Comprehension, 2003. IEEE CS Press, 294--295. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Binkley, D. Source code analysis: A road map. In Proc. of the International Conference on Software Engineering---Future of Software Engineering Track (FOSE). IEEE CS Press, 104--119. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Bird, C., Pattison, D., D'Souza, R., Filkov, V., and Devanbu, P. Latent social structure in open source projects. In Proc. of the 16th ACM SIGSOFT international Symposium on Foundations of Software Engineering, 2008. ACM Press, 24--35. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Burnett, M., Cook, C., and Rothermel, G. End-user software engineering. Comm. ACM 47, 9 (Sept. 2004), 53--58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Canfora, G. and Di Penta, M. New frontiers of reverse engineering. In Proc. of the International Conference on Software Engineering - Future of Software Engineering Track (FOSE), 2007. IEEE CS Press, 326--341. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Canfora, G., Fasolino, A.R., Frattolillo, G., and Tramontana, P. A wrapping approach for migrating legacy system interactive functionalities to service oriented architectures. Journal of Systems and Software 81, 4 (2008), 463--480. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Canfora, G., Cerulo, L., and Di Penta, M. Tracking your changes: A language-independent approach. IEEE Software 27, 1 (2009), 50--57. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Chikofsky, E., and Cross, J.I. Reverse engineering and design recovery: A taxonomy. IEEE Software 7, 1 (1990), 13--17. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Cifuentes, C. and Gough, K.J. Decompilation of binary programs. Software Practice and Experience 25, 7 (1995), 811--829. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Collard, M.L., Kagdi, H.H., and Maletic, J.I. An XML-based lightweight C++ fact extractor. In Proc. of the 11th International Workshop on Program Comprehension, 2003. IEEE CS Press, 134--143. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Cordy, J.R., Dean, T.R., Malton, A.J., Schneider, K.A. Source transformation in software engineering using the TXL transformation system. Information & Software Technology 44, 13 (2002), 827--837.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Cornelissen, B., Zaidman, A., van Deursen, A., Moonen, L., and Koschke, R. A systematic survey of program comprehension through dynamic analysis. IEEE Transactions on Software Engineering. http://doi.ieeecomputersociety.org/10.1109/TSE.2009.28 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Duala-Ekoko, E., and Robillard, M.P. Tracking code clones in evolving software. In Proc. of the 29th International Conference on Software Engineering, 2007. IEEE CS Press, 158--167. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Ernst, M.D., Cockrell, J., Griswold, W.G., Notkin, D. Dynamically discovering likely program invariants to support program evolution. IEEE Transactions on Software Engineering 27, 2 (2001), 1--25. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Ferenc, R., Beszédes, À., Tarkiainen, and M., Gyimòthy, T. Columbus---reverse engineering tool and schema for C++. In Proc. of the 18th International Conference on Software Maintenance, 2002. IEEE CS Press, 172--181. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Fluri, B., Würsch, M., Pinzger, M., Gall, H. Change distilling: Tree differencing for finegrained source code change extraction. IEEE Transactions on Software Engineering 33, 11 (2007), 725--743. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Godfrey, M.W., Hassan, A.E., Herbsleb, J.D., Murphy, G.C., Robillard, M.P., Devanbu, P.T., Mockus, A., Perry, D.E., and Notkin, D. Future of mining software archives: A roundtable. IEEE Software 26, 1 (2009), 67--70. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Gold, N., Knight, C., Mohan, A., and Munro, M. Understanding service-oriented software. IEEE Software 21, 2 (2004), 71--77. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Hassan, A.E., Martin, D.J., Flora, P., Mansfield, P., and Dietz, D. An industrial case study of customizing operational profiles using log compression. In Proc. of the 30th international Conference on Software Engineering 2008. ACM Press, 713--723. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Kagdi, H.H., Collard, M.L., and Maletic, J.I. A survey and taxonomy of approaches for mining software repositories in the context of software evolution. Journal of Software Maintenance 19, 2 (2007). Wiley, 77--131. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Kamiya, T., Kusumoto, S., and Inoue, K. CCFinder: A multilinguistic token-based code clone detection system for large scale source code. IEEE Transactions on Software Engineering 28, 7, (2002), 654--670. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Koschke, R. Atomic architectural component recovery for program understanding and evolution. Ph.D. thesis, Univ. of Stuttgart, Germany, 2000.Google ScholarGoogle Scholar
  27. Koschke, R. Software visualization in software maintenance, reverse engineering, and reengineering: A research survey. Journal of Software Maintenance 15, 2 (2003), Wiley, 87--109. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Kuhn, A. Ducasse, S., and Gîrba, T. Semantic clustering: Identifying topics in source code. Information & Software Technology 49, 3 (2007), 230--243. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Lanza, M. and Ducasse, S. Polymetric views---A lightweight visual approach to reverse engineering. IEEE Transactions on Software Engineering 29, 9 (2003), 782--795. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Lehman, M.M. and Belady, L.A. Program Evolution---Processes of Software Change. Academic Press, London, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Lorenzoli, D., Mariani, L., and Pezzè, M. Automatic generation of software behavioral models. In Proc. of the 30th International Conference on Software Engineering, 2008. ACM Press, 501--510. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Maqbool, O. and Babri, H.A. Hierarchical clustering for software architecture recovery. IEEE Transactions on Software Engineering 33, 11 (2007), 759--780. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Marin, M., van Deursen, A., and Moonen, L. Identifying crosscutting concerns using fan-in analysis. ACM Transactions on Software Engineering and Methodology 17, 1 (2007), 1--37. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Muller, H.A., Jahnke, J.H., Smith, D.B., Storey, M.D., Tilley, S.R., and Wong, K. Reverse engineering: A roadmap. In Proc. of the 22nd International Conference on Software Engineering---Future of Software Engineering Track, 2000, 47--60. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Moonen, L. Generating robust parsers using island grammars. In Proc. of the 8th Working Conference on Reverse Engineering, 2001. IEEE CS Press, 13--22. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Murphy, G.C. Houston: We are in overload. In Proc. of the 23rd IEEE International Conference on Software Maintenance, 2007, IEEE CS Press.Google ScholarGoogle Scholar
  37. Nierstrasz, O., Ducasse, S., and Gîrba, T. The story of Moose: An agile reengineering environment. In Proc. of the 10th European Software Engineering Conference held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, 2005, Lisbon, Portugal, (Sept. 5--9, 2005). ACM Press, 1--10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Ducasse, S, and Pollet, D. Software architecture reconstruction: A process-oriented taxonomy. IEEE Transactions on Software Engineering 35, 4 (2009), 573--591. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Resnick, P. and Varian, H.R. Recommender systems. Comm. ACM 40, 3 (Mar. 1997), 6--89. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Systa, T. Static and Dynamic Reverse Engineering Techniques for Java Software Systems. Ph.D. thesis, Univ. of Tampere, Finland, 2000.Google ScholarGoogle Scholar
  41. Storey, M.D., and Müller, H.A. Manipulating and documenting software structures using Shrimp views. In Proc. of the 11th International Conference on Software Maintenance, 1995. IEEE CS Press, 275--284. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Tonella, P. and Potrich, A. Reverse Engineering of Object Oriented Code. Springer-Verlag, Berlin, Heidelberg, New York, 2005. Google ScholarGoogle Scholar
  43. Tsantalis, N., Chatzigeorgiou, A., Stephanides, G., and Halkidis, S. T. Design pattern detection using similarity scoring. IEEE Transactions on Software Engineering 32, 11 (2006), 896--909. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Woodside, C.M., Franks, G., and Petriu, D.C. The future of software performance engineering. In Proc. of the International Conference on Software Engineering, Future of Software Engineering Track (FOSE) 2007. IEEE CS Press, 171--187. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Wong, K., Tilley, S., Muller, H.A., and Storey, M.D. Structural redocumentation: A case study. IEEE Software (Jan. 1996), 46--54. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Achievements and challenges in software reverse engineering

            Recommendations

            Reviews

            Richard John Botting

            Reverse engineering is now recognized as the vital discipline in supporting software maintenance. Documentation is always incomplete and out of date, so one relies on the code. Even the cleanest code, however, fails to identify all of the requirements, assumptions, and dependencies involved. In the last two decades, many novel tools and techniques have been developed to help programmers analyze code. One of the strengths of this paper is the categorization of the types of tools and their desirable features. The list of nearly 50 recent references is a good starting point for researchers. An older annotated bibliography [1] gives a historical perspective. The paper has a few spelling mistakes and grammatical errors, but is still clear and accurate. Though it is a good survey of reverse engineering tools, the figures in the virtual extension of the magazine ruined it for me. One figure is a bandwidth-consuming computer-generated image with no visible relation to the topic being discussed. The other figure is a visual summary of the ontology that the authors developed from Chikofsky and Cross's taxonomy [2]. This diagram claims to use the unified modeling language (UML), but is full of novice-type errors, such as roles at the wrong ends of associations and incorrect arrowheads. Researchers would be wise to get the Hypertext Markup Language (HTML) version that omits the figures. The tables of tools, however, will be valuable to practitioners, and these are only in the PDF version of the paper. Online Computing Reviews Service

            Access critical reviews of Computing literature here

            Become a reviewer for Computing Reviews.

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image Communications of the ACM
              Communications of the ACM  Volume 54, Issue 4
              April 2011
              139 pages
              ISSN:0001-0782
              EISSN:1557-7317
              DOI:10.1145/1924421
              Issue’s Table of Contents

              Copyright © 2011 ACM

              Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 1 April 2011

              Permissions

              Request permissions about this article.

              Request Permissions

              Check for updates

              Qualifiers

              • research-article
              • Popular
              • Refereed

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader

            HTML Format

            View this article in HTML Format .

            View HTML Format