Assessing the impact of global variables on program dependence and dependence clusters

This paper presents results of a study of the effect of global variables on the quantity of dependence in general and on the presence of dependence clusters in particular. The paper introduces a simple transformation-based analysis algorithm for measuring the impact of globals on dependence. It reports on the application of this approach to the detailed assessment of dependence in an empirical study of 21 programs consisting of just over 50K lines of code. The technique is used to identify global variables that have a significant impact upon program dependence and to identify and characterize the ways in which global variable dependence may lead to dependence clusters. In the study, over half of the programs include such a global variable and a quarter have one that is solely responsible for a dependence cluster.

[1]  Paolo Tonella,et al.  Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis , 2003, IEEE Trans. Software Eng..

[2]  Stephen R. Schach,et al.  Categorization of common coupling and its application to the maintainability of the Linux kernel , 2004, IEEE Transactions on Software Engineering.

[3]  Mark Harman,et al.  A post-placement side-effect removal algorithm , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[4]  Malcolm Munro,et al.  Software Maintenance and Evolution , 2003 .

[5]  Neil D. Jones,et al.  Program Flow Analysis: Theory and Application , 1981 .

[6]  Mark Harman,et al.  An Empirical Study of Executable Concept Slice Size , 2006, 2006 13th Working Conference on Reverse Engineering.

[7]  Charles N. Fischer,et al.  Crafting a Compiler , 1988 .

[8]  Thomas W. Reps,et al.  Solving Demand Versions of Interprocedural Analysis Problems , 1994, CC.

[9]  Francoise Balmas,et al.  Using dependence graphs as a support to document programs , 2002, Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation.

[10]  Mark Harman,et al.  Search Based Approaches to Component Selection and Prioritization for the Next Release Problem , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[11]  John G. P. Barnes,et al.  High Integrity Software - The SPARK Approach to Safety and Security , 2003 .

[12]  Geoffrey Feldman Extending pocket PC apps written in C with VB , 2002 .

[13]  Aniello Cimitile,et al.  A Specification Driven Slicing Process for Identifying Reusable Functions , 1996, J. Softw. Maintenance Res. Pract..

[14]  Mark Harman,et al.  5 th IEEE International Workshop on Program Comprehension (IWPC'97) , 1997 .

[15]  David W. Binkley,et al.  A large-scale empirical study of forward and backward static slice size and context sensitivity , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[16]  Nada R. Sanders,et al.  Operations Management An Integrated Approach , 2005 .

[17]  Mark Harman,et al.  Results from a large-scale study of performance optimization techniques for source code analyses based on graph reachability algorithms , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[18]  Arun Lakhotia,et al.  CHALLENGES IN GETTING ‘FORMAL’ WITH VIRUSES , 2003 .

[19]  Mark Harman,et al.  The impact of input domain reduction on search-based test data generation , 2007, ESEC-FSE '07.

[20]  Mark Harman,et al.  Dependence Anti Patterns , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering - Workshops.

[21]  Tao Jiang,et al.  Locating dependence structures using search-based slicing , 2008, Inf. Softw. Technol..

[22]  David W. Binkley,et al.  Semantics Guided Regression Test Cost Reduction , 1997, IEEE Trans. Software Eng..

[23]  Mark Harman,et al.  Code extraction algorithms which unify slicing and concept assignment , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[24]  Suraj C. Kothari,et al.  Program Slice Browser , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[25]  Mark Harman,et al.  Characterising, Explaining, and Exploiting the Approximate Nature of Static Analysis through Animation , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[26]  Mark Harman,et al.  Empirical study of optimization techniques for massive slicing , 2007, ACM Trans. Program. Lang. Syst..

[27]  Mark Harman,et al.  An empirical study of the relationship between the concepts expressed in source code and dependence , 2008, J. Syst. Softw..

[29]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[30]  Jens Krinke,et al.  Barrier slicing and chopping , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[31]  David Eichmann,et al.  Program and interface slicing for reverse engineering , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[32]  D. L. Fisher Global variables versus local variables , 1983, Softw. Pract. Exp..

[33]  Peter Sestoft,et al.  Replacing function parameters by global variables , 1989, FPCA.

[34]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..

[35]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[36]  David Eichmann,et al.  Program and interface slicing for reverse engineering , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[37]  Rainer Koschke,et al.  Locating Features in Source Code , 2003, IEEE Trans. Software Eng..

[38]  Jens Krinke,et al.  Static slicing of threaded programs , 1998, PASTE '98.

[39]  Jim Webber,et al.  Gotos Considered Harmful and Other Programmers' Taboos , 2000, PPIG.

[40]  Mark Harman,et al.  Forward slices are smaller than backward slices , 2005, Fifth IEEE International Workshop on Source Code Analysis and Manipulation (SCAM'05).

[41]  Mark Harman,et al.  Evaluating Key Statements Analysis , 2008, 2008 Eighth IEEE International Working Conference on Source Code Analysis and Manipulation.

[42]  Mark Harman,et al.  Analysis and visualization of predicate dependence on formal parameters and global variables , 2004, IEEE Transactions on Software Engineering.

[43]  Guy L. Steele,et al.  C, a reference manual , 1984 .

[44]  Mark Harman,et al.  A survey of empirical results on program slicing , 2004, Adv. Comput..

[45]  Tao Jiang,et al.  Analysis of Procedure Splitability , 2008, 2008 15th Working Conference on Reverse Engineering.

[46]  Mark Harman,et al.  4 th International Workshop on Source Code Analysis and Manipulation (SCAM 04) , 2004 .

[47]  Walter F. Stenning,et al.  AN EMPIRICAL STUDY , 2003 .

[48]  Mark David Weiser,et al.  Program slices: formal, psychological, and practical investigations of an automatic program abstraction method , 1979 .

[49]  Neil D. Jones,et al.  Program flow analysis - theory and applications , 1981, Prentice Hall software series.

[50]  Mark Harman,et al.  Locating dependence clusters and dependence pollution , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[51]  P. Armitage,et al.  Statistical methods in medical research. , 1972 .

[52]  Mark Harman,et al.  Animated Visualisation of Static Analysis: Characterising, Explaining and Exploiting the Approximate Nature of Static Analysis , 2006 .

[53]  Mark Harman,et al.  Testability transformation , 2004, IEEE Transactions on Software Engineering.

[54]  Ricky E. Sward,et al.  Re-engineering global variables in Ada , 2004, SIGAda '04.

[55]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[56]  Spiros Mancoridis,et al.  On the automatic modularization of software systems using the Bunch tool , 2006, IEEE Transactions on Software Engineering.

[57]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.

[58]  Mark Harman,et al.  A multiple hill climbing approach to software module clustering , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[59]  Mark Harman,et al.  An empirical study of predicate dependence levels and trends , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[60]  Arun Lakhotia,et al.  Restructuring programs by tucking statements into functions , 1998, Inf. Softw. Technol..

[61]  Sue Black,et al.  Computing ripple effect for software maintenance , 2001, J. Softw. Maintenance Res. Pract..

[62]  Mary Shaw,et al.  Global variable considered harmful , 1973, SIGP.

[63]  Mark Harman,et al.  An empirical study of static program slice size , 2007, TSEM.

[64]  Mads Torgersen,et al.  The c# programming language, third edition , 2008 .