Micro Patterns
in Agile Software

Presented by
Joshi, Ujjwal Kumar
11/27/13

Special Methods and Tools for IT Projects

1
Agenda
•
•
•
•

Introduction to Agile Software
Evolution of Micro Patterns in Agile Software Development
Introduction to Micro Patterns
Gil and Maman Approach
–
–
–
–
–

Methodology
Bug-linking Methodology
Survey: Collaborations
Main phases of Development
Conclusion

• References
11/27/13

Special Methods and Tools for IT Projects

2
Introduction to Agile Software
Agile Software development is a
group of software development
methods based on iterative and
incremental development, where
requirements and solutions evolve
through collaboration between selforganizing, cross-functional teams.
It promotes adaptive planning,
evolutionary development and
delivery and encourages rapid and
flexible responses to change.
Source: http://en.wikipedia.org/wiki/Agile_software_development#Agile_methods

11/27/13

Special Methods and Tools for IT Projects

3
Evolution of Micro Pattern in Agile
Software Development

11/27/13

Special Methods and Tools for IT Projects

4
Introduction to Micro Pattern
• Micro Pattern are similar to design pattern
but are at a lower level of abstraction with
respect to design pattern, their characteristics
is that they can be identified automatically.
• Gil and Maman defined the micro pattern
catalogue that consists of 27 micro pattern.
pattern

11/27/13

Special Methods and Tools for IT Projects

5
Introduction to Micro Pattern
• Gil and Maman stated that
75% of classes belong to at
least one micro pattern.
• Even though the Micro
patterns are correlated to each
others,
they
can
be
categorized.
• Anti-micro
pattern
are
associated
to
poor
programming and thus, they
are proved to be more fault
prone.
11/27/13

Fig. Micro Patterns in JAVA Code

Source: http://www.google.de/imgres

Special Methods and Tools for IT Projects

6
Fig. Global Map of the catalog, showing 8 catalogue and placement of 27 Micro Patterns
11/27/13

Special Methods and Tools for IT Projects

7
Non-Micro Pattern
(NMP)

Anti-Micro
Patterns
(AMP)

Class

Fault-prone Micro
Pattern
(FMP)

Other Micro
Pattern
(MP)
Fig. class Categorization using Micro Pattern
11/27/13

Special Methods and Tools for IT Projects

8
Micro Pattern Examples
• Implementor
– A concrete class, where all the methods override
inherited abstract methods.

• Function Pointer
– A class with a single public instance method, but
with no fields.

11/27/13

Special Methods and Tools for IT Projects

9
Gil and Maman Approach
Gil and Maman conducted their study of
Micro Patterns in following two basis:
• Floss-AR
– Web application
management.

for

research

publications

• jAPS
– Java framework for enterprise portal building
11/27/13

Special Methods and Tools for IT Projects

10
Methodology
• At first, they developed a tool to detect the micro
pattern present in the class using Arcelli and Maggioni
principle.
• They proposed a survey to the software development
team to discover which agile methodologies were
adopted.
• They belonged source code repository to link classes to
the bugs in order to find the relationship between
number of faults and anti-micro patterns.
• Then, they asses micro pattern fault proneness by the
means of faulty classes.
11/27/13

Special Methods and Tools for IT Projects

11
Methodology: Bug-Class linking
Source Code and the bug fixes are linked using
the Bachmann and Bernstein’s heuristics:
 Scan through the change logs for the bug reports in a
given format (e.g. fix bug, fix issue and so on).
 Exclude all false positive bug numbers (e.g. 2009-0607 10:47:39-0400 and so on).
 Check if there are other potential bug number
formats or false positive number formats, add the
new formats and scan the change iteratively.
 Check if potential bug numbers exist in the bugtracking database with their status marked as fixed.
11/27/13

Special Methods and Tools for IT Projects

12
Survey: Collaborations
Survey Question on Collaboration
Question

Very
Good

Good

Discrete

Adequate

Not
Adequate

How would you
describe the
collaboration of
the team?

4

1

0

0

0

Table 1. floss-AR Developers Survey (5 developers)

11/27/13

Special Methods and Tools for IT Projects

13
Survey Question on Collaboration
Question

Yes

No

The collaboration inside the team increased
the productivity?

5

0

Did you take part in developing the whole
system?

3

2

Do you have favorite programming styles?

2

3

Have the project decision been discussed
together with the team?

5

0

Did you interact directly with the customer?

4

1

Did you use refactoring?

5

0

Table 2. floss-AR Developers Survey (5 developers)

11/27/13

Special Methods and Tools for IT Projects

14
Survey Question to the Project Manager
Question

Answer

Which Agile methodologies did you use during software
development?

Pair Programming
Stand up Meeting
Refactoring
On Site Customer

How often did you interact with the customer?

1-2 times per month

How often did you use refactoring?

2-3 times per month

Table 3. floss-AR Project Manager

11/27/13

Special Methods and Tools for IT Projects

15
Main phases of development

11/27/13

Special Methods and Tools for IT Projects

16
Source Code Analysis for jAPS
Micro Pattern

1.0

1.2

1.4

1.6

1.6.2

1.8

1.8.2

2.0

Joiner

0

0

0

0

0

0

0

0

Function
Pointer

27.1

23.3

27.5

18.7

19.5

18.1

16.7

7.18

Sink

15.3

3.9

15.6

4.14

3.5

2.7

2.78

2.45

Extender

25

27.9

27.5

36.1

35.9

37.2

34.6

23.1

6.1

0

2.2

2.7

1.89

2.02

1.22

Functionobject 0.71
…..
Taxonomy

0

0

0

0

0

0

0

0

Pool

0

0

0

0.55

0.54

0.27

0

0.35

Sampler

0

0

0

0

0

0

0

0

Record

0

0

0

0

0

0

0

0

Overrider

0

0

0.3

0.82

0.82

0.54

0.5

0.87

Total

84

73

85.7

77

76.6

76.4

74.4

72.1

Table showing source code analysis for jAPS
11/27/13

Special Methods and Tools for IT Projects

17
Source Code Analysis for floss-AR
Micro Pattern

CA

SAR

SS

OS

2.1.1

Designator

1.5

1.5

1.6

1.38

0.9

Taxonomy

0

0

0

0

0

Pool

0.2

0.2

0.36

0.3

0.76

Joiner

0

0

0

0

0

Extender

28.4

28.8

27.7

28.4

16.58

Function Pointer

20.2

19.7

22.8

17.8

13.31

Functionobject

2.5

2.4

2

4.45

1.53

Overrider

0.33

0.34

0.29

1.07

0.2

Total

85.1

84.8

85.8

75.5

81.6

…..

Table showing source code analysis for floss-AR
11/27/13

Special Methods and Tools for IT Projects

18
Conclusion
OS(%)
Distribution
of faulty
classes

CA(%)

SAR(%)

SS(%)

2.1.1(%)

NMP

63.12

62.41

71.63

70.92

23.4

MP

36.87

37.58

28.36

29.07

76.59

Percentage of MP Faults
Fault % of AMP

12.76

12.05

7.8

7.8

23.4

Fault % of fault-prone MP
faults

18.43

14.89

11.34

13.47

23.4

Fault % of other MP

5.67

10.63

9.21

7.8

20.56

Non Micro Pattern are the most faulty Micro Pattern
Both systems respect the Gill and Maman statement. This means the Micro Patterns are good descriptors
for the software development.
Micro Patterns such as Function Pointer, Sink and Extender are common to all the releases of Floss-AR and
jAPS. So, they have highest value in the distribution. Whereas, Taxonomy, Pool, Sampler and Record are
almost absent so, they have minimal value.
11/27/13

Special Methods and Tools for IT Projects

19
References





http://www.japsportal.org ; JAPS: Java Agile Portal System
Gil and Maman case study
http://veprints.unica.it/859/1/DeStefanis_PHD_Thesis.pdf
http://www.cs.technion.ac.il/~imaman/stuff/ip-oopsla05-c.pdf

11/27/13

Special Methods and Tools for IT Projects

20
There are no significant bugs in our released software
that any significant number of users want fixed.
--- Bill Gates

11/27/13

Special Methods and Tools for IT Projects

21

Micro patterns in agile software

  • 1.
    Micro Patterns in AgileSoftware Presented by Joshi, Ujjwal Kumar 11/27/13 Special Methods and Tools for IT Projects 1
  • 2.
    Agenda • • • • Introduction to AgileSoftware Evolution of Micro Patterns in Agile Software Development Introduction to Micro Patterns Gil and Maman Approach – – – – – Methodology Bug-linking Methodology Survey: Collaborations Main phases of Development Conclusion • References 11/27/13 Special Methods and Tools for IT Projects 2
  • 3.
    Introduction to AgileSoftware Agile Software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between selforganizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery and encourages rapid and flexible responses to change. Source: http://en.wikipedia.org/wiki/Agile_software_development#Agile_methods 11/27/13 Special Methods and Tools for IT Projects 3
  • 4.
    Evolution of MicroPattern in Agile Software Development 11/27/13 Special Methods and Tools for IT Projects 4
  • 5.
    Introduction to MicroPattern • Micro Pattern are similar to design pattern but are at a lower level of abstraction with respect to design pattern, their characteristics is that they can be identified automatically. • Gil and Maman defined the micro pattern catalogue that consists of 27 micro pattern. pattern 11/27/13 Special Methods and Tools for IT Projects 5
  • 6.
    Introduction to MicroPattern • Gil and Maman stated that 75% of classes belong to at least one micro pattern. • Even though the Micro patterns are correlated to each others, they can be categorized. • Anti-micro pattern are associated to poor programming and thus, they are proved to be more fault prone. 11/27/13 Fig. Micro Patterns in JAVA Code Source: http://www.google.de/imgres Special Methods and Tools for IT Projects 6
  • 7.
    Fig. Global Mapof the catalog, showing 8 catalogue and placement of 27 Micro Patterns 11/27/13 Special Methods and Tools for IT Projects 7
  • 8.
    Non-Micro Pattern (NMP) Anti-Micro Patterns (AMP) Class Fault-prone Micro Pattern (FMP) OtherMicro Pattern (MP) Fig. class Categorization using Micro Pattern 11/27/13 Special Methods and Tools for IT Projects 8
  • 9.
    Micro Pattern Examples •Implementor – A concrete class, where all the methods override inherited abstract methods. • Function Pointer – A class with a single public instance method, but with no fields. 11/27/13 Special Methods and Tools for IT Projects 9
  • 10.
    Gil and MamanApproach Gil and Maman conducted their study of Micro Patterns in following two basis: • Floss-AR – Web application management. for research publications • jAPS – Java framework for enterprise portal building 11/27/13 Special Methods and Tools for IT Projects 10
  • 11.
    Methodology • At first,they developed a tool to detect the micro pattern present in the class using Arcelli and Maggioni principle. • They proposed a survey to the software development team to discover which agile methodologies were adopted. • They belonged source code repository to link classes to the bugs in order to find the relationship between number of faults and anti-micro patterns. • Then, they asses micro pattern fault proneness by the means of faulty classes. 11/27/13 Special Methods and Tools for IT Projects 11
  • 12.
    Methodology: Bug-Class linking SourceCode and the bug fixes are linked using the Bachmann and Bernstein’s heuristics:  Scan through the change logs for the bug reports in a given format (e.g. fix bug, fix issue and so on).  Exclude all false positive bug numbers (e.g. 2009-0607 10:47:39-0400 and so on).  Check if there are other potential bug number formats or false positive number formats, add the new formats and scan the change iteratively.  Check if potential bug numbers exist in the bugtracking database with their status marked as fixed. 11/27/13 Special Methods and Tools for IT Projects 12
  • 13.
    Survey: Collaborations Survey Questionon Collaboration Question Very Good Good Discrete Adequate Not Adequate How would you describe the collaboration of the team? 4 1 0 0 0 Table 1. floss-AR Developers Survey (5 developers) 11/27/13 Special Methods and Tools for IT Projects 13
  • 14.
    Survey Question onCollaboration Question Yes No The collaboration inside the team increased the productivity? 5 0 Did you take part in developing the whole system? 3 2 Do you have favorite programming styles? 2 3 Have the project decision been discussed together with the team? 5 0 Did you interact directly with the customer? 4 1 Did you use refactoring? 5 0 Table 2. floss-AR Developers Survey (5 developers) 11/27/13 Special Methods and Tools for IT Projects 14
  • 15.
    Survey Question tothe Project Manager Question Answer Which Agile methodologies did you use during software development? Pair Programming Stand up Meeting Refactoring On Site Customer How often did you interact with the customer? 1-2 times per month How often did you use refactoring? 2-3 times per month Table 3. floss-AR Project Manager 11/27/13 Special Methods and Tools for IT Projects 15
  • 16.
    Main phases ofdevelopment 11/27/13 Special Methods and Tools for IT Projects 16
  • 17.
    Source Code Analysisfor jAPS Micro Pattern 1.0 1.2 1.4 1.6 1.6.2 1.8 1.8.2 2.0 Joiner 0 0 0 0 0 0 0 0 Function Pointer 27.1 23.3 27.5 18.7 19.5 18.1 16.7 7.18 Sink 15.3 3.9 15.6 4.14 3.5 2.7 2.78 2.45 Extender 25 27.9 27.5 36.1 35.9 37.2 34.6 23.1 6.1 0 2.2 2.7 1.89 2.02 1.22 Functionobject 0.71 ….. Taxonomy 0 0 0 0 0 0 0 0 Pool 0 0 0 0.55 0.54 0.27 0 0.35 Sampler 0 0 0 0 0 0 0 0 Record 0 0 0 0 0 0 0 0 Overrider 0 0 0.3 0.82 0.82 0.54 0.5 0.87 Total 84 73 85.7 77 76.6 76.4 74.4 72.1 Table showing source code analysis for jAPS 11/27/13 Special Methods and Tools for IT Projects 17
  • 18.
    Source Code Analysisfor floss-AR Micro Pattern CA SAR SS OS 2.1.1 Designator 1.5 1.5 1.6 1.38 0.9 Taxonomy 0 0 0 0 0 Pool 0.2 0.2 0.36 0.3 0.76 Joiner 0 0 0 0 0 Extender 28.4 28.8 27.7 28.4 16.58 Function Pointer 20.2 19.7 22.8 17.8 13.31 Functionobject 2.5 2.4 2 4.45 1.53 Overrider 0.33 0.34 0.29 1.07 0.2 Total 85.1 84.8 85.8 75.5 81.6 ….. Table showing source code analysis for floss-AR 11/27/13 Special Methods and Tools for IT Projects 18
  • 19.
    Conclusion OS(%) Distribution of faulty classes CA(%) SAR(%) SS(%) 2.1.1(%) NMP 63.12 62.41 71.63 70.92 23.4 MP 36.87 37.58 28.36 29.07 76.59 Percentage ofMP Faults Fault % of AMP 12.76 12.05 7.8 7.8 23.4 Fault % of fault-prone MP faults 18.43 14.89 11.34 13.47 23.4 Fault % of other MP 5.67 10.63 9.21 7.8 20.56 Non Micro Pattern are the most faulty Micro Pattern Both systems respect the Gill and Maman statement. This means the Micro Patterns are good descriptors for the software development. Micro Patterns such as Function Pointer, Sink and Extender are common to all the releases of Floss-AR and jAPS. So, they have highest value in the distribution. Whereas, Taxonomy, Pool, Sampler and Record are almost absent so, they have minimal value. 11/27/13 Special Methods and Tools for IT Projects 19
  • 20.
    References     http://www.japsportal.org ; JAPS:Java Agile Portal System Gil and Maman case study http://veprints.unica.it/859/1/DeStefanis_PHD_Thesis.pdf http://www.cs.technion.ac.il/~imaman/stuff/ip-oopsla05-c.pdf 11/27/13 Special Methods and Tools for IT Projects 20
  • 21.
    There are nosignificant bugs in our released software that any significant number of users want fixed. --- Bill Gates 11/27/13 Special Methods and Tools for IT Projects 21

Editor's Notes

  • #8 shows a global map of the catalog, including the 8 categories, and the placement of the 27 micro patterns into these. The X dimension corresponds to class behavior. The Y dimension of the figure correspond to class state: categories at the upper portion of the map are of patterns restricting the class state more than patterns which belong to categories at the bottom of the map.
  • #11 They investigated if the agile methodologies influence the distribution of micro pattern during software evolution by studying two industrial cases:
  • #12 Arcelli and Maggioni suggested an operative definition to automate micro pattern detection. On that basis, they developed a tool to detect the micro pattern present in the class.
  • #13 Based on these heuristics, they connected the source code in order to fix a bug by taking into account the associated Micro pattern and the times a class have been debugged and then, they evaluated the fault proneness of the micro patterns.
  • #15 Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure. In simple way, Refactoring means making code simple, clear and elegant.
  • #19 This suggest that the constant application of the Agile methodologies during the software development across different releases may impact positively the software quality, carrying as side effect the reduction in the use of bad programming practices.