Unweaving Code Search Toward Remixing-Centered Programming Support

  • Kumiyo Nakakoji
  • Yasuhiro Yamamoto
  • Yoshiyuki Nishinaka


Recognizing that programming is basically remixing, this chapter looks into the cognitive, social, and practical aspects of searching for and using existing code in a programming task. A code search mechanism undoubtedly plays an essential supporting role in a developer’s search for code in his or her own programming task. Supporting code search activities, however, demands more than code search mechanisms. At the same time, code search mechanisms also help a developer in a wider spectrum of programming activities. We present the anatomy of the cognitive activity in which a developer searches for existing code, and we propose efficacy and attitude as two dimensions depicting code search activity. We discuss areas of necessary technical and socio-technical support for code search activities in addition to code search mechanisms. We conclude the chapter by calling for a developer-centered remixing-oriented development environment.


Apatite Tempo Editing Metaphor 


  1. [1]
    Ackerman, M.S.: Augmenting organizational memory: A field study of Answer Garden. ACM Trans Info Sys, 16(3), 203–224 (1998)CrossRefGoogle Scholar
  2. [2]
    Bajracharya, S.K., Ossher, J., Lopes, C.V.: Leveraging usage similarity for effective retrieval of examples in code repositories. Proc. FSE ’10, ACM, New York, 157–166 (2010)Google Scholar
  3. [3]
    Bar-Yossef, Z., Gurevich, M.: Mining search engine query logs via suggestion sampling, Proc. VLDB’08, Auckland, New Zealand, 54–65 (2008)Google Scholar
  4. [4]
    Boardman, R., Sasse, M.A.: Stuff goes into the computer and doesn’t come out: A cross-tool study of personal information management, Proc. CHI ’04, ACM, New York, 583–590 (2004)Google Scholar
  5. [5]
    Brandt, J., Guo, P.J., Lewenstein, J., Dontcheva, M., Klemmer, S.R.: Two studies of opportunistic programming: interleaving web foraging, learning, and writing code, Proc. CHI ’09, ACM, New York, 1589–1598 (2009)Google Scholar
  6. [6]
    Brandt, J., Dontcheva, M., Weskamp, M., Klemmer, S.R.: Example-centric programming: integrating web search into the development environment, Proc. CHI ’10, ACM, New York, 513–522 (2010)Google Scholar
  7. [7]
    Clarke, S.: Measuring API usability. Dr Dobb’s Journal Special Windows/NET Supplement, http://drdobbs.com/cpp/184405654 (2004)
  8. [8]
    Cross R., Borgatti, S.P.: The ties that share: Relational characteristics that facilitate information seeking. In: Huysman M., Wulf V., Social Capital and Information Technology, pp. 137–161. The MIT Press, Cambridge, MA (2004)Google Scholar
  9. [9]
    Duala-Ekoko, E., Robillard, M.P.: Clone region descriptors: Representing and tracking duplication in source code. ACM Trans. Softw. Eng. Methodol. 20, 1, Article 3, 3:1–3:31 (July 2010)Google Scholar
  10. [10]
    Duala-Ekoko, E., Robillard, M.P.: Using structure-based recommendations to facilitate discoverability in APIs, Proc. 25th European Conf. on Object-Oriented Programming, 79–104 (July 2011)Google Scholar
  11. [11]
    Dumais, S., Cutrell, E., Cadiz, J.J., Jancke, G., Sarin, R., Robbins, D.C.: Stuff I’ve seen: A system for personal information retrieval and re-use, Proc. ACM SIGIR Conference on Research and Development in Information Retrieval, Toronto, Canada, 72–79 (2003)Google Scholar
  12. [12]
    Eisenberg, D.S., Stylos, J., Myers, B.A.: Apatite: a new interface for exploring APIs. Proc. CHI ’10, ACM, New York, 1331–1334 (2010)Google Scholar
  13. [13]
    Fourney, A., Mann, R., Terry, M.: Query-feature graphs: Bridging user vocabulary and system functionality, Proc. UIST ’11, ACM, New York, 207–216 (2011)Google Scholar
  14. [14]
    Fourney, A., Mann, R., Terry, M.: Characterizing the usability of interactive applications through query log analysis, Proc. CHI ’11, ACM, New York, 1817–1826 (2011)Google Scholar
  15. [15]
    Gallardo-Valencia, R.E., Sim, S.E.: What kinds of development problems can be solved by searching the web?: A field study, Proc. SUITE ’11, ACM, New York, 41–44 (2011)Google Scholar
  16. [16]
    Gerstberger P.G., Allen T.J.: Criteria used by research and development engineers in the selection of an information source. J. Appl. Psych. 52(4), 272–279 (1968)CrossRefGoogle Scholar
  17. [17]
    Goldhaber M.H.: The attention economy. First Monday 2(4), (1997).Google Scholar
  18. [18]
    Hartmann, B., MacDougall, D., Brandt, J., Klemmer, S.R.: What would other programmers do: Suggesting solutions to error messages, Proc. CHI ’10, ACM, New York, 1019–1028 (2010)Google Scholar
  19. [19]
    Henning, M.: API design matters, ACM Queue 5(4), 24–36 (May 2007)CrossRefGoogle Scholar
  20. [20]
    Hou, D., Li, L: Obstacles in using frameworks and APIs: An exploratory study of programmers’ newsgroup discussions, Proc. Program Comprehension (ICPC) 2011, IEEE, 91–100 (June 2011)Google Scholar
  21. [21]
    Illich, I.: Deschooling sSociety, Harper and Row, New York (1971)Google Scholar
  22. [22]
    Ko, A.J., Myers, B.A., Coblenz, M.J., Aung, H.H.: An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Transactions on Software Engineering, 33(12),971–987 (December 2006)CrossRefGoogle Scholar
  23. [23]
    Ko, A.J., DeLine, R., Venolia, G.: Information needs in collocated software development teams. Proc. ICSE 2007, 344–353 (May 2007)Google Scholar
  24. [24]
    Ko, A. J., Riche, Y.: The role of conceptual knowledge in API usability. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), Pittsburgh, PA, 173–176 (2011)Google Scholar
  25. [25]
    Marchionini, G.: Exploratory search: From finding to understanding. Commun. ACM 49(4), 41–46 (April 2006)CrossRefGoogle Scholar
  26. [26]
    Nakakoji, K., Ye, Y., Yamamoto, Y.: Supporting expertise communication in developer-centered collaborative software development environments. In: Finkelstein, A., Grundy, J., van den Hoek, A., Mistrik, I., Whitehead, J. (eds.), Collaborative Software Engineering, chap. 11, pp. 152–169. Springer-Verlag, (May 2010)Google Scholar
  27. [27]
    Nakakoji, K., Ye, Y., Yamamoto, Y.: Comparison of coordination communication and expertise communication in software development: Motives, characteristics, and needs, In: Nakakoji, K., Murakami, Y., McCready, E. (eds.) New Frontiers in Artificial Intelligence, pp. 147–155. Springer-Verlag, LNAI6284 (August 2010)Google Scholar
  28. [28]
    Robillard, M.P., DeLine, R.: A field study of API learning obstacles. Empirical Software Engineering, 16(6), 703–732 (2011)CrossRefGoogle Scholar
  29. [29]
    Shirai, Y., Yamamoto, Y., Nakakoji, K.: A history-centric approach for enhancing Web browsing experiences, Extended Abstracts of CHI2006, 1319–1324 (April 2006)Google Scholar
  30. [30]
    Stylos, J., Myers, B.A.: Mica: A Web-search tool for finding API components and examples. Proc. VLHCC ’06, IEEE Computer Society, Washington, DC, 195–202 (2006)Google Scholar
  31. [31]
    Terry, M., Mynatt, E.D., Nakakoji, K., Yamamoto, Y.: Variation in element and action: Supporting simultaneous development of alternative solutions, Proc. CHI2004, ACM, New York, 711–718 (2004)Google Scholar
  32. [32]
    Ye, Y., Fischer G.: Supporting reuse by delivering task-relevant and personalized information. Proc. ICSE ’02, ACM, New York, 513–523 (2002)Google Scholar
  33. [33]
    Ye, Y., Fischer G.: Reuse-conducive development environments. Int. J. Automat. Softw. Eng. 12(2), 199–235 (2005)CrossRefGoogle Scholar
  34. [34]
    Ye, Y., Yamamoto, Y., Nakakoji, K.: A socio-technical framework for supporting programmers, Proc. ESEC/FSE 2007, ACM Press, Dubrovnik, Croatia, 351–360 (September 2007)Google Scholar
  35. [35]
    Ye, Y., Yamamoto, Y., Nakakoji, K., Nishinaka, Y., Asada, M.: Searching the library and asking the peers: Learning to use Java APIs on demand, Proc. PPPJ2007, ACM Press, Lisbon, Portugal, 41–50 (September 2007)Google Scholar
  36. [36]
    Ye, Y., Nakakoji, K., Yamamoto, Y.: Understanding and improving collective attention economy for expertise sharing, Proc. CAiSE 2008, Montpellier, France, 167–181, Lecture Notes in Computer Science, Vol. 5074, Springer, Berlin, Heidelberg (June 2008)Google Scholar
  37. [37]
    Ye, Y., Nakakoji, K.: CodeDepot: A one-stop code search environment based on the character and structural search methods, J. Digital Practices, Information Processing Society of Japan, 2(2), 117–124 (in Japanese) (April 2011)Google Scholar

Copyright information

© Springer Science+Business Media New York 2013

Authors and Affiliations

  • Kumiyo Nakakoji
    • 1
  • Yasuhiro Yamamoto
    • 2
  • Yoshiyuki Nishinaka
    • 1
  1. 1.Software Research Associates Inc.TokyoJapan
  2. 2.Tokyo Institute of TechnologyYokohamaJapan

Personalised recommendations