Difference between revisions of "WG211/M16Kaestner"

From WG 2.11
Jump to: navigation, search
(Created page with "(copy from Hung Viet Nguyen's thesis) Web applications have become one of the most important and prevalent types of software. In modern web applications, the display of any w...")
 
 
Line 1: Line 1:
(copy from Hung Viet Nguyen's thesis)
+
Change introduces conflict into software ecosystems: breaking changes may ripple through the ecosystem and trigger rework for users of a package, but often developers can invest additional effort or accept opportunity costs to alleviate or delay downstream costs. We performed a multiple case study of three software ecosystems with different tooling and philosophies toward change, Eclipse, R/CRAN, and Node.js/npm, to understand how developers make decisions about change and change-related costs and what practices, tooling, and policies are used. We found that all three ecosystems differ substantially in their practices and expectations toward change and that those differences can be explained largely by different community values in each ecosystem. Our results illustrate that there is a large design space in how to build an ecosystem, its policies and its supporting infrastructure; and there is value in making community values and accepted tradeoffs explicit and transparent in order to resolve conflicts and negotiate change-related costs.
 
 
Web applications have become one of the most important and prevalent types of
 
software. In modern web applications, the display of any web page is usually an interplay
 
of multiple languages and involves code execution at different locations (the server side,
 
the database side, and the client side). These characteristics make it hard to write and
 
maintain web applications. Much of the existing research and tool support often deals
 
with one single language and therefore is still limited in addressing those challenges.
 
To fill in this gap, this work is aims at developing an infrastructure for cross-
 
language program analysis for dynamic web applications to support creating reliable and
 
robust web applications with higher quality and lower costs. To reach that goal, we
 
have developed the following research components. First, to understand the client-side
 
code that is embedded in the server-side code, we develop an output-oriented symbolic
 
execution engine that approximates all possible outputs of a server-side program. Second,
 
we use variability-aware parsing, a technique recently developed for parsing conditional
 
code in software product lines, to parse those outputs into a compact tree representation
 
(called VarDOM ) that represents all possible DOM variants of a web application. Third,
 
we leverage the VarDOM to extract semantic information from the server-side code.
 
Specifically, we develop novel concepts, techniques, and tools (1) to build call graphs
 
for embedded client code in different languages, (2) to compute cross-language program
 
slices, and (3) to compute a novel test coverage criterion called output coverage that
 
aids testers in creating effective test suites for detecting output-related bugs. The results
 
have been demonstrated in a wide range of applications for web programs such as IDE
 
services, fault localization, bug detection, and testing.
 

Latest revision as of 18:20, 20 August 2016

Change introduces conflict into software ecosystems: breaking changes may ripple through the ecosystem and trigger rework for users of a package, but often developers can invest additional effort or accept opportunity costs to alleviate or delay downstream costs. We performed a multiple case study of three software ecosystems with different tooling and philosophies toward change, Eclipse, R/CRAN, and Node.js/npm, to understand how developers make decisions about change and change-related costs and what practices, tooling, and policies are used. We found that all three ecosystems differ substantially in their practices and expectations toward change and that those differences can be explained largely by different community values in each ecosystem. Our results illustrate that there is a large design space in how to build an ecosystem, its policies and its supporting infrastructure; and there is value in making community values and accepted tradeoffs explicit and transparent in order to resolve conflicts and negotiate change-related costs.