A Survey of Feature Location Techniques

  • Julia RubinEmail author
  • Marsha Chechik


Feature location techniques aim at locating software artifacts that implement a specific program functionality, a.k.a. a feature. These techniques support developers during various activities such as software maintenance, aspect- or feature-oriented refactoring, and others. For example, detecting artifacts that correspond to product line features can assist the transition from unstructured to systematic reuse approaches promoted by software product line engineering (SPLE). Managing features, as well as the traceability between these features and the artifacts that implement them, is an essential task of the SPLE domain engineering phase, during which the product line resources are specified, designed, and implemented. In this chapter, we provide an overview of existing feature location techniques. We describe their implementation strategies and exemplify the techniques on a realistic use-case. We also discuss their properties, strengths, and weaknesses and provide guidelines that can be used by practitioners when deciding which feature location technique to choose. Our survey shows that none of the existing feature location techniques are designed to consider families of related products and only treat different products of a product line as individual, unrelated entities. We thus discuss possible directions for leveraging SPLE architectures in order to improve the feature location process.


Feature location Software maintenance Software product lines 


  1. 1.
    Antoniol, G., Guéhéneuc, Y.G.: Feature identification: an epidemiological metaphor. IEEE TSE 32, 627–641 (2006)Google Scholar
  2. 2.
    Asadi, F., Di Penta, M., Antoniol, G., Guéhéneuc, Y.G.: A heuristic-based approach to identify concepts in execution traces. In: Proc. of CSMR’10, pp. 31–40, 2010Google Scholar
  3. 3.
    Baeza-Yates, R.A., Ribeiro-Neto, B.: Modern Information Retrieval. Addison-Wesley Longman, Boston (1999)Google Scholar
  4. 4.
    Bai, J., Song, D., Bruza, P., Nie, J.Y., Cao, G.: Query expansion using term relationships in language models for information retrieval. In: Proc. of CIKM’05, pp. 688–695, 2005Google Scholar
  5. 5.
    Brin, S., Page, L.: The anatomy of a large-scale hypertextual web search engine. In: Proc. of WWW7, pp. 107–117, 1998Google Scholar
  6. 6.
    Brooks, F.P.  Jr.: No silver bullet essence and accidents of software engineering. IEEE Comput. 20, 10–19 (1987)CrossRefGoogle Scholar
  7. 7.
    Chen, A., Chou, E., Wong, J., Yao, A.Y., Zhang, Q., Zhang, S., Michail, A.: CVSSearch: Searching through source code using CVS comments. In: Proc. of ICSM’01, 2001Google Scholar
  8. 8.
    Chen, K., Rajlich, V.: Case study of feature location using dependence graph. In: Proc. of IWPC’00, pp. 241–249, 2000Google Scholar
  9. 9.
    Cleary, B., Exton, C., Buckley, J., English, M.: An empirical analysis of information retrieval based concept location techniques in software comprehension. J. Empir. Software Eng. 14, 93–130 (2009)CrossRefGoogle Scholar
  10. 10.
    Clements, P.C., Northrop, L.: Software Product Lines: Practices and Patterns. SEI Series in Software Engineering. Addison-Wesley Longman, Boston (2001)Google Scholar
  11. 11.
    Dit, B., Revelle, M., Gethers, M., Poshyvanyk, D.: Feature location in source code: a taxonomy and survey. J. Softw. Evol. Process 25(1), 53–95 (2013)CrossRefGoogle Scholar
  12. 12.
    Eaddy, M., Aho, A.V., Antoniol, G., Guéhéneuc, Y.G.: CERBERUS: Tracing requirements to source code using information retrieval, dynamic analysis, and program analysis. In: Proc. of ICPC’08, pp. 53–62, 2008Google Scholar
  13. 13.
    Edwards, D., Simmons, S., Wilde, N.: An approach to feature location in distributed systems. J. Syst. Software 79, 57–68 (2006)CrossRefGoogle Scholar
  14. 14.
    Eisenbarth, T., Koschke, R., Simon, D.: Locating features in source code. IEEE TSE 29, 210–224 (2003)Google Scholar
  15. 15.
    Eisenberg, A.D., De Volder, K.: Dynamic feature traces: finding features in unfamiliar code. In: Proc.of ICSM’05, pp. 337–346, 2005Google Scholar
  16. 16.
    Ganter, B., Wille, R.: Formal Concept Analysis: Mathematical Foundations. Springer, New York (1999)zbMATHCrossRefGoogle Scholar
  17. 17.
    Goldberg, D.E.: Genetic Algorithms in Search, Optimization and Machine Learning. Addison-Wesley Longman, Boston (1989)zbMATHGoogle Scholar
  18. 18.
    Hill, E., Pollock, L., Vijay-Shanker, K.: Exploring the neighborhood with dora to expedite software maintenance. In: Proc. of ASE’07, pp. 14–23, 2007Google Scholar
  19. 19.
    Kleinberg, J.M.: Authoritative sources in a hyperlinked environment. J. ACM 46, 604–632 (1999)MathSciNetzbMATHCrossRefGoogle Scholar
  20. 20.
    Koschke, R., Quante, J.: On dynamic feature location. In: Proc. of ASE’05, 2005Google Scholar
  21. 21.
    Landauer, T.K., Foltz, P.W., Laham, D.: An introduction to latent semantic analysis. Discourse Process. 25(2–3), 259–284 (1998)CrossRefGoogle Scholar
  22. 22.
    Liu, D., Marcus, A., Poshyvanyk, D., Rajlich, V.: Feature location via information retrieval based filtering of a single scenario execution trace. In: Proc. of ASE’07, 2007Google Scholar
  23. 23.
    Marcus, A.: Semantic-driven program analysis. In: Proc. of ICSM’04, pp. 469–473, 2004Google Scholar
  24. 24.
    Marcus, A., Sergeyev, A., Rajlich, V., Maletic, J.I.: An information retrieval approach to concept location in source code. In: Proc. of WCRE’04, pp. 214–223, 2004Google Scholar
  25. 25.
    Pohl, K., Boeckle, G., van der Linden, F.: Software Product Line Engineering: Foundations, Principles, and Techniques. Springer, New York (2005)Google Scholar
  26. 26.
    Poshyvanyk, D., Marcus, A.: Combining formal concept analysis with information retrieval for concept location in source code. In: Proc. of ICPC’07, pp. 37–48, 2007Google Scholar
  27. 27.
    Poshyvanyk, D., Gueheneuc, Y.G., Marcus, A., Antoniol, G., Rajlich, V.: Feature location using probabilistic ranking of methods based on execution scenarios and information retrieval. IEEE TSE 33, 420–432 (2007)Google Scholar
  28. 28.
    Qin, T., Zhang, L., Zhou, Z., Hao, D., Sun, J.: Discovering use cases from source code using the branch-reserving call graph. In: Proc. of APSEC’03, pp. 60–67, 2003Google Scholar
  29. 29.
    Revelle, M., Dit, B., Poshyvanyk, D.: Using data fusion and web mining to support feature location in software. In: Proc. of ICPC’10, pp. 14–23, 2010Google Scholar
  30. 30.
    Robillard, M.P.: Automatic generation of suggestions for program investigation. In: Proc. of ESEC/FSE-13, pp. 11–20, 2005Google Scholar
  31. 31.
    Robillard, M.P., Dagenais, B.: Retrieving task-related clusters from change history. In: Proc. of WCRE’08, pp. 17–26, 2008Google Scholar
  32. 32.
    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)Google Scholar
  33. 33.
    Rohatgi, A., Hamou-Lhadj, A., Rilling, J.: An approach for mapping features to code based on static and dynamic analysis. In: Proc. of ICPC’08, pp. 236–241, 2008Google Scholar
  34. 34.
    Rubin, J., Chechik, M.: Locating distinguishing features using diff sets. In: Proc. of ASE’12, pp. 242–245, 2012Google Scholar
  35. 35.
    Saul, Z.M., Filkov, V., Devanbu, P., Bird, C.: Recommending random walks. In: Proc. of FSE’07, pp. 15–24, 2007Google Scholar
  36. 36.
    Shao, P., Smith, R.K.: Feature location by IR modules and call graph. In: Proc. of ACM-SE 47, pp. 70:1–70:4, 2009Google Scholar
  37. 37.
    Shepherd, D., Pollock, L., Vijay-Shanker, K.: Towards supporting on-demand virtual remodularization using program graphs. In: Proc. of AOSD’06, pp. 3–14, 2006Google Scholar
  38. 38.
    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: Proc. of AOSD’07, pp. 212–224, 2007Google Scholar
  39. 39.
    Tip, F.: A survey of program slicing techniques. J. Prog. Lang. 3(3), 121–189 (1995)Google Scholar
  40. 40.
    Trifu, M.: Improving the dataflow-based concern identification approach. In: Proc. of CSMR’09, pp. 109–118, 2009Google Scholar
  41. 41.
    Walkinshaw, N., Roper, M., Wood, M.: Feature location and extraction using landmarks and barriers. In: Proc. of ICSM’07, pp. 54–63, 2007Google Scholar
  42. 42.
    Wilde, N., Scully, M.C.: Software reconnaissance: mapping program features to code. J. Software Mainten. 7, 49–62 (1995)CrossRefGoogle Scholar
  43. 43.
    Wong, W.E., Horgan, J.R., Gokhale, S.S., Trivedi, K.S.: Locating program features using execution slices. In: Proc. of ASSET’99, pp. 194–203, 1999Google Scholar
  44. 44.
    Zhao, W., Zhang, L., Liu, Y., Sun, J., Yang, F.: SNIAFL: towards a static noninteractive approach to feature location. ACM TOSEM 15, 195–226 (2006)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  1. 1.IBM ResearchHaifaIsrael
  2. 2.University of TorontoTorontoCanada

Personalised recommendations