{"id":3403,"date":"2015-12-15T09:00:34","date_gmt":"2015-12-15T17:00:34","guid":{"rendered":"https:\/\/blogs.ubc.ca\/karthik\/?p=3403"},"modified":"2016-05-31T16:32:11","modified_gmt":"2016-05-31T23:32:11","slug":"understanding-asynchronous-interactions-in-full-stack-javascript","status":"publish","type":"post","link":"https:\/\/blogs.ubc.ca\/karthik\/2015\/12\/15\/understanding-asynchronous-interactions-in-full-stack-javascript\/","title":{"rendered":"Understanding Asynchronous Interactions in Full-Stack JavaScript"},"content":{"rendered":"<p>Saba Alimadadi, Ali Mesbah and Karthik Pattabiraman, <a href=\"http:\/\/2016.icse.cs.txstate.edu\/\">IEEE\/ACM International Conference on Software Engineering (ICSE), 2016<\/a>. (Acceptance Rate: 19%). [ <a href=\"https:\/\/blogs.ubc.ca\/karthik\/files\/2014\/06\/saba-icse16.pdf\">PDF<\/a> | <a href=\"https:\/\/blogs.ubc.ca\/karthik\/files\/2016\/05\/Saba-icse16-slides.pdf\">Talk <\/a>]<br \/>\n<!--more--><\/p>\n<p>Abstract: JavaScript has become one of the most popular languages in practice. Developers now use JavaScript not only for the client-side but also for server-side programming, leading to \u201cfull-stack\u201d applications written entirely in JavaScript. Understanding such applications is challenging for developers, due to the temporal and implicit relations of asynchronous and event-driven entities spread over the client and server side. We propose a technique for capturing a behavioural model of full-stack JavaScript application\u2019s execution. The model is temporal and context-sensitive to accommodate asynchronous events, as well as the scheduling and execution of lifelines of callbacks. We present a visualization of the model to facilitate program understanding for developers. We implement our approach in a tool, called Sahand, and evaluate it through a controlled experiment. The results show that Sahand improves developers\u2019 performance in completing program comprehension tasks three times more accurately than current tools.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Saba Alimadadi, Ali Mesbah and Karthik Pattabiraman, IEEE\/ACM International Conference on Software Engineering (ICSE), 2016. (Acceptance Rate: 19%). [ PDF | Talk ]<\/p>\n","protected":false},"author":10348,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2267],"tags":[628456,1579,7090,416334,5295],"class_list":["post-3403","post","type-post","status-publish","format-standard","hentry","category-publications","tag-628456","tag-conference","tag-reliability","tag-saba","tag-web-2-0"],"_links":{"self":[{"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/posts\/3403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/users\/10348"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/comments?post=3403"}],"version-history":[{"count":7,"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/posts\/3403\/revisions"}],"predecessor-version":[{"id":3567,"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/posts\/3403\/revisions\/3567"}],"wp:attachment":[{"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/media?parent=3403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/categories?post=3403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ubc.ca\/karthik\/wp-json\/wp\/v2\/tags?post=3403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}