Skip to main content

Introduction: Remixing Snippets and Reusing Components

  • Chapter

Abstract

In this introductory chapter, we map out “code retrieval on the web” as a research area and the organizational of this book. Code retrieval on the web is concerned with the algorithms, systems, and tools to allow programmers to search for source code on the web and the empirical studies of these inventions and practices. It is a label that we apply to a set of related research from a software engineering, information retrieval, human-computer interaction, management, as well as commercial products. The division of code retrieval on the web into snippet remixing and component reuse is driven both by empirical data, and analysis of existing search engines and tools.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   84.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD   109.99
Price excludes VAT (USA)
  • Durable hardcover 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

Learn about institutional subscriptions

Notes

  1. 1.

    http://sourceforge.net/.

  2. 2.

    https://github.com/.

  3. 3.

    http://snipplr.com/.

  4. 4.

    http://www.smipple.net/.

  5. 5.

    http://demo.spars.info/j/.

  6. 6.

    http://www.koders.com.

  7. 7.

    http://www.google.com/codesearch/.

  8. 8.

    http://www.krugle.com/.

  9. 9.

    http://www.google.com/.

References

  1. Alexander Aiken and Brian R. Murphy. Implementing regular tree expressions. In Proceedings of the 1991 Conference on Functional Programming Languages and Computer Architecture, pages 427–447. Springer-Verlag, 1991.

    Google Scholar 

  2. Sushil Bajracharya, Joel Ossher, and Cristina Lopes. Searching API usage examples in code repositories with sourcerer api search. In Proceedings of 2010 ICSE Workshop on Search-driven Development: Users, Infrastructure, Tools and Evaluation, pages 5–8, Cape Town, South Africa, 2010. ACM.

    Google Scholar 

  3. Joel Brandt, Mira Dontcheva, Marcos Weskamp, and Scott R. Klemmer. Example-centric programming: Integrating web search into the development environment. In Proceedings of the 28th International Conference on Human Factors in Computing Systems, pages 513–522, Atlanta, Georgia, USA, 2010. ACM.

    Google Scholar 

  4. Joel Brandt, Philip J. Guo, Joel Lewenstein, Mira Dontcheva, and Scott R. Klemmer. Two studies of opportunistic programming: interleaving web foraging, learning, and writing code. In Proceedings of the 27th international conference on Human factors in computing systems, pages 1589–1598, Boston, MA, USA, 2009. ACM.

    Google Scholar 

  5. Shaunak Chatterjee, Sudeep Juvekar, and Koushik Sen. SNIFF: A search engine for Java using free-form queries. In Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering, Lecture Notes in Computer Science, pages 385–400, Berlin/Heidelberg, 2009. Springer.

    Google Scholar 

  6. Y.-F. Chen, M.Y. Nishimoto, and C.V. Ramamoorthy. The C information abstraction system. IEEE Transactions on Software Engineering, 16(3):325–334, 1990.

    Article  Google Scholar 

  7. Rylan Cottrell, Robert J. Walker, and Jorg Denzinger. Jigsaw: a tool for the small-scale reuse of source code. In Companion of the 30th International Conference on Software Engineering, pages 933–934, Leipzig, Germany, 2008. ACM.

    Google Scholar 

  8. Barthélémy Dagenais and Harold Ossher. Automatically locating framework extension examples. In Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 203–213, Atlanta, Georgia, 2008. ACM.

    Google Scholar 

  9. Bernhard Ganter, Gerd Stumme, and Rudolf Wille. Formal Concept Analysis: foundations and applications, volume 3626 of Lecture Notes in Artificial Intelligence. Springer Verlag, 2005.

    Google Scholar 

  10. Max Goldman and Robert C. Miller. Codetrail: Connecting source code and web resources. Journal of Visual Languages and Computing. Special Issue on Best Papers from VL/HCC 2008, 20(4):223–235, 2009.

    Google Scholar 

  11. Mark Grechanik, Chen Fu, Qing Xie, Collin McMillan, Denys Poshyvanyk, and Chad Cumby. A search engine for finding highly relevant applications. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, pages 475–484, Cape Town, South Africa, 2010. ACM.

    Google Scholar 

  12. F. Gysin. Improved social trustability of code search results. In Proceedings of the International Conference on Software Engineering, Cape Town, South Africa, 2010.

    Google Scholar 

  13. Raphael Hoffmann, James Fogarty, and Daniel S. Weld. Assieme: finding and leveraging implicit references in a web search interface for programmers. In Proceedings of the 20th Annual ACM Symposium on User Interface Software and Technology, Newport, Rhode Island, USA, 2007. ACM.

    Google Scholar 

  14. Reid Holmes, R. J. Walker, and G. C. Murphy. Approximate structural context matching: An approach to recommend relevant examples. IEEE Transactions on Software Engineering, 32(12):952–970, 2006.

    Google Scholar 

  15. Reid Holmes and Robert J. Walker. Supporting the Investigation and Planning of Pragmatic Reuse Tasks. In Proceedings of the 29th International Conference on Software Engineering, pages 447–457, Los Alamitos, CA, 2007. IEEE Computer Society Press.

    Google Scholar 

  16. O. Hummel and C. Atkinson. Extreme harvesting: test driven discovery and reuse of software components. In Proceedings of the 2004 IEEE International Conference on Information Reuse and Integration, pages 66–72, Las Vegas, Nevada, USA, 2004. IEEE.

    Google Scholar 

  17. Oliver Hummel, Werner Janjic, and Colin Atkinson. Code conjurer: Pulling reusable software out of thin air. IEEE Software, 25(5):45–52, 2008.

    Article  Google Scholar 

  18. K. Inoue, R. Yokomori, T. Yamamoto, M. Matsushita, and S. Kusumoto. Ranking significance of software components based on use relations. IEEE Transactions on Software Engineering, 31(3):213–225, 2005.

    Article  Google Scholar 

  19. Mehdi Kaytoue-Uberall, Sébastien Duplessis, and Amedeo Napoli. Using formal concept analysis for the extraction of groups of co-expressed genes. Modelling, Computation and Optimization in Information Systems and Management Sciences, pages 439–449, 2008.

    Google Scholar 

  20. Otavio Augusto Lazzarini Lemos, Sushil Bajracharya, Joel Ossher, Paulo Cesar Masiero, and Cristina Lopes. Applying test-driven code search to the reuse of auxiliary functionality. In Proceedings of the 2009 ACM symposium on Applied Computing, pages 476–482, Honolulu, Hawaii, 2009. ACM.

    Google Scholar 

  21. Christian Lindig and Gregor Snelting. Assessing modular structure of legacy code based on mathematical concept analysis. In Proceedings of the 19th international conference on Software engineering, pages 349–359. ACM, 1997.

    Google Scholar 

  22. Erik Linstead, Sushil Bajracharya, Trung Ngo, Paul Rigor, Cristina Lopes, and Pierre Baldi. Sourcerer: mining and searching internet-scale software repositories. Data Mining and Knowledge Discovery, 18(2):300–336, 2009.

    Article  MathSciNet  Google Scholar 

  23. M.A. Linton. Implementing relational views of programs. ACM SIGPLAN Notices, 19(5):132–140, 1984.

    Article  Google Scholar 

  24. David Mandelin, Lin Xu, Rastislav Bodik, and Doug Kimelman. Jungloid mining: helping to navigate the api jungle. ACM SIGPLAN Notices, 40(6):48–61, 2005.

    Article  Google Scholar 

  25. Frank McCarey, Mel Ó Cinnéide, and Nicholas Kushmerick. Knowledge reuse for software reuse. Web Intelligence and Agent Systems, 6(1):59–81, 2008.

    Google Scholar 

  26. Gail C. Murphy and David Notkin. Lightweight lexical source model extraction. ACM Transactions on Software Engineering and Methodology, 5:262–292, July 1996.

    Article  Google Scholar 

  27. Santanu Paul and Atul Prakash. A framework for source code search using program patterns. IEEE Transactions on Software Engineering, 20(6):463–475, 1994.

    Article  MATH  Google Scholar 

  28. Susan Elliott Sim, Charles L. A. Clarke, and Richard C. Holt. Archetypal source code searches: A survey of software developers and maintainers. In Proceedings of the Sixth International Workshop on Program Comprehension, pages 180, Los Alamitos, CA, 1998. IEEE Computer Society.

    Google Scholar 

  29. Denys Poshyvanyk, Andrian Marcus, and Yubo Dong. JIRiSS - an eclipse plug-in for source code exploration. In Proceedings of the 14th IEEE International Conference on Program Comprehension, pages 252–255, Athens, Greece, 2006. IEEE Computer Society.

    Google Scholar 

  30. Ute Priss. Formal concept analysis in information science. Annual review of information science and technology, 40(1):521–543, 2006.

    Article  Google Scholar 

  31. Steven P. Reiss. Semantics-based code search. In Proceedings of the 2009 IEEE 31st International Conference on Software Engineering, pages 243–253, Vancouver, Canada, 2009. IEEE Computer Society.

    Google Scholar 

  32. Naiyana Sahavechaphan and Kajal T. Claypool. XSnippet: mining for sample code. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 413–430, New York, NY, 2006. ACM Press.

    Google Scholar 

  33. R. C. Seacord, S. A. Hissam, and K. C. Wallnau. Agora: A search engine for software components. IEEE Internet Computing, 2(6):62–70, 1998.

    Article  Google Scholar 

  34. Renuka Sindhgatta. Using an information retrieval system to retrieve source code samples. In Proceedings of the 28th international conference on Software engineering, pages 905–908, Shanghai, China, 2006. ACM.

    Google Scholar 

  35. Janice Singer, Timothy Lethbridge, Norman Vinson, and Nicolas Anquetil. An examination of software engineering work practices. In Proceedings of the 1997 Conference of the Centre for Advanced Studies on Collaborative Research, page 21. IBM Press, 1997.

    Google Scholar 

  36. Jeffrey Stylos and Brad A. Myers. Mica: A web-search tool for finding api components and examples. In IEEE Symposium on Visual Languages and Human-Centric Computing, 2006. VL/HCC 2006, pages 195–202, Brighton, United Kingdom, 2006. IEEE.

    Google Scholar 

  37. Ken Thompson. Programming techniques: Regular expression search algorithm. Communications of the ACM, 11(6):419–422, 1968.

    Article  MATH  Google Scholar 

  38. Suresh Thummalapenta and Tao Xie. Parseweb: a programmer assistant for reusing open source code on the web. In Proceedings of the Twenty-second IEEE/ACM International Conference on Automated Software Engineering, pages 204–213, New York, NY, 2007. ACM Press.

    Google Scholar 

  39. Tao Xie and Jian Pei. MAPO: Mining API usages from open source repositories. In Proceedings of the 2006 International Workshop on Mining Software Repositories, pages 54–57, Shanghai, China, 2006. ACM.

    Google Scholar 

  40. Yunwen Ye and Gerhard Fischer. Supporting reuse by delivering task-relevant and personalized information. In Proceedings of the 24th Interntional Conference on Software Engineering, pages 513–523, New York, NY, 2002. ACM Press.

    Google Scholar 

  41. Yunwen Ye, Yasuhiro Yamamoto, and Kumiyo Nakakoji. A socio-technical framework for supporting programmers. In ESEC/SIGSOFT FSE, pages 351–360, New York, NY, USA, 2007. ACM.

    Google Scholar 

  42. Yunwen Ye, Yasuhiro Yamamoto, Kumiyo Nakakoji, Yoshiyuki Nishinaka, and Mitsuhiro Asada. Searching the library and asking the peers: Learning to use Java APIs on demand. In Proceedings of the 5th International Symposium on Principles and Practice of Programming in Java, pages 41–50, Lisboa, Portugal, 2007. ACM

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Susan Elliott Sim .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer Science+Business Media New York

About this chapter

Cite this chapter

Sim, S.E., Gallardo-Valencia, R.E. (2013). Introduction: Remixing Snippets and Reusing Components. 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_1

Download citation

  • DOI: https://doi.org/10.1007/978-1-4614-6596-6_1

  • 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)

Publish with us

Policies and ethics