Research Interests:

  • Software Engineering, Program Comprehension, Software Maintenance and Evolution, Information Retrieval, Model-Driven Engineering, Computer Science Education

Current Projects:

  • An Improved Weighting and Querying Framework for TR-based Software Search
    Software maintenance and evolution make up a considerable portion of the time and effort spent during the life cycle of a software system. During this phase, the majority of a developer's time is spent on programming comprehension tasks. Feature location, impact analysis, and software summarization are examples of such tasks. Recent research in these areas has focused on improving each process to ease the burden on developers and decrease the time spent in each task through the use of textual information, dependency graphs, and execution traces. Furthermore, the success of text retrieval in other areas (e.g., traceability) have started new studies in automating feature location by the use of text retrieval techniques, such as the vector space model (VSM), latent semantic indexing (LSI), and latent Dirichlet allocation (LDA). This research focuses on improving such techniques by providing a framework that allows for the introduction of structural weighting and the usage of structured queries during the retrieval stages.
  • Debugging of Model Transformation Languages
    Collaborator: Jonathan Corley
    Model-driven engineering focuses on the development and utilization of domain specific models instead of the algorithmic concepts. Model transformations (MTs) are central artifacts in model-driven engineering (MDE) that define core operations on models. Like other software artifacts, MTs are subject to human error and, therefore, may possess defects (bugs). Some MDE tools provide basic support for debugging to aid developers in locating and removing these defects. Such debuggers are often limited to only providing basic step support (e.g., step in, step out, step over, run, and stop). These debuggers only provide support in the forward direction, requiring a developer to re-run a transformation if the step that caused the fault is passed. At times, this process can be infeasible due to the size of the models and the number of steps required to perform. This research focuses on the creation and development of advanced debugging techniques and tools (e.g., omniscient and query-based) for MTs.
  • Querying Based Methodologies to Software Debugging
    This research focuses on exploring the use of informal queries during software debugging tasks. We seek to identify how developers utilize informal queries during a maintenance task in object-oriented programming and model transformations. We conduct empirical human-based studies, and explore how developers acquire knowledge on a software system, specifically with regards to forming and using queries. This research seeks to identify common structure present in spontaneously formed informal queries as well as identifying how these queries impact both task completion and source navigation during a debugging session. We investigate what the existing tool support is to help developers answer these queries and investigate techniques for developing better query-based debugging systems.