Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Investigating Opportunistic Software Developmen...

Alexey Zagalsky
September 17, 2013

Investigating Opportunistic Software Development Using Social Media Recommendation Systems

My master's defense slides.
The thesis is also available online -http://alexeyza.com/pdf/Zagalsky.Alexey-MSc.pdf

Alexey Zagalsky

September 17, 2013
Tweet

More Decks by Alexey Zagalsky

Other Decks in Research

Transcript

  1. Investigating Opportunistic Software Development Using Social Media Recommendation Systems by

    Alexey Zagalsky under the supervision of Prof. Amiram Yehudai 1
  2. Why? • The impact of Social Media • Example search

    is an integral part of modern software development • We aimed to create a Social Media based recommendation system to support example usage • How can we design better and more useful tools for developers? 2
  3. Design Process Intended to Design Useful Tools • Useful tools

    are tools that support work by making a strategy faster or more successful Thomas D LaToza and Brad A Myers. Designing useful tools for developers. In Proceedings of the 3rd ACM SIGPLAN workshop on Evaluation and usability of programming languages and tools, pages 45–50. ACM, 2011. 3
  4. • “Designing a useful tool requires more than finding a

    compelling motivating example, evaluating the tool’s technical merits, and performing a carefully designed user study. Designing a useful tool requires understanding how a tool supports work and addresses an important problem that developers face.” 4
  5. • One can’t design a recommendation system without studying human-machine

    interactions, and most importantly human behavior in software development. 5
  6. Opportunistic Development • Opportunistic Programming is a method of software

    development that emphasizes speed and ease of development over code robustness and maintainability • Coding in this way allows individuals to explore many ideas quickly Joel Brandt, Philip J. Guo, Joel Lewenstein, Mira Dontcheva, Scott R. Klemmer. Two Studies of Opportunistic Programming: Interleaving Web Foraging, Learning, and Writing Code. CHI: ACM Conference on Human Factors in Computing Systems, Boston, MA, 2009. 6
  7. Research Questions 1. Is limiting software development in example driven

    manner helpful? 2. How do professional developers mitigate concerns related to example usage? 3. What are the micro-activities involved in opportunistic development when using social media based recommendation system? 9
  8. Research Questions 4. When searching for code examples, do developers

    refine their query or continue examining additional results? 5. How many code examples are examined before choosing a suitable code example? 6. When searching for code examples, do developers use additional context? 10
  9. Qualitative Research • Qualitative research aims to study complexities of

    human behavior (e.g. motivation), and the reasons for that behavior. • A situated activity that locates the observer in the world. It consists of a set of interpretive, material practices that makes the world visible. These practices transform the world. They turn the world into a series of representations, including field notes, interviews, conversations, photographs, recordings, and memos to the self. At this level, qualitative research involves an interpretive, naturalistic approach to the world. This means that qualitative researchers study things in their natural settings, attempting to make sense of, or to interpret, phenomena in terms of the meanings people bring to them (Denzin & Lincoln). 11
  10. Design-Based Research • It is one of several qualitative research

    methods, mainly used in learning. • The goal of DBR is to design, create and study a single theoretically- inspired system or environment, as it systematically changed through multiple iterations, while simultaneously testing the validity of a dominant theory or generating new theories. • A systematic but flexible methodology aimed to improve educational practices through iterative analysis, design, development, and implementation, based on collaboration among researchers and practitioners in real-world settings, and leading to contextually-sensitive design principles and theories (Wang and Hannafin). 12
  11. Study of Professional Developers 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, CHI ’09, pages 1589–1598, New York, NY, USA, 2009. ACM. 13
  12. Phase I: Example Usage Survey (online) • In 14 months

    over 480 forms submitted, 465 with at least one question answered. In 46 of them the open ended question was answered. 15
  13. Browsing and Comparing Multiple Examples • “Compare a few different

    examples with one another to find the best” (subject 435, survey) • “Sometimes I compare different code examples to get a better understanding of the feature. Then I refactor and modify the code to fit my needs and implement it in my own code, sometimes as part of a library (wrapping).” (subject 444) • Subjects 316 and 467 mention “compare” as well 17
  14. Browsing and Comparing Multiple Examples • “Many times the results

    of a search includes many examples that fit in terms of programming language and license, so choosing the "best" one to try to reuse is a very important task. Searching is easy but I think making the selection is one of the more difficult tasks. Maybe you could separate it from the more general "browse" task or split the browse task into (1) search - deciding how to define the search query - sometimes this is iterative and includes refinements (2) selection of most suitable example to use among all relevant ones returned by the search”. (subject 143) 18
  15. Reducing Context Switching • Barzilay et al. argue that example

    search is an integral part of modern software development • Ponzanelli et al. and Brandt et al. support this approach as well, by allowing developers to search for code examples from within the IDE. 19
  16. 20

  17. 21

  18. Preliminary Benchmark Data Point Search Query Dynamic Dimension “jquery dynamic

    dimension” Hover “jquery hover div” Position “jquery position” Rounded Corners “jquery rounded corner” Draggable “jquery draggable” Droppable “jquery droppable” Autocomplete “jquery autocomplete from db” Accordion “jquery accordion” Date Picker “jquery datepicker” Image Scale “jquery image scale effect” 22
  19. Preliminary Benchmark Data Point Google Krugle Koders SO EO Dynamic

    Dimension 4 Not found Not found 1 3 Hover 1 2 1 1 2 Position 3 Not found Not found 4 1 Rounded Corners 2 Not found 3 3 1 Draggable 1 Not found 3 2 1 Droppable 1 Not found 3 1 2 Autocomplete 1 Not found Not found 1 1 Accordion 1 Not found 12 3 1 Date Picker 2 Not found 3 1 1 Image Scale 2 Not found Not found Not found 3 Average 1.7 19.1 9.7778 3.8 1.6 23
  20. Phase II: User Study • Main use case: – A

    professional developer is required to accomplish a set of coding tasks in an unfamiliar domain while working in opportunistic development manner. 24
  21. Phase II: User Study • We approached only professional developers

    with at least 2 years of experience (no students). Average years of experience was 7.05. • We have recruited 10 professional developers. • Subjects were divided into two groups: – Developers who are limited to searching in Example Overflow (but allowed to follow external links) – Developers who are not limited to using a specific tool or to using example code at all 25
  22. Phase II: User Study • The user study was both

    observed and recorded. • Think-Aloud protocol • During the observations field notes were taken • At the end of the user study, participants were interviewed 26
  23. 27

  24. Qualitative Data Analysis 1. Transcription of the data recorded 2.

    Organizing the data into easily retrievable sections 3. Familiarization with the data by reading and re-reading the data, making memos and summaries 4. Reading the data and labeling segments, i.e. coding 5. Identifying themes or emergent concepts, and engaging in re-coding to develop more well defined categories. Phase I Phase II 29
  25. Is Limiting Software Development in Example Driven Manner Helpful? Participant

    P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 Avg. Task 1 0 1 0 1 0 1 0 1 1 1 0.6 Task 2 0 0 0 0 0 0 0 0.5 0.5 1 0.2 Task 3 0 0 1 0.5 0 0 0.5 0 1 1 0.4 Task 4 0.5 0 0 1 0 0 0 1 0.5 0 0.3 Overall 0.5 1 1 2.5 0 1 0.5 2.5 3 3 1.5 Table 5.1: Score of each participant per task 31
  26. Is Limiting Software Development in Example Driven Manner Helpful? Table

    5.2: Comparison between the groups for average score per task Avg. Avg. for limited to EO Avg. for non- limited Task 1 0.6 0.2 1 Task 2 0.2 0.2 0.2 Task 3 0.4 0.5 0.3 Task 4 0.3 0.1 0.5 Overall 1.5 1 2 32
  27. Is Limiting Software Development in Example Driven Manner Helpful? Table

    5.4: Comparison between the groups for ability of each participant to find a suitable example per task Avg. Avg. for limited to EO Avg. for non- limited Task 1 0.7 0.4 1 Task 2 0.5 0.4 0.6 Task 3 0.4 0.6 0.2 Task 4 0.5 0.4 0.6 Overall 2.1 1.8 2.4 33
  28. How Do Professional Developers Mitigate Concerns Related to Example Usage?

    • Confidence in the example found – Source of example code – Author of example code – Simplicity and length of example – Similarity of content or keywords – Rank of an example in search results – Social rating – Comprehension of code – Past experience • Sense of responsibility • Lack of (domain) knowledge • Time 34
  29. What are the Micro-Activities Involved in Opportunistic Development When Using

    Social Media Based Recommendation Systems? • Task comprehension • Forming and refining the query • Browsing and examining results • Reading additional context • Diversity in using the example 35
  30. 36

  31. Contribution • Stating the research questions was a significant part

    of my work • Contribution arises from the type of research questions we follow and complexities involved • Allow to design useful tools for developers based on our findings • Design and implement Example Overflow, social media based code recommendation system 40
  32. Contribution • Publications: – Workshop paper (peer reviewed) – Book

    chapter 41 Zagalsky, A.; Barzilay, O.; Yehudai, A., "Example Overflow: Using social media for code recommendation," Recommendation Systems for Software Engineering (RSSE), 2012 Third International Workshop on , vol., no., pp.38,42, 4-4 June 2012. Barzilay, O.; Treude, C.; Zagalsky, A., “Facilitating Crowd Sourced Software Engineering via Stack Overflow”, Finding Source Code on the Web for Remix and Reuse, Springer New York, pp 289-308, 2013
  33. Summary • We did not focus only on the technical

    side of the design, but rather on the human-machine interactions, and the human behavior involved. • Without proper training, the developer is not able to critically evaluate the various examples, browse them and merge them. 42