Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
- 2.
Note that by “code reuse,” we mean a developer’s action of simply using existing code in the developer’s task, and do not necessarily mean a part of more established areas of research on software reuse in software engineering.
- 3.
References
Ackerman, M.S.: Augmenting organizational memory: A field study of Answer Garden. ACM Trans Info Sys, 16(3), 203–224 (1998)
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)
Bar-Yossef, Z., Gurevich, M.: Mining search engine query logs via suggestion sampling, Proc. VLDB’08, Auckland, New Zealand, 54–65 (2008)
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)
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)
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)
Clarke, S.: Measuring API usability. Dr Dobb’s Journal Special Windows/NET Supplement, http://drdobbs.com/cpp/184405654 (2004)
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)
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)
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)
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)
Eisenberg, D.S., Stylos, J., Myers, B.A.: Apatite: a new interface for exploring APIs. Proc. CHI ’10, ACM, New York, 1331–1334 (2010)
Fourney, A., Mann, R., Terry, M.: Query-feature graphs: Bridging user vocabulary and system functionality, Proc. UIST ’11, ACM, New York, 207–216 (2011)
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)
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)
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)
Goldhaber M.H.: The attention economy. First Monday 2(4), (1997).
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)
Henning, M.: API design matters, ACM Queue 5(4), 24–36 (May 2007)
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)
Illich, I.: Deschooling sSociety, Harper and Row, New York (1971)
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)
Ko, A.J., DeLine, R., Venolia, G.: Information needs in collocated software development teams. Proc. ICSE 2007, 344–353 (May 2007)
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)
Marchionini, G.: Exploratory search: From finding to understanding. Commun. ACM 49(4), 41–46 (April 2006)
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)
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)
Robillard, M.P., DeLine, R.: A field study of API learning obstacles. Empirical Software Engineering, 16(6), 703–732 (2011)
Shirai, Y., Yamamoto, Y., Nakakoji, K.: A history-centric approach for enhancing Web browsing experiences, Extended Abstracts of CHI2006, 1319–1324 (April 2006)
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)
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)
Ye, Y., Fischer G.: Supporting reuse by delivering task-relevant and personalized information. Proc. ICSE ’02, ACM, New York, 513–523 (2002)
Ye, Y., Fischer G.: Reuse-conducive development environments. Int. J. Automat. Softw. Eng. 12(2), 199–235 (2005)
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)
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)
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)
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)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer Science+Business Media New York
About this chapter
Cite this chapter
Nakakoji, K., Yamamoto, Y., Nishinaka, Y. (2013). Unweaving Code Search Toward Remixing-Centered Programming Support. In: Sim, S.E., Gallardo-Valencia, R.E. (eds) Finding Source Code on the Web for Remix and Reuse. Springer, New York, NY. https://doi.org/10.1007/978-1-4614-6596-6_2
Download citation
DOI: https://doi.org/10.1007/978-1-4614-6596-6_2
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4614-6595-9
Online ISBN: 978-1-4614-6596-6
eBook Packages: Computer ScienceComputer Science (R0)