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

  1. Development using IBM's Team Concert, Eclipse-based IDE

  2. Commercial and open-source tool platforms

    1. Jazz collaboration platform [http://jazz.net]

    2. Eclipse development tooling platform [http://www.eclipse.org]

  3. Test-based development [http://www.junit.org]

  4. Java, XML, Ant, Scripting languages

Contact

Jan Wloka

OFFICE

CoRE 205

Phone

+1 732 445 2001 x 9222

Email

jwloka_AT_cs.rutgers.edu

[1] Ryder, Barbara G. and Tip, Frank, “Change Impact Analysis for Object-oriented Programs”, in Proceedings of the ACM SIGPLAN Workshop on Program Analysis for Software Tools and Engineering (PASTE), pp 46-53, June 2001.

[2] Ren, Xiaoxia, Shah, Fenil, Tip, Frank, Ryder, Barbara G., and Chesley, Ophelia, “Chianti: A Tool for Practical Change Impact Analysis of Java Programs”, in Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems and Applications (OOPSLA), pp 432-448, October 2004.

[3] Ren, Xiaoxia, Chesley, Ophelia, and Ryder, Barbara G., “CRISP, A Debugging Tool for Java Programs”, IEEE Transactions on Software Engineering, Volume 32, Number 9, September 2006, pp 1-16.