A major part of our research activity is the development and manitenance of experimental systems for use in our research. These systems consist of both program-analysis infrastructure and software subjects.
Our program-analysis infrastructure provide a platform on which we can implement new algorithms and techniques and experiment with real program. Our work on this infrastructure also provides insight into the construction of such systems. The infrastructure consists of parsers that gather language-specific information, such as control-flow, local data-flow, and symbol table, about a program. Other tools use this information to perform additional analyses, such as data-flow, control-dependence, pointer, slicing, and visualizations. We have three major components of the program-analysis infractructure: the Aristotle Analysis System, the Java Architecture for Bytecode Analysis, and the Rational Apex System. Still other tools provide information for software-engineering tasks, such as testing, regression testing, debugging, test-suite management, and program understanding. For example, Tarantula provides assistance in debugging and DejaVu provides regression test selection.
Another important part of our research activity is the collection and use of software subjects for use in experimentation. Our subjects consist of programs, versions, fault data, and test suites in languages such as C, Java, and Ada-83. We have used these subjects for experimentation and made them available to other researchers.