Micro patterns in agile software

21
Micro Micro Patterns Patterns in Agile in Agile Software Software Presented by Joshi, Ujjwal Kumar 06/22/22 1 Special Methods and Tools for IT Projects

description

Evolution of Micro Patterns in Agile Software. Brief about Gil and Maman Approach.

Transcript of Micro patterns in agile software

Page 1: Micro patterns in agile software

Micro Patterns Micro Patterns in Agile in Agile SoftwareSoftware

Presented byJoshi, Ujjwal Kumar

04/11/23 1Special Methods and Tools for IT Projects

Page 2: Micro patterns in agile software

Agenda

• Introduction to Agile SoftwareIntroduction to Agile Software• Evolution of Micro Patterns in Agile Software DevelopmentEvolution of Micro Patterns in Agile Software Development• Introduction to Micro PatternsIntroduction to Micro Patterns• Gil and Maman ApproachGil and Maman Approach

– MethodologyMethodology– Bug-linking MethodologyBug-linking Methodology– Survey: CollaborationsSurvey: Collaborations– Main phases of DevelopmentMain phases of Development– ConclusionConclusion

• ReferencesReferences

04/11/23 Special Methods and Tools for IT Projects 2

Page 3: Micro patterns in agile software

Introduction to Agile Introduction to Agile SoftwareSoftwareAgile Software development is a Agile Software development is a group of software development group of software development methods based on iterative and methods based on iterative and incremental development, where incremental development, where requirements and solutions evolve requirements and solutions evolve through collaboration between self-through collaboration between self-organizing, cross-functional teams.organizing, cross-functional teams.

It promotes adaptive planning, It promotes adaptive planning, evolutionary development and evolutionary development and delivery and encourages rapid and delivery and encourages rapid and flexible responses to change.flexible responses to change.

04/11/23 Special Methods and Tools for IT Projects 3

Source: http://en.wikipedia.org/wiki/Agile_software_development#Agile_methods

Page 4: Micro patterns in agile software

Evolution of Micro Pattern in Agile Software

Development

04/11/23 Special Methods and Tools for IT Projects 4

Page 5: Micro patterns in agile software

Introduction to Micro Pattern

• Micro Pattern are similar to design pattern but Micro Pattern are similar to design pattern but are at a lower level of abstraction with respect are at a lower level of abstraction with respect to design pattern, their characteristics is that to design pattern, their characteristics is that they can be identified automatically.they can be identified automatically.

• Gil and Maman defined the micro pattern Gil and Maman defined the micro pattern catalogue that consists of 27 micro patterncatalogue that consists of 27 micro pattern.

04/11/23 Special Methods and Tools for IT Projects 5

Page 6: Micro patterns in agile software

Introduction to Micro Pattern

• Gil and Maman stated that Gil and Maman stated that 75% of classes belong to at 75% of classes belong to at least one micro pattern.least one micro pattern.

• Even though the Micro Even though the Micro patterns are correlated to each patterns are correlated to each others, they can be others, they can be categorized.categorized.

• Anti-micro pattern are Anti-micro pattern are associated to poor associated to poor programming and thus, they programming and thus, they are proved to be more fault are proved to be more fault prone.prone.

04/11/23 Special Methods and Tools for IT Projects 6

Fig. Micro Patterns in JAVA CodeSource: http://www.google.de/imgres

Page 7: Micro patterns in agile software

04/11/23 Special Methods and Tools for IT Projects 7

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

Page 8: Micro patterns in agile software

04/11/23 Special Methods and Tools for IT Projects 8

Non-Micro Pattern(NMP)

Fault-prone Micro Pattern(FMP)

Anti-Micro Patterns(AMP)

Other Micro Pattern

(MP)

Class

Fig. class Categorization using Micro Pattern

Page 9: Micro patterns in agile software

Micro Pattern Examples

• ImplementorImplementor– A concrete class, where all the methods override A concrete class, where all the methods override

inherited abstract methods.inherited abstract methods.

• Function PointerFunction Pointer– A class with a single public instance method, but A class with a single public instance method, but

with no fields.with no fields.

04/11/23 Special Methods and Tools for IT Projects 9

Page 10: Micro patterns in agile software

Gil and Maman Approach

Gil and Maman conducted their study of Gil and Maman conducted their study of Micro Patterns in following two basis:Micro Patterns in following two basis:

• Floss-ARFloss-AR– Web application for research publications Web application for research publications

management.management.

• jAPSjAPS– Java framework for enterprise portal buildingJava framework for enterprise portal building

04/11/23 Special Methods and Tools for IT Projects 10

Page 11: Micro patterns in agile software

Methodology

• At first, they developed a tool to detect the micro pattern At first, they developed a tool to detect the micro pattern present in the class using Arcelli and Maggioni principle. present in the class using Arcelli and Maggioni principle.

• They proposed a survey to the software development They proposed a survey to the software development team to discover which agile methodologies were team to discover which agile methodologies were adopted.adopted.

• They belonged source code repository to link classes to They belonged source code repository to link classes to the bugs in order to find the relationship between the bugs in order to find the relationship between number of faults and anti-micro patterns.number of faults and anti-micro patterns.

• Then, they asses micro pattern fault proneness by the Then, they asses micro pattern fault proneness by the means of faulty classes.means of faulty classes.

04/11/23 Special Methods and Tools for IT Projects 11

Page 12: Micro patterns in agile software

Methodology: Bug-Class linking

Source Code and the bug fixes are linked using Source Code and the bug fixes are linked using the Bachmann and Bernstein’s heuristics:the Bachmann and Bernstein’s heuristics: Scan through the change logs for the bug reports in a Scan through the change logs for the bug reports in a

given format (e.g. fix bug, fix issue and so on).given format (e.g. fix bug, fix issue and so on). Exclude all false positive bug numbers (e.g. 2009-06-Exclude all false positive bug numbers (e.g. 2009-06-

07 10:47:39-0400 and so on).07 10:47:39-0400 and so on). Check if there are other potential bug number Check if there are other potential bug number

formats or false positive number formats, add the formats or false positive number formats, add the new formats and scan the change iteratively.new formats and scan the change iteratively.

Check if potential bug numbers exist in the bug-Check if potential bug numbers exist in the bug-tracking database with their status marked as fixed.tracking database with their status marked as fixed.

04/11/23 Special Methods and Tools for IT Projects 12

Page 13: Micro patterns in agile software

Survey: Collaborations

Question Very Good

Good Discrete Adequate Not Adequate

How would you describe the collaboration of the team?

4 1 0 0 0

04/11/23 Special Methods and Tools for IT Projects 13

Survey Question on Collaboration

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

Page 14: Micro patterns in agile software

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

04/11/23 Special Methods and Tools for IT Projects 14

Survey Question on Collaboration

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

Page 15: Micro patterns in agile software

04/11/23 Special Methods and Tools for IT Projects 15

Question Answer

Which Agile methodologies did you use during software development?

Pair ProgrammingStand up MeetingRefactoringOn 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

Survey Question to the Project Manager

Table 3. floss-AR Project Manager

Page 16: Micro patterns in agile software

Main phases of development

04/11/23 Special Methods and Tools for IT Projects 16

Page 17: Micro patterns in agile software

Source Code Analysis for jAPSMicro 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

Functionobject 0.71 6.1 0 2.2 2.7 1.89 2.02 1.22

…..

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

04/11/23 Special Methods and Tools for IT Projects 17

Table showing source code analysis for jAPS

Page 18: Micro patterns in agile software

04/11/23 Special Methods and Tools for IT Projects 18

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

Source Code Analysis for floss-AR

Page 19: Micro patterns in agile software

ConclusionOS(%) CA(%) SAR(%) SS(%) 2.1.1(%)

Distribution of faulty classes

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

04/11/23 Special Methods and Tools for IT Projects 19

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.

Page 20: Micro patterns in agile software

References

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

04/11/23 Special Methods and Tools for IT Projects 20

Page 21: Micro patterns in agile software

04/11/23 Special Methods and Tools for IT Projects 21

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

--- Bill Gates