The overall goal of our research is to develop efficient techniques and tools
that will automate, or partially automate, development, testing, and
maintenance tasks. Our research has involved program-analysis-based software
engineering, with an emphasis on regression testing, analysis and
testing of imperative and object-oriented software, and development of
software tools. Our recent work has focused on the investigation of the
scalability issues of these techniques, through algorithm development
and empirical evaluation.
Our research has four main components:
- We develop techniques to assist with tasks such as program understanding,
regression testing, test-case selection, component integration,
and fault localization
- We develop techniques to compute and provide the kinds of analysis
information about a program, such as data-flow, slices, and pointer,
needed for these software engineering tasks
- We build and maintain an infrastructure for implementation and
experimentation for both C, through Aristotle, and Java, through JABA
- We perform experiments for many reasons including identification
of software characteristics, demonstration of the usefulness of our
techniques and tools, and guidance for future work.
There are many opportunities to join our research group:
as a student
Ph.D. research, as a student doing an M.S. thesis, or as an undergraduate
wants to learn more about research. There are also opportunities to work
as a Research Assistant on a supported project or to do project-related
internships with our industry partners. If you are interested in
the possibility of joining our research group, send e-mail to Prof.
to make an appointment.