Share This Article:

A Survey of Concepts Location Enhancement for Program Comprehension and Maintenance

Abstract Full-Text HTML Download Download as PDF (Size:351KB) PP. 413-421
DOI: 10.4236/jsea.2014.75038    2,616 Downloads   3,513 Views   Citations

ABSTRACT

When correcting a fault, adding a new concept or feature, or adapting a system to conform to a new platform, software engineers must first find the relevant parts of the code that correspond to a particular change. This is termed as concept or feature location process. Several techniques have been introduced which automate some or all of the process of concept location. Those techniques rely heavily on code comprehension as it is considered a prerequisite when attempting to maintain any software system. It provides a comprehensive overview of large body work which is beneficial to researchers and practitioners. This paper presents an overview of code comprehension categorization and consequence. A systematic literature survey of concept location enhancement techniques is also presented. Moreover, the paper presents an overview of the role of concept location in program comprehension and maintenance and discusses information retrieval techniques to advance concept location.

Conflicts of Interest

The authors declare no conflicts of interest.

Cite this paper

Alhindawi, N. , Alsakran, J. , Rodan, A. and Faris, H. (2014) A Survey of Concepts Location Enhancement for Program Comprehension and Maintenance. Journal of Software Engineering and Applications, 7, 413-421. doi: 10.4236/jsea.2014.75038.

References

[1] Cleary, B., Exton, C., Buckley, J. and English, M. (2009) An Empirical Analysis of Information Retrieval Based Concept Location Techniques in Software Comprehension. Empirical Software Engineering, 14, 93-130. http://dx.doi.org/10.1007/s10664-008-9095-3
[2] Maletic, J.I. and Kagdi, H. (2008) Expressiveness and Effectiveness of Program Comprehension: Thoughts on Future Research Directions. Frontiers of Software Maintenance (FoSM), Beijing, 28 September-4 October 2008, 31-37.
[3] Maletic, J.I. and Marcus, A. (2001) Supporting Program Comprehension Using Semantic and Structural Information. 23rd International Conference on Software Engineering (ICSE), Toronto, 12-19 May 2001,103-112.
[4] Turver, R.J. and Munro, M. (1994) An Early Impact Analysis Technique for Software Maintenance. Journal of Software Maintenance: Research and Practice, 6, 35-52.
http://dx.doi.org/10.1002/smr.4360060104
[5] Binkley, D. and Lawrie, D. (2010) Information Retrieval Applications in Software Development. In: Laplante, P., Ed., Encyclopedia of Software Engineering, Taylor & Francis LLC, London, 231-242.
[6] Binkley, D. and Lawrie, D. (2010) Information Retrieval Applications in Software Maintenance and Evolution. In: Laplante, P., Ed., Encyclopedia of Software Engineering, Taylor & Francis LLC, London, 454-463..
[7] Marcus, A., Sergeyev, A., Rajlich, V. and Maletic, J.I. (2004) An Information Retrieval Approach to Concept Location in Source Code. 11th Working Conference on Reverse Engineering, IEEE Computer Society, Delft, 8-12 November 2004, 214-223.
[8] Storey, M. (2005) Theories, Methods and Tools in Program Comprehension: Past, Present and Future. 13th International Workshop on Program Comprehension (IWPC), St. Louis, 15-16 May 2005, 181-191. http://dx.doi.org/10.1109/WPC.2005.38
[9] Brooks, R. (1983) Towards a Theory of the Comprehension of Computer Programs. International Journal of Man-Machine Studies, 18, 543-554. http://dx.doi.org/10.1016/S0020-7373(83)80031-5
[10] Toffolon, C. and Dakhli, S. (2008) An Iterative Meta-Lifecycle for Software Development, Evolution and Maintenance. 3rd International Conference on Software Engineering Advances (ICSEA), 15-16 May 2005, 181-191.
[11] Kagdi, H., Collard, M.L. and Maletic, J.I. (2007) A Survey and Taxonomy of Approaches for Mining Software Repositories in the Context of Software Evolution. Software Maintainance and Evolution, 19, 77-131. http://dx.doi.org/10.1002/smr.344
[12] Rist, R. (1986) Plans in Programming: Definition, Demonstration, and Development. First Workshop on Empirical Studies of Programmers on Empirical Studies of Programmers, Ablex Publishing Corp., Washington, D.C., 28-47.
[13] Shneiderman, B. and Mayer, R. (1979) Syntactic/Semantic Interactions in Programmer Behavior: A Model and Experimental Results. International Journal of Computer & Information Sciences, 8, 219-238. http://dx.doi.org/10.1007/BF00977789
[14] Littman, D.C., Pinto, J., Letovsky, S. and Soloway E. (1986) Mental Models and Software Maintenance. First Workshop on Empirical Studies of Programmers on Empirical Studies of Programmers, Ablex Publishing Corp., Washington, D.C., 80-98.
[15] Mayrhauser, A.V. and Vans, A.M. (1997) Program Understanding Behavior during Debugging of Large Scale Software. 7th Workshop on Empirical Studies of Programmers, ACM, Alexandria, 157-179.
[16] Etzkorn, L.H., L.L. Bowen and Davis, C.G. (1999) An Approach to Program Understanding by Natural Language Understanding. Natural Language Engineering, 5, 219-236.
http://dx.doi.org/10.1017/S1351324999002120
[17] Hartman, J.E. (1991) Automatic Control Understanding for Natural Programs. University of Texas at Austin, Austin.
[18] von Mayrhauser, A. and Vans, A.M. (1994) Program Understanding—A Survey. Department of Computer Science, Colorado State University, Fort Collins, 32.
[19] Biggerstaff, T. and Richter, C. (1987) Reusability Framework, Assessment, and Directions. IEEE Software, 4, 41-49. http://dx.doi.org/10.1109/MS.1987.230095
[20] Kim, Y. and Stohr, E.A. (1998) Software Reuse: Survey and Research Directions. Journal of Management Information Systems, 14, 113-147.
[21] Canfora, G., Cimitile, A. and Munro, M. (1993) A Reverse Engineering Method for Identifying Reusable Abstract Data Types. Proceedings of Working Conference on Reverse Engineering, Baltimore, 21-23 May 1993, 73-82. http://dx.doi.org/10.1109/WCRE.1993.287777
[22] Choi, S.C. and Scacchi, W. (1990) Extracting and Restructuring the Design of Large Systems. IEEE Software, 7, 66-71. http://dx.doi.org/10.1109/52.43051
[23] Penta, M.D., Stirewalt, R.E.K. and Kraemer, E. (2007) Designing Your Next Empirical Study on Program Comprehension. 15th IEEE International Conference on Program Comprehension (ICPC), Banff, 26-29 June 2007, 281-285. http://dx.doi.org/10.1109/ICPC.2007.17
[24] Storey, M.-A.D., Wong, K. and Muller, H.A. (1997) How Do Program Understanding Tools Affect How Programmers Understand Programs. Proceedings of the 4th IEEE Working Conference on Reverse Engineering (WCRE), Amsterdam, 6-8 October 1997, 12-21.
[25] Pennington, N. (1987) Stimulus Structures and Mental Representations in Expert Comprehension of Computer Programs. Cognitive Psychology, 19, 295-341.
http://dx.doi.org/10.1016/0010-0285(87)90007-7
[26] Poshyvanyk, D. (2009) Using Information Retrieval to Support Software Maintenance Tasks. IEEE International Conference on Software Maintenance, Edmonton, 20-26 September 2009, 453-456.
[27] Salton, G. and McGill, M.J. (1983) Introduction to Modern Information Retrieval. McGraw-Hill, New York.
[28] Dit, B., Revelle, M., Gethers, M. and Poshyvanyk, D. (2011) Feature Location in Source Code: A Taxonomy and Survey. Journal of Software Maintenance and Evolution: Research and Practice, 25, 53-95. http://dx.doi.org/10.1002/smr.567
[29] Liu, D.P., Marcus, A., Poshyvanyk, D. and Rajlich, V. (2007) Feature Location via Information Retrieval Based Filtering of a Single Scenario Execution Trace. Proceedings of the 22nd IEEE/ACM International Conference on Automated Software Engineering, Atlanta, 5-9 November 2007, 234-243.
http://dx.doi.org/10.1145/1321631.1321667
[30] Wilde, N. and Scully, M.C. (1995) Software Reconnaissance: Mapping Program Features to Code. Journal of Software Maintenance, 7, 49-62.
[31] Poshyvanyk, D., Gueheneuc, Y.-G., Marcus, A., Antoniol, G. and Rajlich, V. (2007) Feature Location Using Probabilistic Ranking of Methods Based on Execution Scenarios and Information Retrieval. IEEE Transactions on Software Engineering, 33, 420-432. http://dx.doi.org/10.1109/TSE.2007.1016
[32] Biggerstaff, T.J., Mitbander, B.G. and Webster, D.E. (1994) Program Understanding and the Concept Assignment Problem. Communications of the ACM, 37, 72-82.
http://dx.doi.org/10.1145/175290.175300
[33] Chen, K.R. and Rajlich, V. (2000) Case Study of Feature Location Using Dependence Graph. Proceedings of the 8th International Workshop on Program Comprehension, Limerick, 10-11 June 2000, 241-247.
[34] Wong, W.E., Gokhale, S.S. and Horgan, J.R. (2000) Quantifying the Closeness between Program Components and Features. Journal of Systems and Software, 54, 87-98.
[35] Eisenbarth, T., Koschke, R. and Simon, D. (2003) Locating Features in Source Code. IEEE Transactions on Software Engineering, 29, 210-224.
[36] Revelle, M., Dit, B. and Poshyvanyk, D. (2010) Using Data Fusion and Web Mining to Support Feature Location in Software. Proceedings of the 18th IEEE International Conference on Program Comprehension, Braga, 30 June-2 July 2010, 14-23.
[37] ACM Transactions on Programming Languages and Systems (TOPLAS), ACM.
[38] Ferrante, J., Ottenstein, K.J. and Warren, J.D. (1987) The Program Dependence Graph and Its Use in Optimization. ACM Transactions on Programming Languages and Systems, 9, 319-349.
http://dx.doi.org/10.1145/24039.24041
[39] Wilde, N., Gomez, J.A. Gust, T. and Strasburg, D. (1992) Locating User Functionality in Old Code. Conference on Software Maintenance, Orlando, 9-12 November 1992, 200-205.
[40] Maletic, J.I. and Marcus, A. (2000) Using Latent Semantic Analysis to Identify Similarities in Source Code to Support Program Understanding. 12th IEEE International Conference on Tools with Artificial Intelligence (ICTAI), Vanvouver, 13-15 November 2000, 46-53.
[41] Marcus, A. and Poshyvanyk, D. (2005) The Conceptual Cohesion of Classes. Proceedings of 21st IEEE International Conference on Software Maintenance (ICSM), Budapest, 26-29 September 2005, 133-142. http://dx.doi.org/10.1109/ICSM.2005.89
[42] Poshyvanyk, D. and Marcus, A. (2007) Combining Formal Concept Analysis with Information Retrieval for Concept Location in Source Code. 15th IEEE International Conference on Program Comprehension (ICPC), Banff, 26-29 June 2007, 37-48. http://dx.doi.org/10.1109/ICPC.2007.13
[43] Revelle, M. and Poshyvanyk, D. (2009) An Exploratory Study on Assessing Feature Location Techniques. 17th IEEE International Conference on Program Comprehension (ICPC), Vancouver, 17-19 May 2009, 218-222.
[44] Marcus, A. and Haiduc, S. (2013) Text Retrieval Approaches for Concept Location in Source Code. In: Lucia, A. and Ferrucci, F., Eds., Software Engineering, 7171, Springer, Berlin Heidelberg, 126-158.
[45] Hill, E., Pollock, L. and Vijay-Shanker, K. (2011) Improving Source Code Search with Natural Language Phrasal Representations of Method Signatures. 26th IEEE/ACM International Conference on Automated Software Engineering, Lawrence, 6-10 November 2011, 524-527.
[46] Pollock, L., Vijay-Shanker, K., Shep, D., Hill, E., Fry, Z.P. and Maloor, K. (2007) Introducing Natural Language Program Analysis. 7th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, San Diego, 13-14 June 2007, 15-16.
[47] Poshyvanyk, D., Gethers, M. and Marcus, A. (2013) Concept Location Using Formal Concept Analysis and Information Retrieval. ACM Transactions on Software Engineering and Methodology (TOSEM), 21, 1-34.
[48] McMillan, C., Grechanik, M., Poshyvanyk, D., Xie, Q. and Chen, F. (2011) Portfolio: Finding Relevant Functions and Their Usage. 33rd International Conference on Software Engineering (ICSE), Honolulu, 21-28 May 2011, 111-120.
[49] Poshyvanyk, D., Marcus, A., Ferenc, R. and Gyimóthy, T. (2009) Using Information Retrieval Based Coupling Measures for Impact Analysis. Empirical Software Engineering, 14, 5-32.
[50] Maarek, Y.S., Berry, D.M. and Kaiser, G.E. (1991) An Information Retrieval Approach for Automatically Constructing Software Libraries. IEEE Transactions on Software Engineering, 17, 800-813.
http://dx.doi.org/10.1109/32.83915
[51] Marcus, A. and Maletic, J.I. (2003) Recovering Documentation-to-Source-Code Traceability Links Using Latent Semantic Indexing. 25th International Conference on Software Engineering, Portland, 3-10 May 2003, 125-135.
[52] Poshyvanyk, D., Gueheneuc, Y.-G., Marcus, A., Antoniol, G. and Rajlich, V. (2006) Combining Probabilistic Ranking and Latent Semantic Indexing for Feature Identification. 14th IEEE International Conference on Program Comprehension (ICPC), Athens, 14-16 June 2006, 137-148.
[53] Savage, T., Dit, B., Gethers, M. and Poshyvanyk, D. (2010) TopicXP: Exploring Topics in Source Code Using Latent Dirichlet Allocation. 2010 IEEE International Conference on Software Maintenance (ICSM), Timisoara, 12-18 September 2010, 1-6.
[54] Haiduc, S., Aponte, J., Moreno, L. and Marcus, A. (2010) On the Use of Automated Text Summarization Techniques for Summarizing Source Code. 17th Working Conference on Reverse Engineering (WCRE), Beverly, 13-16 October 2010, 35-44.
[55] Salton, G., Wong, A. and Yang, C.S. (1975) A Vector Space Model for Automatic Indexing. Communications of the ACM, 18, 613-620. http://dx.doi.org/10.1145/361219.361220
[56] Blei, D.M., Ng, A.Y. and Jordan, M.I. (2003) Latent Dirichlet Allocation. The Journal of Machine Learning Research, 3, 993-1022.
[57] Linstead, E., Lopes, C. and Baldi, P. (2008) An Application of Latent Dirichlet Allocation to Analyzing Software Evolution. 7th International Conference on Machine Learning and Applications, San Diego, 11-13 December 2008, 813-818.
[58] Tian, K., Revelle, M. and Poshyvanyk, D. (2009) Using Latent Dirichlet Allocation for Automatic Categorization of Software. 6th IEEE International Working Conference on Mining Software Repositories (MSR), Vancouver, 16-17 May 2009, 163-166.
[59] Anderson, E., Bai, Z., Bischof, C., Blackford, L.S., Demmel, J., Dongarra, J., Du Croz, J., Greenbaum, A., Hammarling, S., McKenney, A. and Sorensen, D. (1999) LAPACK Users’ Guide. 3rd Edition, Society for Industrial and Applied Mathematics. http://dx.doi.org/10.1137/1.9780898719604
[60] Alhindawi, N., Dragan, N., Collard, M.L. and Maletic, J.I. (2013) Improving Feature Location by Enhancing Source Code with Stereotypes. 29th IEEE International Conference on Software Maintenance (ICSM), Eindhoven, 22-28 September 2013, 300-309.
http://dx.doi.org/10.1109/ICSM.2013.41
[61] Müller, H.-M., Kenny, E.E. and Sternberg, P.W. (2004) Textpresso: An Ontology-Based Information Retrieval and Extraction System for Biological Literature. PLoS Biology, 2, e309.
http://dx.doi.org/10.1371/journal.pbio.0020309
[62] Teevan, J. (2001) Improving Information Retrieval with Textual Analysis: Bayesian Models and Beyond. Master’s Thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge.
[63] Binkley, D. and Lawrie, D. (2003) Information Retrieval and the Philosophy of Language. Annual Review of Information Science and Technology, 37, 3-50.
[64] Huibers, Th.W.Ch., Lalmas, M. and van Rijsbergen, C.J. (1996) Information Retrieval and Situation Theory. SIGIR Forum, 30, 11-25.
[65] Maletic, J.I. and Marcus, A. (2000) Support for Software Maintenance Using Latent Semantic Analysis. 4th Annual IASTED International Conference on Software Engineering and Applications (SEA), Las Vegas.
[66] Maletic, J.I. and Valluri, N. (1999) Automatic Software Clustering via Latent Semantic Analysis. 14th IEEE International Conference on Automated Software Engineering (ASE), Cocoa Beach, October 1999, 251-254.
[67] Denys, P., Andrian, M., et al. (2005) IRiSS—A Source Code Exploration Tool. Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM), Budapest, 26-29 September 2005, 69-72.
[68] Poshyvanyk, D. and Marcus, A. (2007) Combining Formal Concept Analysis with Information Retrieval for Concept Location in Source Code. 15th IEEE International Conference on Program Comprehension (ICPC), Banff, 26-29 June 2007, 37-48. http://dx.doi.org/10.1109/ICPC.2007.13

  
comments powered by Disqus

Copyright © 2018 by authors and Scientific Research Publishing Inc.

Creative Commons License

This work and the related PDF file are licensed under a Creative Commons Attribution 4.0 International License.