Lab members conduct research in the following areas.

  • Incorporating Eye tracking into Integrated Development Environments. Eye trackers have been a critical research tool in understanding how people comprehend visual stimuli. Research-grade eye trackers work by presenting an image or text (i.e., stimuli) on a computer screen and then using the data from cameras, determine the location (i.e., xy-coordinate) the person (i.e., subject) is looking. Accurate research-grade eye trackers only work on some fixed stimuli (i.e., an image or text) that fits on the computer screen. Changes to the stimuli (screen), such as scrolling, present a very complex problem. There is no existing support (in any commercial eye trackers) for a subject to interactively use an editor or switch between different files. Basically, existing systems do not keep track of what line in which file is present on the screen (i.e., currently being viewed). The project addresses this limitation we introduce iTrace, an infrastructure that allows for scrolling and switching between files during an eye tracking study. Support is added not just for source code but also other artifacts such as bug reports and stack overflow. A visualization suite is also currently being developed. This eye-tracking enabled infrastructure for studying program comprehension has the potential to transform the way lab studies and field studies are designed and executed as it advances the state of the art in conducting eye tracking studies in software engineering.

  • Empirical studies. Empirical studies are conducted using both traditional methods as well as eye-tracking equipment to determine the usefulness of software artifacts such as UML class diagrams, source code, bug reports, and stack overflow documents. In the case of UML class diagrams, several class diagram layout techniques are introduced and assessed. The layouts are based on stereotype information namely control, boundary and entity class stereotypes that aid in the understanding of roles and responsibilities of classes. This directly supports software maintenance and evolution. Eye-tracking studies on source code analyze how developers read code and find defects as well as if the use of a particular identifier style i.e., camel case vs. underscore or different brace placement schemes have an effect on efficiency and accuracy. Several code summarization experiments also focus on how developers read stack overflow documents and bug reports in addition to source code. Eye-tracking experiments give additional insight into the behavior and performance of software developers while on a specific task, since it is based on actual eye movements and not solely on accuracy and speed of answers given by subjects. Eye-tracking data generated from the experiments provides an objective metric to measure the effectiveness of the given method.

  • Software Traceability. The lack of maintaining design documentation in parallel with changes to source code causes traceability links present between these artifacts to decompose. The goal of this project is to maintain and evolve traceability links effortlessly using eye gaze input. Techniques for visualizing traceability links are also being developed. This is a new area that researchers are only starting to address. A recent contribution was made to incorporate eye tracking in the software traceability field to help with retrieving links.

  • Software Visualization. A third research area deals with the use of visualizations to support researchers and developers. A modified version of UML class diagrams mainly Onion UML diagrams was developed. In addition various visualizations for eye tracking data collected within the IDE is being developed as a visualization suite. Mining Software Repositories. The focus currently is on two areas: sentiment analysis and duplicate bug detection. In the first area of sentiment analysis, commit logs are analyzed and sentiment for projects is reported along with advantages and disadvantages of current tools. In the second area of duplicate bug detection, machine learning models are used to predict duplicate bugs. We mine bug repositories and commit logs to test several hypotheses. Several machine learning and information retrieval techniques are used.