Analysis-based Process Enforcement for Team-oriented Software Development
Project Description
Research Problem
The new goal of the next generation of integrated development environments (IDEs) is utilized guidance for development processes. Such IDEs, like IBM’s Team Concert, try both to guide developers in each process activity and to enforce a specific result, e.g., all existing tests have to pass before applied changes can be committed to the team repository. In this project, we’re going to integrate deep program analysis techniques, such as change impact analysis [1, 2], with such tool support to identify those changes that do not break any test and, thus can safely committed to the shared repository. Moreover, the analysis will be guide developers in finding the root cause in the edit of a subsequent test failure, and in calculating changes left uncovered by the current test suite. In combination with test generation, the program analysis can even augment existing tests or generate new tests for such uncovered changes.
Research Area
A change impact analysis computes an abstract representation of a program edit, subdividing it into a set of atomic changes [1]. This representation enables a classification of different kinds of changes and their dependences, making edits amenable to program analysis. A mapping of atomic changes to program representations, such as an abstract syntax tree or a call graph, allows for a deep analysis of structural and behavioral change effects [2]. The concrete change impact can be computed in terms of possible behavioral effects on existing tests. Several classifications of changes have been shown useful in support of various development activities, e.g., syntactically dependent changes (that are required to compute a compilable program version), semantically dependent changes (that require each other to result in the expected program behavior), failure-inducing changes (that cause the worsening outcome of a test). Based on these classifications, core development activities, such as debugging, fault localization, and test result classification, can be supported by tools [3].
Applied Technology
-
•Development using IBM's Team Concert, Eclipse-based IDE
-
•Commercial and open-source tool platforms
-
•Jazz collaboration platform [http://jazz.net]
-
•Eclipse development tooling platform [http://www.eclipse.org]
-
•Test-based development [http://www.junit.org]
-
•Java, XML, Ant, Scripting languages