Past projects

Crowd Development

Crowd development is a development process designed for transient workers of varying skill. Work is organized into microtasks, which are short, self-descriptive, and modular. Microtasks recursively spawn other microtasks and are matched to workers, who accrue points by completion and quality. Crowd development could help to reduce time to market and software development costs, increase programmer productivity, and make programming more fun.

Calico

Calico is an intuitive sketch-based design environment for use on touch-based devices, with a particular focus on supporting the early stages of software design. Most software developers, when faced with a design problem, forgo existing modeling tools altogether in favor of pen-and-paper or the whiteboard to work through the problem and come up with a solution. A hallmark of this activity is that the developers sketch: they create rough, imprecise approximations of the design they have in mind that are modified and refined continuously as part of the design activity. Calico explores touch-based hardware, including electronic whiteboards, tablet PCs, slates, and iPads, to create a novel software design environment in support of software developers engaged in design sketching.
topicsOverTimeSmall

Code Topics

The development of a software system is now ever more frequently a part of a larger development effort, including multiple software systems that co-exist in the same environment: a software ecosystem. Though most studies of the evolution of software have focused on a single software system, there is much that we can learn from the analysis of a set of interrelated systems. Topic modeling techniques show promise for mining the data stored in software repositories to understand the evolution of a system. In my research, I seek to explore how topic modeling techniques can aid in understanding the evolution of a software ecosystem. The results of this research have the potential to improve how topic modeling techniques are used to predict, plan, and understand the evolution of software, and will inform the design of tools that support software engineering activities such as feature location, expertise identification, and bug detection.

Lighthouse

Lighthouse is a rich collaboration portal centered on emerging design. The highly collaborative nature of software development is known to lead to a number of problems, including conflicting work, design erosion, and difficulties in understanding overall progress. The underlying cause is a lack of insight into the parallel programming activities of developers and how the code changes that result interfere, alter the design, and contribute to the overall system. Lighthouse monitors all ongoing changes in all workspaces to provide developers with a visualization of the emerging design – the design as it exists in the code as virtually integrated across all workspaces. Using the emerging design, developers can gauge whether they may need to coordinate their changes with those of other developers, whether the quality of the overall design remains in tact or must be addressed, and whether overall progress is on track or must be reconsidered.
Code Orb

Code Orb

The Code Orb is an Eclipse plug-in that helps developers identify volatile code. A range of empirical studies have identified correlations between past states of code and its potential for future bugs. Example indicators are code that was buggy in the past, code that has been edited or seen by very few developers, code that was changed frequently in the recent past, code that has low test coverage, and others. When editing code, however, developers typically are not aware of these, and indeed have little opportunity to become aware other than to explicitly and manually search for such information, which they are unlikely to do. The Code Orb provides developers with continuous, line-by-line feedback on the volatility of the code they are currently editing, prompting them to be extra careful when editing code that has a higher risk of leading to future bugs.

SimSE

SimSE is an educational software engineering simulation environment that bridges the gap between the large amount of conceptual software engineering knowledge students learn in lectures and the comparably small amount of this knowledge they actually put in practice in an associated lab project. SimSE allows students to practice virtually, through a fully graphical, interactive, and fun simulation in which direct, graphical feedback highlights the complex cause and effect relationships underlying today’s software development processes.

Palantír

Palantír is a novel workspace awereness tool that complements existing configuration management systems by providing developers with insight into parallel code changes. Palantír informs developers of which other developers are currently changing which other artifacts, calculates a measure of severity for each of the changes, and presents this information in a non-obtrusive manner in the IDE so developers can respond to conflicts well before they get out of hand and lead to serious problems down the road.