Micro Patterns in Agile Software

In this paper we present a study on micro patterns in different releases of two software systems developed with Object Oriented technologies and Agile process. Micro patterns are design decisions in code that can be easily automatically recognised. Gil and Maman introduced the concept to support providing objective assessment of design decisions [1]. They catalogued 27 micro patterns that capture a variety of programming practices in Java. Micro patterns can be a useful metrics in order to measure the quality of software by showing that certain categories of micro patterns are more fault prone than others, and that the classes that do not correspond to any category of micro patterns are more likely to be faulty. In our study we present some empirical results on two case studies of systems developed with Agile methodologies, and compare them to previous results obtained for non Agile systems. In particular we have verified that the distribution of micro patterns in a software system developed using Agile methodologies does not differ from the distribution studied in other systems, and that the micro patterns fault-proneness is about the same. We also analyzed how the distribution of micro patterns changes in different releases of the same software system. We demonstrate that there is a relationship between the number of faults and the classes that do not match with any micro patterns. We found that these classes are more likely to be fault-prone than the others even in software developed with Agile methodologies.

[1]  Robert J. Winter Cpt Agile Software Development: Principles, Patterns, and Practices , 2014 .

[2]  Michele Marchesi,et al.  Micro Pattern Fault-Proneness , 2012, 2012 38th Euromicro Conference on Software Engineering and Advanced Applications.

[3]  James Noble,et al.  How much is just enough?: some documentation patterns on Agile projects , 2010, EuroPLoP.

[4]  Orit Hazzan,et al.  The Agile Manifesto , 2014 .

[5]  Abraham Bernstein,et al.  Software process data quality and characteristics: a historical view on open and closed source projects , 2009, IWPSE-Evol '09.

[6]  James Noble,et al.  Understanding Team Dynamics in Distributed Agile Software Development , 2012, XP.

[7]  Tore Dybå,et al.  Empirical studies of agile software development: A systematic review , 2008, Inf. Softw. Technol..

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

[9]  Alberto Sillitti Agile Processes in Software Engineering and Extreme Programming, 11th International Conference, XP 2010, Trondheim, Norway, June 1-4, 2010. Proceedings , 2010, XP.

[10]  Lerina Aversano,et al.  Relationship between design patterns defects and crosscutting concern scattering degree: an empirical study , 2009, IET Softw..

[11]  F Arcelli Fontana,et al.  Metrics-based Detection of Micro Patterns to improve the Assesment of Software Quality , 2009 .

[12]  Welf Löwe,et al.  Automatic design pattern detection , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[13]  Michele Marchesi,et al.  An analysis of anti-micro-patterns effects on fault-proneness in large Java systems , 2012, SAC '12.

[14]  Francesca Arcelli Fontana,et al.  Metrics-based detection of micro patterns , 2010, WETSoM '10.

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

[16]  Itay Maman,et al.  Micro patterns in Java code , 2005, OOPSLA '05.

[17]  Raman Ramsin,et al.  Process Patterns for Agile Methodologies , 2007, Situational Method Engineering.

[18]  Michele Marchesi,et al.  An Empirical Study of Software Metrics for Assessing the Phases of an Agile Project , 2012, Int. J. Softw. Eng. Knowl. Eng..

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

[20]  Sjaak Brinkkemper,et al.  Situational Method Engineering : Fundamentals and Experiences , 2011 .

[21]  Jennifer Pérez,et al.  Software Product Line Engineering Approach for Enhancing Agile Methodologies , 2009, XP.