Dependence Anti Patterns

A dependence anti pattern is a dependence structure that may indicate potential problems for on-going software maintenance and evolution. Dependence anti patterns are not structures that must always be avoided. Rather, they denote warnings that should be investigated. This paper defines a set of dependence anti patterns and presents a series of case studies that show how these patterns can be identified using techniques for dependence analysis and visualization. The paper reports the results of this analysis on six real world programs, two of which are open source and four of which are part of production code in use with Daimler.

[1]  Martin Shepperd,et al.  Foundations of software measurement , 1995 .

[2]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[3]  Arie van Deursen,et al.  Program plan recognition for Year 2000 tools , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[4]  Conor Ryan,et al.  Automatic Re-engineering of Software Using Genetic Programming , 1999, Genetic Programming Series.

[5]  F. Arcelli,et al.  Enhancing Software Evolution through Design Pattern Detection , 2007, Third International IEEE Workshop on Software Evolvability 2007.

[6]  Norman E. Fenton,et al.  Measurement : A Necessary Scientific Basis , 2004 .

[7]  Mark C. Paulk,et al.  Capability Maturity Model for Software , 2001 .

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

[9]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[10]  Barbara G. Ryder,et al.  Effectively exploiting parallelism in data flow analysis , 2005, The Journal of Supercomputing.

[11]  P. Tonella,et al.  A cliche-based environment to support architectural reverse engineering , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[12]  Henry G. Dietz,et al.  Abstracting plan-like program information: a demonstration , 1994, Proceedings 1994 International Conference on Software Maintenance.

[13]  Michael Wolfe,et al.  Beyond induction variables , 1992, PLDI '92.

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

[15]  Maurice H. Halstead,et al.  Elements of software science (Operating and programming systems series) , 1977 .

[16]  Norman E. Fenton,et al.  Software Metrics: A Rigorous Approach , 1991 .

[17]  Ralph Johnson,et al.  Design Patterns CD: Elements of Reusable Object-Oriented Software, (CD-ROM) , 1998 .

[18]  Darrel C. Ince,et al.  A critique of three metrics , 1994, J. Syst. Softw..

[19]  M. Shepperd,et al.  A critique of cyclomatic complexity as a software metric , 1988, Softw. Eng. J..

[20]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[21]  Neville Churcher,et al.  Comments on "A Metrics Suite for Object Oriented Design" , 1995, IEEE Trans. Software Eng..

[22]  Alex Quilici,et al.  Some experiments toward understanding how program plan recognition algorithms scale , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[23]  Mark Harman,et al.  VADA: a transformation-based system for variable dependence analysis , 2002, Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation.

[24]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

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

[26]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[27]  Richard C. Waters,et al.  Cliché-based program editors , 1994, TOPL.