Automated Support for Development, Maintenance, and Testing in the Presence of Implicit Control Flow

Although object-oriented languages can improve programmingpractices, their characteristics may introducenew problems for software engineers. One important problemis the presence of implicit control flow caused byexception handling and polymorphism. Implicit controlflow causes complex interactions, and can thus complicatesoftware-engineering tasks. To address this problem, wepresent a systematic and structured approach, for supportingthese tasks, based on the static and dynamic analyses ofconstructs that cause implicit control flow. Our approachprovides software engineers with information for supportingand guiding development and maintenance tasks. Wealso present empirical results to illustrate the potential usefulnessof our approach. Our studies show that, for thesubjects considered, complex implicit control flow is alwayspresent and is generally not adequately exercised.

[1]  Andrew A. Chien,et al.  Precise concrete type inference for object-oriented languages , 1994, OOPSLA 1994.

[2]  John A. Clark,et al.  Automated test‐data generation for exception conditions , 2000 .

[3]  Donglin Liang,et al.  Efficient Computation of Parameterized Pointer Information for Interprocedural Analyses , 2001, SAS.

[4]  Saurabh Sinha,et al.  Analysis and Testing of Programs with Exception Handling Constructs , 2000, IEEE Trans. Software Eng..

[5]  Barbara G. Ryder,et al.  Data-flow-based Testing of Object-Oriented Libraries , 1999 .

[6]  Joshua J. Bloch Effective Java : programming language guide , 2001 .

[7]  Martin P. Robillard,et al.  Analyzing exception flow in Java programs , 1999, ESEC/FSE-7.

[8]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[9]  Kwangkeun Yi,et al.  Exception Analysis for Java , 1999, ECOOP Workshops.

[10]  David S. Rosenblum,et al.  Design and evaluation of a wide-area event notification service , 2001, TOCS.

[11]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

[12]  Richard P. Martin,et al.  Compiler-directed program-fault coverage for highly available Java internet services , 2003, 2003 International Conference on Dependable Systems and Networks, 2003. Proceedings..

[13]  William G. Griswold,et al.  Dynamically discovering likely program invariants to support program evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[14]  Kwangkeun Yi,et al.  Interprocedural exception analysis for Java , 2001, SAC.

[15]  Jens Palsberg,et al.  Object-oriented type inference , 1991, OOPSLA 1991.