Session:「Programming 1」

Interactive Extraction of Examples from Existing Code

論文URL: http://dl.acm.org/citation.cfm?doid=3173574.3173659

論文アブストラクト: Programmers frequently learn from examples produced and shared by other programmers. However, it can be challenging and time-consuming to produce concise, working code examples. We conducted a formative study where 12 participants made examples based on their own code. This revealed a key hurdle: making meaningful simplifications without introducing errors. Based on this insight, we designed a mixed-initiative tool, CodeScoop, to help programmers extract executable, simplified code from existing code. CodeScoop enables programmers to "scoop" out a relevant subset of code. Techniques include selectively including control structures and recording an execution trace that allows authors to substitute literal values for code and variables. In a controlled study with 19 participants, CodeScoop helped programmers extract executable code examples with the intended behavior more easily than with a standard code editor.

日本語のまとめ:

プログラマーは他の人が作ったサンプルコードを参考にすることが多い.しかし,参考にしたコードを自身のコードに適用することは,時間がかかったりエラーが生じたりと困難である.そこで既存のコードを実行可能なコードとして抽出する"codescoop"を設計した.

CFar: A Tool to Increase Communication, Productivity, and Review Quality in Collaborative Code Reviews

論文URL: http://dl.acm.org/citation.cfm?doid=3173574.3173731

論文アブストラクト: Collaborative code review has become an integral part of the collaborative design process in the domain of software development. However, there are well-documented challenges and limitations to collaborative code review---for instance, high-quality code reviews may require significant time and effort for the programmers, whereas faster, lower-quality reviews may miss code defects. To address these challenges, we introduce CFar, a novel tool design for extending collaborative code review systems with an automated code reviewer whose feedback is based on program-analysis technologies. To validate this design, we implemented CFar as a production-quality tool and conducted a mixed-method empirical evaluation of the tool usage at Microsoft. Through the field deployment of our tool and a laboratory study of professional programmers using the tool, we produced several key findings showing that CFar enhances communication, productivity, and review quality in human--human collaborative code review.

日本語のまとめ:

ソフトウェアの共同開発プロセスにおいて共同のコードレビューは必要不可欠である.しかしそれは,レビュワーに対して多大な労力を与える.そこで本論は,共同コードレビューシステムに,プログラム解析を用いた自動コードレビューを拡張する設計ツール"CFar"を提案する.

Doppio: Tracking UI Flows and Code Changes for App Development

論文URL: http://dl.acm.org/citation.cfm?doid=3173574.3174029

論文アブストラクト: Developing interactive systems often involves a large set of callback functions for handling user interaction, which makes it challenging to manage UI behaviors, create descriptive documentation, and track code revisions. We developed Doppio, a tool that automatically tracks and visualizes UI flows and their changes based on source code. For each input event listener of a widget, e.g., onClick of an Android View class, Doppio captures and associates its UI output from a program execution with its code snippet from the codebase. It automatically generates a screenflow diagram organized by the callback methods and interaction flow, where developers can review the code and UI revisions interactively. Doppio, as an IDE plugin, is seamlessly integrated into a common development workflow. Our studies show that our tool is able to generate quality visual documentation and helped participants understand unfamiliar source code and track changes.

日本語のまとめ:

インタラクティブシステムのようなコールバック関数を多く利用する必要があると,UIの動作管理、説明書類の作成、コードの改善の特定が困難である.そこで本論は,UIフローやコードに基づく変更を自動で特定し,視覚化するツール"Doppio"を提案する.

Visualizing API Usage Examples at Scale

論文URL: http://dl.acm.org/citation.cfm?doid=3173574.3174154

論文アブストラクト: Using existing APIs properly is a key challenge in programming, given that libraries and APIs are increasing in number and complexity. Programmers often search for online code examples in Q&A forums and read tutorials and blog posts to learn how to use a given API. However, there are often a massive number of related code examples and it is difficult for a user to understand the commonalities and variances among them, while being able to drill down to concrete details. We introduce an interactive visualization for exploring a large collection of code examples mined from open-source repositories at scale. This visualization summarizes hundreds of code examples in one synthetic code skeleton with statistical distributions for canonicalized statements and structures enclosing an API call. We implemented this interactive visualization for a set of Java APIs and found that, in a lab study, it helped users (1) answer significantly more API usage questions correctly and comprehensively and (2) explore how other programmers have used an unfamiliar API.

日本語のまとめ:

APIの豊富さにより複雑化が増しており,それらを適切に利用するのは困難でありプログラマーの課題でもある.多くの場合,膨大な数の関連するコードを掘り下げることで,そのAPIの理解深める.そこで本論で,大量のコードサンプルを調べるためのインタラクティブな可視化ツールを紹介する.