- - tags:: [[Developers Support]], [[Empirical Studies]], [[Recommender Systems]], [[#zotero]] date:: 2014 publisher:: ACM Press place:: "Hyderabad, India" isbn:: 978-1-4503-2863-0 doi:: 10.1145/2597073.2597077 title:: @Mining StackOverflow to turn the IDE into a self-confident programming prompter pages:: 102-111 item-type:: [[conferencePaper]] access-date:: 2017-03-28T09:47:04Z original-title:: Mining StackOverflow to turn the IDE into a self-confident programming prompter language:: en url:: http://dl.acm.org/citation.cfm?doid=2597073.2597077 authors:: [[Luca Ponzanelli]], [[Gabriele Bavota]], [[Massimiliano Di Penta]], [[Rocco Oliveto]], [[Michele Lanza]] library-catalog:: CrossRef links:: [Local library](zotero://select/library/items/XADHB8Z3), [Web library](https://www.zotero.org/users/1039502/items/XADHB8Z3) - ### Attachments - [Ponzanelli et al. - 2014 - Mining StackOverflow to turn the IDE into a self-c.pdf](zotero://select/library/items/TUAGTCE2) {{zotero-imported-file TUAGTCE2, "Ponzanelli et al. - 2014 - Mining StackOverflow to turn the IDE into a self-c.pdf"}} - ### Notes - # Annotazioni (14/1/2024, 22:35:16) “sources of information like” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=TKXB6TSN)) “API” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=LE5VZCPL)) “documentation” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=AN5XQ4X2)) “forums” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=KCB9ZSMF)) “Q&A websites” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=AXC2AXZ6)) “Knowing what to search for and how is nontrivial,” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=9UY2KC3R)) “given a context in the IDE,” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=VEAS2N8B)) “automatically retrieves pertinent discussions from Stack Overflow,” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=QRN836S2)) “valuates their relevance, and, if a given confidence threshold is surpassed, notifies the developer about the available help.” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=ESSBZXIN)) “ranking model” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=IDT5Y9WG)) “usefulness” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=AH5AXHBH)) “Every time developers need to look for information, they interrupt their work flow,” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=X965XX3C)) “eave the IDE” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=USPQXBKY)) “Web browser to perform and refine searches, and assess the results” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=3DIRZC4I)) “the problem context in the IDE. The information is retrieved from differen” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=G3EH2BPP)) This is a test [[P1]] “s forums, mailing lists [2], blogs, Q&A websites, bug trackers [1]” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=SMEDEG7A)) “Recommender systems” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=BWZ6MQ5E)) “eR” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=HRIMGHRB)) “ose” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=CTZBG66M)) “eepI” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=3DMSXE7U)) “suggest project artifacts in the IDE aiming at providing developers with additional information on specific parts of the system.” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=7GA5WQU7)) “Ideally, a recommender system should behave like a prompter in a theatre: Ready to provide suggestions whenever the actor needs them, and ready to autonomously give suggestions if it feels something is going wrong.” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=YRCHT7QL)) “driver” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=MAH8YM73)) “e” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=SVNEEAIG)) “observer,” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=PJ44HY4W)) “interrupts the driver by giving suggestions.” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=J95PSU4W)) “the driver can consult the observer whenever she needs it, making the observer” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=9892GBLH)) “the programming prompter of the programming actor.” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=MIEXSPLG)) “push notifications” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=WGRMENCG)) “relevant Stack Overflow discussions to the developer. Prompter makes” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=ADZJ8JES)) “IDE” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=XLVR9WM8)) “silently observes and analyzes” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=FAS939MB)) “the code context in the IDE” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=VPN32KPL)) “automatically searches for Stack Over-” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=8BFR5WMF)) “flow discussions on the Web” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=YX6VALLH)) “evaluates their relevance by taking i” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=FEMKL7JQ)) “consideration code aspects” ([Ponzanelli et al., 2014, p. 1](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=1&annotation=P4SGW8MV)) [image] ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=WEMPHHHV)) ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) This is very interesting “(i) receive and track notifications” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=WRG8KEAA)) “(ii) read the suggested Stack Overflow discussions.” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=8MXP5PHA)) “code contexts (1) every time a change in the source code occurs” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=AI2BFIBK)) “formulates a query starting from the code context (2)” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=X638NDXX)) “rompter submits a new search only if the query diff” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=5356QHEI)) “plug-in,” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=QLJU4C7T)) “the search engines to which the query is sent,” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=HA3U34RP)) “Stack Overflow API” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=YSVILJLV)) “Web search on the Stack Overflow website” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=JJ23WAKI)) “All resulting URLs are collected and duplicates removed (5).” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=CLNERTE7)) “The service uses the Stack Overflow question ID to retrieve the discussion via the Stack Overflow API (6)” ([Ponzanelli et al., 2014, p. 2](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=2&annotation=UXKHB39D)) “discussion is, given the code context, ranked (7) a” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=NKV6F3P3)) “he ranked list of URLs is sent back to the plug-in where Prompter decides whether to fire a” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=I2TBBHYW)) “new notification in the IDE (8).” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=MVAQYSTX)) “Our previous work in this context [28] only used text similarity as a means to retrieve Stack Overflow discussions related to the actual code” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=7A8WBTCC)) “The approach we present here relies on several combined aspects, and has proven to be more robust and less error-prone.” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=F89TBB2I)) “rompter waits until the developer stops writing” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=WBYASUID)) “current code ele-” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=2KJRQFB6)) “ment” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=3RI8CIB6)) “extracts the current context” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=4R83MWT7)) “,packageName.ClassName f” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=ZX5ENCLR)) “me for classes” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=GNXCXQJ9)) “packageName.ClassName.methodSignature for methods;” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=Y5CLQEN2)) “the source code of the modified element” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=32LSQ9AS)) “the types of the used API,” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=969AUBHT)) “the names of methods invoked in the API, again considering only external libraries and JDK only.” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=HHHZL5WU)) “automate the triggering of searche” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=6VX68IDX)) “es” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=QRYEAKWN)) “treat the code as a bag of words” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=ZMAF4F8R)) “(i) splitting identifiers and removing stop words” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=9M7ZK85N)) “(ii) ranking the obtained terms according to their frequency” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=7W2S4XFP)) “(iii) selecting the top-n most frequent terms” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=QFK3NKGY)) “d more discriminative terms” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=5FCGMDS6)) “term entropy can be used to lower the prominence of frequent terms that do not suffi” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=23X87F8Y)) “the Query Generation Service selects the top n terms to devise the query, plus the word java.” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=S7XAN8JG)) “To overcome this problem, before selecting the n terms to create the query, we use the Levenshtein distance [21] to verify if in the context there are terms with a very high textual similarity.” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=3WS9ZJCM)) “1. Textual Similarity:” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=6B7S2ETH)) “2. Code Similarity:” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=NBMHABJY)) “3. API Types Similarity” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=6AUWRIE4)) “4. API Methods Similarity:” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=UI83BQP6)) “JDT” ([Ponzanelli et al., 2014, p. 3](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=3&annotation=C6X54YGH)) “5. Question Score:” ([Ponzanelli et al., 2014, p. 4](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=4&annotation=CWIGEVZY)) “sigmoid function:” ([Ponzanelli et al., 2014, p. 4](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=4&annotation=IWFMVNP9)) “where x is the score and ̄ x is the average of the scores of all the questions in Stack Overflow according to the data dump of June 2013.” ([Ponzanelli et al., 2014, p. 4](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=4&annotation=95NEJH79)) “6. Accepted Answer Score:” ([Ponzanelli et al., 2014, p. 4](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=4&annotation=WYAU5F4J)) “7. User Reputation:” ([Ponzanelli et al., 2014, p. 4](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=4&annotation=J5T3LVC4)) “8. Tags Similarity: T” ([Ponzanelli et al., 2014, p. 4](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=4&annotation=498VWXQI)) “M. Robillard, R. Walker, and T. Zimmermann. Recommendation systems for software engineering. IEEE Software, pages 80–86, 2010.” ([Ponzanelli et al., 2014, p. 10](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=10&annotation=FA2GV8XU)) “[42] L. Williams. Integrating pair programming into a software development process. In Proceedings of CSEET 2001, pages 27–36. IEEE, 2001.” ([Ponzanelli et al., 2014, p. 10](zotero://select/library/items/XADHB8Z3)) ([pdf](zotero://open-pdf/library/items/TUAGTCE2?page=10&annotation=S3NBS8JQ))