Skip to main content

Natural Language-Based Software Analyses and Tools for Software Maintenance

  • Chapter
Software Engineering (ISSSE 2010, ISSSE 2009, ISSSE 2011)

Abstract

Significant portions of software life cycle resources are devoted to program maintenance, which motivates the development of automated techniques and tools to support the tedious, error-prone tasks. Natural language clues from programmers’ naming in literals, identifiers, and comments can be leveraged to improve the effectiveness of many software tools. For example, they can be used to increase the accuracy of software search tools, improve the ability of program navigation tools to recommend related methods, and raise the accuracy of other program analyses by providing access to natural language information. This chapter focuses on how to capture, model, and apply the programmers’ conceptual knowledge expressed in both linguistic information as well as programming language structure and semantics. We call this kind of analysis Natural Language Program Analysis (NLPA) since it combines natural language processing techniques with program analysis to extract information for analysis of the source program.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 49.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abadi, A., Nisenson, M., Simionovici, Y.: A Traceability Technique for Specifications. In: ICPC 2008: Proceedings of the 16th IEEE International Conference on Program Comprehension, pp. 103–112 (2008)

    Google Scholar 

  2. Abebe, S., Haiduc, S., Marcus, A., Tonella, P., Antoniol, G.: Analyzing the Evolution of the Source Code Vocabulary, pp. 189–198 (2009)

    Google Scholar 

  3. Antoniol, G., Gueheneuc, Y.G., Merlo, E., Tonella, P.: Mining the Lexicon Used by Programmers during Sofware Evolution. In: IEEE International Conference on Software Maintenance, pp. 14–23 (2007)

    Google Scholar 

  4. Antoniol, G., Canfora, G., Casazza, G., Lucia, A.D., Merlo, E.: Recovering Traceability Links between Code and Documentation. IEEE Transactions on Software Engineering 28(10), 970–983 (2002)

    Article  Google Scholar 

  5. Antoniol, G., Gueheneuc, Y.: Feature Identification: An Epidemiological Metaphor. IEEE Transactions on Software Engineering 32(9), 627–641 (2006)

    Article  Google Scholar 

  6. Ball, T., Larus, J.R.: Branch Prediction for Free. In: PLDI 1993: Proceedings of the ACM SIGPLAN 1993 Conference on Programming Language Design and Implementation, pp. 300–313. ACM Press, New York (1993)

    Chapter  Google Scholar 

  7. Biggerstaff, T.J.: Design Recovery for Maintenance and Reuse. Computer 22(7), 36–49 (1989)

    Article  Google Scholar 

  8. Biggerstaff, T.J., Mitbander, B.G., Webster, D.: The Concept Assignment Problem in Program Understanding. In: ICSE 1993: Proceedings of the 15th International Conference on Software Engineering, pp. 482–498 (1993)

    Google Scholar 

  9. Binkley, D., Lawrie, D., Maex, S., Morrell, C.: Impact of Limited Memory Resources. In: Proceedings of the 16th IEEE International Conference on Program Comprehension (2008)

    Google Scholar 

  10. Booch, G.: Object-oriented Design. Ada Lett. I(3), 64–76 (1982)

    Article  MATH  Google Scholar 

  11. Buse, R.P., Weimer, W.R.: Automatic Documentation Inference for Exceptions. In: International Symp. on Software Testing and Analysis, 2008, pp. 273–282. ACM (2008)

    Google Scholar 

  12. Caprile, B., Tonella, P.: Nomen Est Omen: Analyzing the Language of Function Identifiers. In: WCRE 1999: Proceedings of the 6th Working Conference on Reverse Engineering, pp. 112–122 (1999)

    Google Scholar 

  13. Caprile, B., Tonella, P.: Restructuring Program Identifier Names. In: ICSM 2000: Proceedings of the International Conference on Software Maintenance (ICSM 2000), p. 97. IEEE Computer Society, Washington, DC (2000)

    Google Scholar 

  14. Carroll, J., Briscoe, T.: High Precision Extraction of Grammatical Relations. In: 7th International Workshop on Parsing Technologies (2001), citeseer.ist.psu.edu/article/carroll01high.html

  15. Chen, K., Rajlich, V.: Case Study of Feature Location Using Dependence Graph. In: IWPC 2000: Proceedings of the 8th International Workshop on Program Comprehension, pp. 241–249 (2000)

    Google Scholar 

  16. Crosby, M.E., Scholtz, J., Wiedenbeck, S.: The Roles Beacons Play in Comprehension for Novice and Expert Programmers. In: 14th Workshop of the Psychology of Programming Interest Group, pp. 18–21. Brunel University (2002)

    Google Scholar 

  17. De Lucia, A., Oliveto, R., Tortora, G.: Assessing IR-based Traceability Recovery Tools through Controlled Experiments. Empirical Softw. Engg. 14(1), 57–92 (2009)

    Article  Google Scholar 

  18. Deissenboeck, F., Pizka, M.: Concise and Consistent Naming. Software Quality Control 14(3), 261–282 (2006)

    Article  Google Scholar 

  19. Eaddy, M., Aho, A.V., Antoniol, G., Gueheneuc, Y.: Cerberus: Tracing Requirements to Source Code Using Information Retrieval, Dynamic Analysis, and Program Analysis. In: ICPC 2008: Proceedings of the 16th IEEE International Conference on Program Comprehension. IEEE Computer Society, Washington, DC (2008)

    Google Scholar 

  20. Enslen, E., Hill, E., Pollock, L., Vijay-Shanker, K.: Mining Source Code to Automatically Split Identifiers for Software Analysis. In: Proceedings of the 6th International Working Conference on Mining Software Repositories, MSR 2009, pp. 71–80 (2009)

    Google Scholar 

  21. Erickson, T.E.: An Automated FORTRAN Documenter. In: Proceedings of the 1st Annual International Conference on Systems Documentation, pp. 40–45. ACM, New York (1982)

    Chapter  Google Scholar 

  22. Erlikh, L.: Leveraging Legacy System Dollars for E-Business. IT Professional 2(3), 17–23 (2000)

    Article  Google Scholar 

  23. Falleri, J.-R., Huchard, M., Lafourcade, M., Nebut, C., Prince, V., Dao, M.: Automatic Extraction of a WordNet-Like Identifier Network from Software. In: 18th Int’l Conf. on Program Comprehension, pp. 4–13. IEEE (2010)

    Google Scholar 

  24. Feild, H., Binkley, D., Lawrie, D.: An Empirical Comparison of Techniques for Extracting Concept Abbreviations from Identifiers. In: Proceedings of IASTED International Conference on Software Engineering and Applications, SEA 2006 (2006)

    Google Scholar 

  25. Feng, F., Croft, W.B.: Probabilistic Techniques for Phrase Extraction. Information Processing and Management 37(2), 199–220 (2001)

    Article  MATH  Google Scholar 

  26. Fischer, G., Nieper-Lemke, H.: Helgon: Extending the Retrieval by Reformulation Paradigm. In: CHI 1989: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp. 357–362 (1989)

    Google Scholar 

  27. Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley (1999)

    Google Scholar 

  28. Fry, Z.P., Shepherd, D., Hill, E., Pollock, L., Vijay-Shanker, K.: Analysing Source Code: Looking for Useful Verb-Direct Object Pairs in all the Right Places. Software, IET 2(1), 27–36 (2008)

    Article  Google Scholar 

  29. Furnas, G.W., Landauer, T.K., Gomez, L.M., Dumais, S.T.: The Vocabulary Problem in Human-System Communication. Communications of the ACM 30(11), 964–971 (1987)

    Article  Google Scholar 

  30. Gosling, J., Joy, B., Steele, G.: Java Language Specification, (September 2006), http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html

  31. Haiduc, S., Marcus, A.: On the Use of Domain Terms in Source Code. In: ICPC 2008: Proceedings of the 16th IEEE International Conference on Program Comprehension, pp. 113–122 (2008)

    Google Scholar 

  32. Hayase, Y., Kashima, Y., Manabe, Y., Inoue, K.: Building Domain Specific Dictionaries of Verb-Object Relation from Source Code. In: 15th European Conference on Software Maintenance and Reengineering (CSMR 2011), pp. 93–100. IEEE Computer Society (2011)

    Google Scholar 

  33. Henninger, S.: Using Iterative Refinement to Find Reusable Software. IEEE Software 11(5), 48–59 (1994)

    Article  Google Scholar 

  34. Hill, E.: Integrating Natural Language and Program Structure Information to Improve Software Search and Exploration. Ph.D. thesis, University of Delaware (2010)

    Google Scholar 

  35. Hill, E., Fry, Z.P., Boyd, H., Sridhara, G., Novikova, Y., Pollock, L., Vijay- Shanker, K.: AMAP: Automatically Mining Abbreviation Expansions in Programs to Enhance Software Maintenance Tools. In: MSR 2008: Proceedings of the 5th International Working Conference on Mining Software Repositories, IEEE Computer Society, Washington, DC (2008)

    Google Scholar 

  36. Hill, E., Pollock, L., Vijay-Shanker, K.: Exploring the Neighborhood with Dora to Expedite Software Maintenance. In: ASE 2007: Proceedings of the 22nd IEEE International Conference on Automated Software Engineering (ASE 2007), pp. 14–23. IEEE Computer Society, Washington, DC (2007)

    Google Scholar 

  37. Hill, E., Pollock, L., Vijay-Shanker, K.: Automatically Capturing Source Code Context of NL-Queries for Software Maintenance and Reuse. In: ICSE 2009: Proceedings of the 31st International Conference on Software Engineering (2009)

    Google Scholar 

  38. Høst, E., Østvold, B.: Canonical Method Names for Java. In: Malloy, B., Staab, S., van den Brand, M. (eds.) SLE 2010. LNCS, vol. 6563, pp. 226–245. Springer, Heidelberg (2011)

    Chapter  Google Scholar 

  39. Høst, E.W., Østvold, B.M.: The Programmer’s Lexicon, Volume I: The Verbs. In: SCAM 2007: Proceedings of the 7th IEEE International Working Conference on Source Code Analysis and Manipulation, pp. 193–202. IEEE Computer Society, Washington, DC (2007)

    Google Scholar 

  40. Høst, E.W., Østvold, B.M.: Debugging Method Names. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 294–317. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  41. Høst, E.W., Østvold, B.M.: The Java Programmer’s Phrase Book. In: Gašević, D., Lämmel, R., Van Wyk, E. (eds.) SLE 2008. LNCS, vol. 5452, pp. 322–341. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  42. IBM: Eclipse IDE (2010), http://www.eclipse.org

  43. Ishio, T., Niitani, R., Murphy, G.C., Inoue, K.: A Program Slicing Approach for Locating Functional Concerns. Tech. rep., Graduate School of Information Science and Technology, Osaka University (March 2007), http://sel.ist.osaka-u.ac.jp/~ishio/TR-slicing2007.pdf

  44. Kajko-Mattsson, M.: A Survey of Documentation Practice within Corrective Maintenance. Empirical Software Engineering 10(1), 31–55 (2005)

    Article  Google Scholar 

  45. Knuth, D.E.: Literate Programming. The Computer Journal 27(2), 97–111 (1984)

    Article  MATH  Google Scholar 

  46. Kuhn, A., Ducasse, S., Gírba, T.: Semantic Clustering: Identifying Topics in Source Code. Information Systems and Technologies 49(3), 230–243 (2007)

    Google Scholar 

  47. Lawrance, J., Bellamy, R., Burnett, M., Rector, K.: Using Information Scent to Model the Dynamic Foraging Behavior of Programmers in Maintenance Tasks. In: CHI 2008: Proceeding of the Twenty-Sixth Annual SIGCHI Conference on Human Factors in Computing Systems, pp. 1323–1332. ACM, New York (2008)

    Chapter  Google Scholar 

  48. Lawrie, D., Feild, H., Binkley, D.: An Empirical Study of Rules for well-formed Identifiers. Journal of Software Maintenance and Evolution 19(4), 205–229 (2007)

    Article  Google Scholar 

  49. Lawrie, D., Feild, H., Binkley, D.: Extracting Meaning from Abbreviated Identifiers. In: SCAM 2007: Proceedings of the 7th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007), pp. 213–222 (2007)

    Google Scholar 

  50. Lawrie, D., Morrell, C., Feild, H., Binkley, D.: What’s in a Name? A Study of Identifiers. In: ICPC 2006: Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC 2006), pp. 3–12. IEEE Computer Society, Washington, DC (2006)

    Google Scholar 

  51. Lawrie, D., Binkley, D., Morrell, C.: Normalizing Source Code Vocabulary. In: Working Conference on Reverse Engineering (WCRE), pp. 3–12 (2010)

    Google Scholar 

  52. Lawrie, D., Feild, H., Binkley, D.: Leveraged Quality Assessment using Information Retrieval Techniques. In: ICPC 2006: Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC 2006), pp. 149–158. IEEE Computer Society, Washington, DC (2006)

    Google Scholar 

  53. Liblit, B., Begel, A., Sweetser, E.: Cognitive Perspectives on the Role of Naming in Computer Programs. In: Proceedings of the 18th Annual Psychology of Programming Workshop (2006)

    Google Scholar 

  54. Linstead, E., Bajracharya, S., Ngo, T., Rigor, P., Lopes, C., Baldi, P.: Sourcerer: Mining and searching internet-scale software repositories. Data Mining and Knowledge Discovery 18(2), 300–336 (2009)

    Article  MathSciNet  Google Scholar 

  55. Linstead, E., Rigor, P., Bajracharya, S., Lopes, C., Baldi, P.: Mining Concepts from Code with Probabilistic Topic Models. In: ASE 2007: Proceedings of the Twenty-Second IEEE/ACM International Conference on Automated Software Engineering, pp. 461–464. ACM, New York (2007)

    Google Scholar 

  56. Long, F., Wang, X., Cai, Y.: API Hyperlinking via Structural Overlap. In: ACM SIGSOFT Symposium on the Foundations of Software Engineering. ACM (2009)

    Google Scholar 

  57. Lukins, S., Kraft, N., Etzkorn, L.: Source Code Retrieval for Bug Localization Using Latent Dirichlet Allocation. In: WCRE 2008: Proceedings of the 15th Working Conference on Reverse Engineering, pp. 155–164 (2008)

    Google Scholar 

  58. Maarek, Y.S., Berry, D.M., Kaiser, G.E.: An Information Retrieval Approach for Automatically Constructing Software Libraries. IEEE Transactions on Software Engineering 17(8), 800–813 (1991)

    Article  Google Scholar 

  59. Madani, N., Guerrouj, L., Penta, M.D., Gueheneuc, Y.G., Antoniol, G.: Recognizing Words from Source Code Identifiers using Speech Recognition Techniques. In: European Conference on Software Maintenance and Reengineering, CSMR (2010)

    Google Scholar 

  60. Malik, S.: Parsing Java Method Names for Improved Software Analysis. Tech. rep., University of Delaware (Senior Thesis) (2011)

    Google Scholar 

  61. Mani, I.: Automatic Summarization. John Benjamins (2001)

    Google Scholar 

  62. Manning, C., Schütze, H.: Foundations of Statistical Natural Language Processing. MIT Press, Cambridge (1999)

    MATH  Google Scholar 

  63. Manning, C.D., Raghavan, P., Schütze, H.: Introduction to Information Retrieval. Cambridge University Press, New York (2008)

    Book  MATH  Google Scholar 

  64. Marcus, A., Maletic, J.I.: Recovering Documentation-to-Source-Code Traceability Links using Latent Semantic Indexing. In: ICSE 2003: Proceedings of the 25th International Conference on Software Engineering, pp. 125–135 (2003)

    Google Scholar 

  65. Marcus, A., Poshyvanyk, D.: The Conceptual Cohesion of Classes. In: ICSM 2005: Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM 2005), pp. 133–142. IEEE Computer Society, Washington, DC (2005)

    Google Scholar 

  66. Marcus, A., Sergeyev, A., Rajlich, V., Maletic, J.I.: An Information Retrieval Approach to Concept Location in Source Code. In: WCRE 2004: Proceedings of the 11th Working Conference on Reverse Engineering (WCRE 2004), pp. 214–223 (2004)

    Google Scholar 

  67. Maskeri, G., Sarkar, S., Heafield, K.: Mining Business Topics in Source Code using Latent Dirichlet Allocation. In: ISEC 2008: Proceedings of the 1st India Software Engineering Conference, pp. 113–120 (2008)

    Google Scholar 

  68. McMillan, C., Poshyvanyk, D., Revelle, M.: Combining Textual and Structural Analysis of Software Artifacts for Traceability Link Recovery. In: TEFSE 2009: Proceedings of the 2009 ICSE Workshop on Traceability in Emerging Forms of Software Engineering, pp. 41–48. IEEE Computer Society, Washington, DC (2009)

    Chapter  Google Scholar 

  69. Michail, A., Notkin, D.: Assessing Software Libraries by Browsing Similar Classes, Functions and Relationships. In: ICSE 1999: Proceedings of the 21st International Conference on Software Engineering, pp. 463–472. IEEE Computer Society Press, Los Alamitos (1999)

    Google Scholar 

  70. Miller, G.: WordNet: a lexical database for English. Communications of the ACM, pp. 39–41 (1995)

    Google Scholar 

  71. Ohba, M., Gondow, K.: Toward Mining “Concept Keywords” from Identifiers in Large Software Projects. In: MSR 2005: Proceedings of the 2005 International Workshop on Mining Software Repositories, pp. 1–5 (2005)

    Google Scholar 

  72. Poshyvanyk, D., Marcus, A.: Combining Formal Concept Analysis with Information Retrieval for Concept Location in Source Code. In: ICPC 2007: Proceedings of the 15th IEEE International Conference on Program Comprehension, pp. 37–48. IEEE Computer Society, Washington, DC (2007)

    Google Scholar 

  73. Poshyvanyk, D., Marcus, A., Dong, Y.: JIRiSS – an Eclipse Plug-in for Source Code Exploration. In: Proceedings of the 14th International Conference on Program Comprehension (ICPC 2006), pp. 252–255 (2006)

    Google Scholar 

  74. Poshyvanyk, D., Petrenko, M., Marcus, A., Xie, X., Liu, D.: Source Code Exploration with Google. In: ICSM 2006: Proceedings of the 22nd IEEE International Conference on Software Maintenance (ICSM 2006), pp. 334–338 (2006)

    Google Scholar 

  75. Rao, S., Kak, A.: Retrieval from Software Libraries for Bug Localization: a Comparative Study of Generic and Composite Text Models. In: Proceeding of the 8th Working Conference on Mining Software Repositories, MSR 2011, pp. 43–52. ACM, New York (2011), http://doi.acm.org/10.1145/1985441.1985451

    Google Scholar 

  76. Ratanotayanon, S., Sim, S.E., Raycraft, D.J.: Cross-artifact Traceability using Lightweight Links. In: TEFSE 2009: Proceedings of the 2009 ICSE Workshop on Traceability in Emerging Forms of Software Engineering, pp. 57–64. IEEE Computer Society, Washington, DC (2009)

    Chapter  Google Scholar 

  77. Reiter, E., Dale, R.: Building Natural Language Generation Systems. Cambridge University Press (2000)

    Google Scholar 

  78. Revelle, M., Dit, B., Poshyvanyk, D.: Using Data Fusion and Web Mining to Support Feature Location in Software. In: IEEE 18th International Conference on Program Comprehension, ICPC 2010 (2010)

    Google Scholar 

  79. Roach, D., Berghel, H., Talburt, J.R.: An Interactive Source Commenter for Prolog Programs. SIGDOC Asterisk J. Comput. Doc. 14(4), 141–145 (1990)

    Article  Google Scholar 

  80. Robillard, M.P.: Automatic Generation of Suggestions for Program Investigation. In: ESEC/FSE-13: 10th European Software Engineering Conference Held Jointernationaly with 13th ACM SIGSOFT International Symp on Foundations of Software Engineering, pp. 11–20 (2005)

    Google Scholar 

  81. Robillard, M.P., Coelho, W.: How Effective Developers Investigate Source Code: An Exploratory Study. IEEE Transactions on Software Engineering 30(12), 889–903 (2004)

    Article  Google Scholar 

  82. Robillard, M.P., Murphy, G.C.: Concern Graphs: Finding and Describing Concerns using Structural Program Dependencies. In: ICSE 2002: Proceedings of the 24th International Conference on Software Engineering, pp. 406–416 (2002)

    Google Scholar 

  83. Robillard, M.P., Shepherd, D., Hill, E., Vijay-Shanker, K., Pollock, L.: An Empirical Study of the Concept Assignment Problem. Tech. Rep. SOCS-TR-2007.3, School of Computer Science, McGill University (2007), http://www.cs.mcgill.ca/~martin/concerns/

  84. Robillard, P.N.: Schematic pseudocode for program constructs and its computer automation by SCHEMACODE. Commun. ACM 29(11), 1072–1089 (1986)

    Article  MathSciNet  Google Scholar 

  85. Runeson, P., Alexandersson, M., Nyholm, O.: Detection of Duplicate Defect Reports Using Natural Language Processing. In: ICSE 2007: Proceedings of the 29th International Conference on Software Engineering, pp. 499–510. IEEE Computer Society, Washington, DC (2007)

    Google Scholar 

  86. Saul, Z.M., Filkov, V., Devanbu, P., Bird, C.: Recommending Random Walks. In: ESEC-FSE 2007: Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 15–24. ACM Press, New York (2007)

    Google Scholar 

  87. Shepherd, D., Fry, Z.P., Hill, E., Pollock, L., Vijay-Shanker, K.: Using Natural Language Program Analysis to Locate and Understand Action-Oriented Concerns. In: AOSD 2007: Proceedings of the 6th International Conference on Aspect-Oriented Software Development (2007)

    Google Scholar 

  88. Shepherd, D., Pollock, L., Vijay-Shanker, K.: Towards Supporting on-demand Virtual Remodularization using Program Graphs. In: AOSD 2006: Proceedings of the 5th International Conference on Aspect-Oriented Software Development, pp. 3–14 (2006)

    Google Scholar 

  89. Sinha, V., Karger, D., Miller, R.: Relo: Helping Users Manage Context during Interactive Exploratory Visualization of Large Codebases. In: Visual Languages and Human-Centric Computing, VL/HCC 2006 (2006)

    Google Scholar 

  90. de Souza, S.C.B., Anquetil, N., de Oliveira, K.M.: A Study of the Documentation Essential to Software Maintenance. In: 23rd Annual International Conference on Design of Communication, pp. 68–75. ACM (2005)

    Google Scholar 

  91. Sridhara, G., Hill, E., Muppaneni, D., Pollock, L., Vijay-Shanker, K.: Towards Automatically Generating Summary Comments for Java Methods. In: ASE 2010: Proceedings of the 25th IEEE International Conference on Automated Software Engineering (ASE 2010) (2010)

    Google Scholar 

  92. Sridhara, G., Hill, E., Pollock, L., Vijay-Shanker, K.: Identifying Word Relations in Software: A Comparative Study of Semantic Similarity Tools. In: Proceedings of the 16th IEEE International Conference on Program Comprehension. IEEE (2008)

    Google Scholar 

  93. Sridhara, G., Pollock, L., Vijay-Shanker, K.: Automatically Detecting and Describing High Level Actions within Methods. In: ICSE 2011: Proceedings of the 33rd International Conference on Software Engineering, ICSE 2011, pp. 101–110. ACM, New York (2011)

    Google Scholar 

  94. Sridhara, G., Pollock, L., Vijay-Shanker, K.: Generating Parameter Comments and Integrating with Method Summaries. In: International Conference on Program Comprehension, ICPC 2011 (2011)

    Google Scholar 

  95. Sridharan, M., Fink, S., Bodik, R.: Thin Slicing. In: PLDI 2007: Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation (2007)

    Google Scholar 

  96. SUN: How to Write Doc Comments for the Javadoc Tool, http://java.sun.com/j2se/javadoc/writingdoccomments/

  97. Takang, A.A., Grubb, P.A., Macredie, R.D.: The effects of comments and identifier names on program comprehensibility: an experimental investigation. J. Prog. Lang. 4(3), 143–167 (1996)

    Google Scholar 

  98. Tan, L., Yuan, D., Krishna, G., Zhou, Y.: /*iComment: Bugs or Bad Comments?*/. In: SOSP 2007: Proceedings of Twenty-First ACM SIGOPS Symposium on Operating Systems Principles, pp. 145–158. ACM, New York (2007)

    Chapter  Google Scholar 

  99. Tan, L., Zhou, Y., Padioleau, Y.: aComment: Mining Annotations from Comments and Code to Detect Interrupt Related Concurrency Bugs. In: Proceeding of the 33rd International Conference on Software Engineering, ICSE 2011, pp. 11–20. ACM, New York (2011)

    Google Scholar 

  100. Tarr, P., Ossher, H., Harrison, W., Stanley, M., Sutton, J.: N Degrees of Separation: Multi-Dimensional Separation of Concerns. In: ICSE 1999: Proceedings of the 21st International Conference on Software Engineering, pp. 107–119. IEEE Computer Society Press, Los Alamitos (1999)

    Google Scholar 

  101. Tenny, T.: Program Readability: Procedures Versus Comments. IEEE Trans. Softw. Eng. 14(9), 1271–1279 (1988)

    Article  Google Scholar 

  102. Tip, F.: A Survey of Program Slicing Techniques. Journal of Programming Languages 3(3), 121–189 (1995)

    Google Scholar 

  103. Wang, X., Lai, G., Liu, C.: Recovering Relationships between Documentation and Source Code based on the Characteristics of Software Engineering. Electron. Notes Theor. Comput. Sci. 243, 121–137 (2009)

    Article  Google Scholar 

  104. Warr, F.W., Robillard, M.P.: Suade: Topology-Based Searches for Software Investigation. In: ICSE 2007: Proceedings of the 29th International Conference on Software Engineering, pp. 780–783 (2007)

    Google Scholar 

  105. Woodfield, S.N., Dunsmore, H.E., Shen, V.Y.: The Effect of Modularization and Comments on Program Comprehension. In: Proceedings of the 5th International Conference on Software Engineering. IEEE Press (1981)

    Google Scholar 

  106. Xu, B., Qian, J., Zhang, X., Wu, Z., Chen, L.: A Brief Survey of Program Slicing. SIGSOFT Software Engineering Notes 30(2), 1–36 (2005)

    Article  Google Scholar 

  107. Ying, A.T.T., Tarr, P.L.: Filtering out methods you wish you hadn’t navigated. In: Eclipse 2007: Proceedings of the 2007 OOPSLA Workshop on Eclipse Technology Exchange, pp. 11–15. ACM, New York (2007)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Pollock, L., Vijay-Shanker, K., Hill, E., Sridhara, G., Shepherd, D. (2013). Natural Language-Based Software Analyses and Tools for Software Maintenance. In: De Lucia, A., Ferrucci, F. (eds) Software Engineering. ISSSE ISSSE ISSSE 2010 2009 2011. Lecture Notes in Computer Science, vol 7171. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-36054-1_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-36054-1_4

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-36053-4

  • Online ISBN: 978-3-642-36054-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics