Kathryn T. Stolee

Empirical Study using Yahoo! Pipes

About the Study

Mashups are becoming increasingly popular as end users are able to easily access, manipulate, and compose data from several web sources. We have observed, however, that end user mashups tend to suffer from several deficiencies. In this work, we identify and specify smells indicative of those deficiencies, and design specialized refactorings to remove them, focusing on mashups created with the popular Yahoo! Pipes environment (but also relevant to other mashup tools, such as Apatar, DERI Pipes, IBM Mashup Center, Plagger, and xFruits). Our refactorings reduce the complexity of pipes, increase their abstraction, update broken sources of data and dated components, and standardize pipes to fit the community development patterns. Our assessment on 8,051 pipe-like mashups developed by thousands of end users shows that smells are present in 81% of the pipes, and that the proposed refactorings can reduce that number to 16%, illustrating the potential of refactoring to support thousands of end users developing pipe-like mashups.

Study Infrastructure

To perform the study, we had to be able to obtain a pipe representation, analyze it to detect smells, and refactor it to reduce those smells. Yahoo!, however, does not provide an API to perform any of those actions outside of the proprietary Pipes Editor. Thus, we created an infrastructure that allows us to perform these tasks on thousands of pipes to assess the refactorings effectiveness in reducing smells. We make a part of that infrastructure available for download as an executable JAR file: Refactoring Mashups

The infrastructure runs with the following java configurations:
     java version "1.6.0_18"
     Java(TM) SE Runtime Environment (build 1.6.0_18-b07)

This infrastructure allows you to perform smell detection* and/or one refactoring* on any pipe. Additionally, it will output the smell counts before and after the pipe, and/or a DOT format of the pipe. See below for proper usage, or use the --help flag for more information.

Proper Usage: Pipes <analysis> <output> <refactoring> pipeid

-s Smell Detection Only
-a Smell Detection And Refactoring
-d DOT format output
-c Command line description of smell detection
-a DOT output and command line description
-cmClean Up Module
-rnmRemove Non-Contributing Module
-pdmPush Down Module
-mrmMerge Redundant Module
-cdpCollapse Duplicate Paths
-pumPull Up Module
-rdmReplace Deprecated Module
-rdsRemove Deprecated Sources
-nooNormalize Order of Operations

A preliminary study of our refactoring techniques, published in a technical report, involved manual inspection of the 200 artifacts involved with that study. Details can be found here.

*The refactorings are intended to operate independently of Yahoo!, so some smells and refactorings are not available in this version of the infrastructure. The omitted analyses and transformations involve 1) an analysis of community artifacts, or 2) are dependent on either the Yahoo! server or the repository, both of which can change over time. The Global Isomorphic Paths smell, Extract Global Subpipe refactoring, and Extract Local Subpipe refactoring have such dependencies. As an additional note, the Invalid Sources smell and the Non-conforming Operator Ordering smells utilize the invalid sources and operator orderings that were determined in February 2010.