Making communications land - Are they received and understood as intended? we...
Micro patterns in agile software
1. Micro Patterns
in Agile Software
Presented by
Joshi, Ujjwal Kumar
11/27/13
Special Methods and Tools for IT Projects
1
2. 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
3. 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
4. Evolution of Micro Pattern in Agile
Software Development
11/27/13
Special Methods and Tools for IT Projects
4
5. 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
6. 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
7. 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
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 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
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
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
13. 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
14. 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
15. 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
16. Main phases of development
11/27/13
Special Methods and Tools for IT Projects
16
18. 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
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 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
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 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
Notas del editor
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.
They investigated if the agile methodologies influence the distribution of micro pattern during software evolution by studying two industrial cases:
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.
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.
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.
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.