2019  |  2018  |  2017  |  2016  |  2015  |  2014  |  2013  |  2012  |  2011  |  2010  |  2009  |  2008  |  2007  |  2006  |  2005  |  2004  |  2003  |  2002  |  2001  |  2000

Research Projects

One of the many challenges of software development and maintenance is the need to collaborate among many constituents and stakeholders. For example, clients interact with software development organizations; software-development organizations consist of many developers and maintainers within the same location and across different locations; and the development organization often outsources some of the testing efforts to independent test agencies. Each of these parties may reside in different locations, often across many very disparate time zones.

Project Dates: 
May 2009

In addition to the dynamic nature of software while executing, this dynamism extends to the evolution of the software's code itself. The software's evolution is often captured in its entirety by revision-control systems (such as CVS, Subversion, and Git). By utilizing this rich artifact, as well as other historical artifacts (e.g., bug-tracking systems and mailing lists), we can offer a number of techniques for recommending future actions to developers.

Project Dates: 
August 2011

Research shows that sharing one’s location can help people stay connected, coordinate daily activities, and provide a sense of comfort and safety [1]. Recently, smartphones and location-based services (LBS) have become widely available in developed countries [7], but only a small percentage of smartphone users have ever tried sharing lo­cation with other people [8]. Our work aims to understand real-world factors shaping behaviors and attitudes towards social location-sharing, especially in regards to why people avoid or abandon the technology, or limit their usage.

Research Area(s): 
Project Dates: 
May 2009

I am aiding core developers of the Linux kernel to use mutation analysis to improve kernel systems testing methods, and to verify critical algorithms. I am also investigating the use of bounded model checking (CBMC) on Linux kernel. As an outcome of this project so far we have identified 3 bugs in the Linux kernel. I am also applying mutation analysis on sqlite3 to improve its testing.

Research Area(s): 
Project Dates: 
August 2016

Bitcoin is a digital currency and payment platform that has been the source of much media attention. The currency is not backed by a government like most conventional currencies but is part of a democratic and dencentralized movement. Bitcoin transactions are pseudo-anonymous in a similar way to cash money. Why do people use this currency? How do their political values align with their usage of bitcoin? Furthermore, how does the community regulate itself in the absence of a formal hierarchical structure? Lastly, how do anonymous users form communities?

Research Area(s): 
Project Dates: 
October 2013

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.

Project Dates: 
September 2012

One method of facilitating developers to understand the complex inner nature of software that we have employed is the use of information visualization. Software is often so complex that even the developers who initially created it cannot understand all of the possible runtime behaviors that it can exhibit --- specifically, all of the bugs that it may contain. In order to present large code bases with innumerable characteristics and relationships of its components (e.g., instructions, variables, values, and timings) we have developed a number of novel visualizations of software.

Research Area(s): 
Project Dates: 
May 2001

Savasana is the first white-box approach that uses code analysis for reasoning about consistency of adaptation.

Savasana consists of two parts: Static Code Analysis runs on the system's code and Run-time Control manages the corresponding running system.

Research Area(s): 
Project Dates: 
January 2016

Pages