validating software evolution of agile projects using...

86
Validating Software Evolution of Agile Projects Using Lehman Laws A DISSERTATION SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENT FOR THE AWARD OF THE DEGREE OF MASTER OF TECHNOLOGY IN COMPUTER SCIENCE AND ENGINEERING SUBMITTED BY Gurpreet Kour Roll No. 11203037 DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING DR. B R AMBEDKAR NATIONAL INSTITUTE OF TECHNOLOGY JALANDHAR 144011, PUNJAB (INDIA) DECEMBER, 2014

Upload: others

Post on 20-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Validating Software Evolution of Agile Projects Using

Lehman Laws

A DISSERTATION

SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENT FOR

THE AWARD OF THE DEGREE

OF

MASTER OF TECHNOLOGY

IN

COMPUTER SCIENCE AND ENGINEERING

SUBMITTED BY

Gurpreet Kour

Roll No. 11203037

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

DR. B R AMBEDKAR NATIONAL INSTITUTE OF TECHNOLOGY

JALANDHAR – 144011, PUNJAB (INDIA)

DECEMBER, 2014

Page 2: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

i

DR. B R AMBEDKAR NATIONAL INSTITUTE OF TECHNOLOGY, JALANDHAR

CANDIDATE DECLARATION

I hereby certify that the work, which is being presented in the dissertation, entitled “Validating

Software Evolution of Agile Projects Using Lehman Laws” by “Gurpreet Kour” in partial

fulfillment of requirements for the award of degree of M.Tech. (Computer Science and

Engineering) submitted in the Department of Computer Science and Engineering at Dr. B R

Ambedkar National Institute of Technology, Jalandhar is an authentic record of my own work

carried out during a period from January, 2014 to December, 2014 under the supervision of Dr.

Paramvir Singh. The matter presented in this dissertation has not been submitted by me in any

other University/Institute for the award of any degree.

Gurpreet Kour

This is to certify that the above statement made by the candidate is correct and true to the best of

my knowledge.

Dr. Paramvir Singh (Supervisor)

Assistant Professor

Department of Computer Science & Engineering

DR. B. R. Ambedkar NIT, Jalandhar

The M.Tech (Dissertation) Viva-Voce examination of Gurpreet Kour, Roll No. 11203037, has

been held on ____________ and accepted.

Supervisor

Signature of External Examiner

Dr. Renu Dhir

Head of Department

Department of Computer Science & Engineering

DR. B R Ambedkar NIT, Jalandhar

Page 3: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

ii

ACKNOWLEDGEMENT

Foremost, I would like to express my gratitude to my supervisor Dr. Paramvir Singh, Assistant

Professor, Department of Computer Science and Engineering, DR B R Ambedkar National

Institute of Technology, Jalandhar for the useful comments, remarks and engagement through the

learning process of this master thesis. I cannot thank him enough for his tremendous support and

help. He motivated and encouraged me throughout this work. Without his encouragement and

guidance this project would not have materialized. I consider myself extremely fortunate to have a

chance to work under his supervision. In spite of his busy schedule, he was always approachable

and took his time off to guide me and gave appropriate advice.

I also wish to thank whole heartily all the faculty members of the Department of Computer

Science and Engineering for the invaluable knowledge they have imparted on me and for teaching

the principles in most exciting and enjoyable way. I also extend my thanks to the technical and

administrative staff of the department for maintaining an excellent working facility.

I would like to thank my family for their continuous support and blessings throughout the

entire process, both by keeping me harmonious and helping me putting my pieces together. I also

like to thank all my batch mates for the useful discussions, constant support and encouragement

during whole period of the work.

Last but not the least, I would like to thank almighty GOD for giving me enough strength

and lifting me uphill this phase of life.

Gurpreet Kour

Page 4: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

iii

ABSTRACT

The primary focus in software engineering involves issues related to upgradation, migration and

evolution of existing software systems. Software evolution is a continuous process which includes

activities like enhancement, adaptation or fixing, that occurs after the operational release of the

software to the users. Due to the increase in use of computers in all aspects of human activity,

collectively or individually, and the important role that computers play in many of the applications,

software evolution is becoming an important challenge. Software evolution is the study of the

processes of system change over its lifetime which encompasses development and maintenance.

Software maintenance refers to modifying a program after it has been put into use, and changes are

implemented by modifying existing components and adding new components to the system.

While maintenance refers to an activity that takes place at any time after the new

development project is implemented, the software evolution is defined as examining the dynamic

behaviour of systems, i.e., how they change or evolve over time. Lehman and Belady first applied

the term evolution of software in the 1970s and since then most investigators have used that term

to refer to the long and broad view of change in the software systems. However, it is not surprising

that empirical research on software evolution is scarce. Off these, most of the empirical research

on software evolution is applied on software developed using traditional development methods.

We perform an empirical study to better understand the evolution of software systems

developed using agile development methodology. We evaluated a selected set of software metrics

for three agile projects and used this metrics data to compare these projects within the context of

Lehman’s laws of software evolution.

Page 5: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

iv

TABLE OF CONTENTS

CERTIFICATE i

ACKNOWLEDGEMENT ii

ABSTRACT iii

LIST OF FIGURES vii

LIST OF TABLES viii

LIST OF ABBREVIATIONS ix

CHAPTER-1

INTRODUCTION

1.1 Software Evolution 01

1.1.1 Importance of Software Evolution 02

1.1.2 Software maintenance and Software change 02

1.2 Laws of Software Evolution 03

1.3 Software Development Methodologies 05

1.3.1 Traditional Software Development Methodology 06

1.3.2 Agile Development Methods 07

1.3.3 Traditional Software Versus Agile Development Methodology 09

1.4 Two Agile Development Methodologies 09

1.4.1 Extreme Programming 10

1.4.2 SCRUM 11

1.5 Software Metrics 13

1.5.1 Types of Software Metrics 13

1.5.2 Measurement Scale 13

1.5.3 Design Metrics 14

1.6 Motivations 14

1.7 Research Objectives 15

1.8 Chapter Summary 15

Page 6: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

v

CHAPTER-2

LITERATURE SURVEY

2.1 Software Evolution 17

2.2 Software Evolution in Agile Software Development Methodology 20

2.3 Traditional and Object Oriented Metrics 20

2.3.1 Traditional Metrics 21

2.3.2 Object Oriented Metrics 22

2.3.3 Other Metrics 24

2.4 Metrics Selected for Analysis 24

2.5 Chapter Summary 25

CHAPTER-3

METHODOLOGY AND IMPLEMENTATION

3.1 Sample Application 26

3.1.1 FlossAr 26

3.1.2 StudentLancer 27

3.1.3 MultiLevel Marketing Software 28

3.1.4 Tools Used for the projects 28

3.2 Methodology 29

3.3 Tools Used 30

3.3.1 CKJM extended 30

3.3.2 PHP_Depend 32

3.3.3 Microsoft Excel 33

3.4 Techniques used for Analysis 34

3.5 Chapter Summary 34

CHAPTER-4

RESULTS AND ANALYSIS

4.1 Analysis Techniques and Results 35

4.1.1 Continuing Growth and Continuing Change 35

4.1.2 Increasing Complexity 36

Page 7: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

vi

4.1.3 Self Regulation and Feedback 39

4.1.4 Conservation of Familiarity 42

4.1.5 Declining Quality 43

4.2 Result Summary 43

4.3 Chapter Summary 45

CHAPTER-5

CONCLUSIONS AND FUTURE WORK

5.1 Conclusions 46

5.2 Future Work 47

REFERENCES

Page 8: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

vii

LIST OF FIGURES

Figure 1.1 Traditional Approach of Software Development 06

Figure 1.2 Methods of Agile Software Development 09

Figure 1.3 Extreme Programming Practices 10

Figure 1.4 Scrum Process Flow 12

Figure 3.1 Methodology Followed 29

Figure 3.2 Screenshot of CKJM Extended 31

Figure 3.3 Screenshot of PHP_Depend 32

Figure 3.4 Screenshot of Microsoft Excel 33

Figure 4.1 Growth and Change for projects 1, 2 and 3 35

Figure 4.2 Law of Increasing Complexity measured by CBO per release 36

Figure 4.3 Law of Increasing Complexity measured by Cohesion for project 1 37

Figure 4.4 Increasing Complexity for project 2 and 3 38

Figure 4.5 Growth curve for average RFC for project 2 and 3 38

Figure 4.6 Growth curve for average WMC for project 2 and 3 39

Figure 4.7 Duration of Iterations for Project MIM during release 3 40

Figure 4.8 Duration of Iterations for Project StudentLancer during release 2 40

Figure 4.9 Change in files during Sprint for project MIM 41

Figure 4.10 Change in files during Sprint for project StudentLancer for release 2 41

Figure 4.11 Change in files during Sprint for project StudentLancer for release 3 42

Page 9: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

viii

LIST OF TABLES

Table 1.1 Values of Agile Software Development 07

Table 1.2 Traditional Software Vs. Agile Development Methodology 09

Table A.1 Experimental Results: Metric Data of MLM 53

A.1.1 Multi-Level Marketing Software 53

Table A.2 Experimental Results: Metric Data of StudentLancer 54

A.2.1 StudentLancer Version 1 54

A.2.2 StudentLancer Version 2 55

A.2.3 StudentLancer Version 3 57

Table A.3 Experimental Results: Metric Data of FlossAr 60

A.3.1 FlossAr Version 1.0 60

A.3.2 FlossAr Version 1.1 61

A.3.3 FlossAr Version 2.1 62

Page 10: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

ix

LIST OF ABBREVIATIONS

ADM Agile Development Methodology

AMC Average Method Complexity

CAM Cohesion Among Methods of Class

CBM Coupling Between Methods

CBO Coupling Between Objects

DIT Depth of Inheritance Tree

EXEC Executable statements

IC Inheritance Coupling

jAPS Java Agile Portal System

LCOM Lack of Cohesion in Methods

LCOM3 Lack of Cohesion in Methods Henderson-Sellers version

LOC Lines of Code

MLM Multi-Level Marketing Software

NCNB Non-Comment Non-Blank

NOC Number of Direct Child

NPM Number of Public Methods for a Class

RFC Response for a Class

XP Extreme Programming

Page 11: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

CHAPTER-1

INTRODUCTION

In recent years, the growth in large scale software development industry has suddenly picked

up pace to become a „driving force‟. Due to its profound impact on world‟s economy and

society, it has grabbed the attention of researchers. In this environment, the role of careful

empirical studies as the basis for improving software maintenance processes, methods and tools

is highlighted. One of the most important processes that merits empirical evaluation is software

evolution. Software needs to evolve in order to be used for a longer period. The changes

corresponding to corrective, preventive, adaptive and perfective maintenance leads to software

evolution [1]. Software evolution takes place only when the initial development was successful.

The goal is to adapt the application to the ever changing user requirements and operating

environment. Software is not prone to wear and tear but still may become useless if not revised

in response to ever changing user requirements. Lehman et al has done extensive research on

evaluation of large and long lived software [2]. Most of the research work on software

evolution till date have focused on traditional or open source methods, and Lehman‟s Law of

software evolution have been interpreted and evaluated in the context of these methods. These

laws, dealing with continuous change and growth, self-regulation and conservation of

organisational stability and familiarity, feedback system, increasing complexity and declining

quality, of systems need to be examined on projects following agile methods, to see if they

continue to hold true across the agile lifecycle. This chapter describes the context and the main

contributions of this thesis, thus explaining how we contribute to that goal. The first chapter is

organized as follows: The concept of software evolution is treated in section 1.1. Section 1.2

provides a comprehensive description of software evolution Lehman‟s laws. In Section 1.3,

software development methodologies are explained. Section 1.4 provides an overview of main

methods of agile processes. Section 1.5 explains the software metrics. Section 1.6 discusses the

motivations which formed the basis of this work. The objectives of research are stated in

Section 1.7. This chapter ends with chapter summary in Section 1.8.

1.1 Software Evolution

Software Evolution is defined as “the dynamic behaviour of programming systems as they are

maintained and enhanced over their life times” [3]. The software evolution takes place because

of the following reasons:

i. Software change is inevitable as new requirements emerge when the software is

used.

Page 12: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 2

ii. The business environment changes, in business terms, the software is being

evolved because it is successful in the marketplace; revenue streams are buoyant,

user demand is strong, the development atmosphere is vibrant and positive, and

the organization is supportive. Return on investment is excellent

iii. Error or bugs must be repaired

iv. New equipment is added to the system

v. The performance or reliability of the system may have to be improved.

1.1.1 Importance of Software Evolution

Software evolution occurs because of the following requirements:

Organisations have huge investments in their software systems as software is

critical business assets.

To maintain the value of these assets to the business, they must be changed and

updated.

The majority of the software budget in large companies is devoted to evolving

software rather than developing new software.

1.1.2 Software maintenance and Software Change

Software evolution refers to the phenomenon of software maintenance and software change.

The environment where software has to operate changes over time and software must adapt to

the changing environment. The software does not change by itself but changed by the

development and maintenance teams.

Software Maintenance is defined as “the correction of errors and the implementation of

modifications needed to allow an existing system to perform new tasks and to perform old ones

under new conditions [4]. The objective is to modify the existing software product while

preserving its integrity.

Software change is the basic operation of software evolution. The change is a process that

either introduces new requirements into an existing system, or modifies the system if the

requirements were not correctly implemented, or moves the system into a new operating

environment. A request for change often originates from the users of the system, and may have

a form of a „bug report‟ or a request for additional functionality. It is usually expressed in terms

of the application domain concepts. A key problem for organisations is implementing and

managing change to their existing systems.

Page 13: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 3

1.2 Laws of Software Evolution

Lehman et al. inferred that the software systems must evolve otherwise there is risk of losing

market share to competitors [2]. There are various evolution laws to study the evolution of the

software systems. The laws of software evolution refer to a series of laws formulated by

Lehman and Belady in 1974 with respect to software evolution [5]. Lehman categorizes all

software systems into three classes of programs [6].

i. S-Type (Specified): S-type programs are derivable from a static specification and

can be formally proven as correct or not.

ii. P-Type (Problem solving): P-type programs attempt to solve problems that can

be formulated formally, but which are not computationally affordable. Therefore

the program must be based on heuristics or approximations to the theoretical

problem.

iii. E-Type (Evolutionary): E-type software refers to “software solving a problem or

addressing an application in the real world and its attributes.” E-type programs are

reflection of human processes, societal activity or of a part of the real world.

These kind of programs try to solve an activity that somehow involves people or

the real world. E-type programs are inherently even more change prone.

The laws also suggest that over the period, due to changes and growth, software system

become complex and difficult to add new functionalities to it. The software evolution, which is

the continual process of change is required to keep the software up-to-date with the changing

operational domain. Continual software change is needed for the stakeholders to remain at an

acceptable level in a changing world.

i. Continuing Change (1974): E-type systems must be continually adapted else

they become progressively less satisfactory. According to this law, the evolving

software has to adapt to the changing environment. The change in usage

environment may include changes like bug fix exercise or as a preventive

maintenance activity or addition of some functions or any other activity which

will increase the size of software leading to growth. Continuous change is the

result of feedback pressures caused by mismatch between the software and its

operational domain. Evolution is achieved in a feedback driven and controlled

maintenance process. If the consequent pressure for evolution to adapt to the new

situation is resisted the degree of satisfaction provided by the system in execution

declines with time.

Page 14: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 4

ii. Increasing Complexity (1974): As an E-type system evolves its complexity

increases unless work is done to maintain or reduce it. This law may be an

analogue of the second laws of thermodynamics or an instance of it. It is generally

perceived that growth in the system adds to increase in complexity but if the

appropriate changes are made then the evolution process might not show increase

in complexity.

iii. Self Regulation (1974): E-type system evolution process is self regulating with

distribution of product and process measures close to normal. According to this

law, the growth rate is regulated by maintenance process. There is a balance

between what is desired to be changed and what can actually be achieved. In order

to have a smooth evolution process, the limitations on the growth rate should be

accepted.

iv. Conservation of Organisational Stability (1980): The average effective global

activity rate in an evolving E-type system is invariant over product lifetime.

Evolution process of software conserves the organizational stability. The work

rate of an organization evolving a large software tends to remain constant. This

means that it is hard to change the staff who has been working on evolving

software.

v. Conservation of Familiarity (1980): As an E-type system evolves all associated

with it, developers, sales personnel, users, for example, must maintain mastery of

its content and behaviour to achieve satisfactory evolution. Excessive growth

diminishes that mastery. Hence the average incremental growth remains invariant

as the system evolves. This law postulates that the incremental growth or growth

rate trend of E-type systems is constrained by the need to maintain familiarity.

Both the developers and users need to maintain familiarity with the system as it

evolves between the releases. A huge change that might cause lack of familiarity

of staff members involved with the evolving software is avoided. For small

changes the familiarity of software is easily achieved by the personnel involved

with the software. Hence the average incremental growth remains constant as the

software evolves.

vi. Continuing Growth (1980): The functional content of E-type systems must be

continually increased to maintain user satisfaction over their lifetime. According

to this law, the functionality provided by the software should continually grow so

as to provide user satisfaction over longer period. The increase in the functionality

Page 15: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 5

being provided by the software can be interpreted as increase in the size of code.

Growth of evolving software, in terms of functionality, can be measured by

observing the change in the lines of code (LOC) and the change in the number of

methods.

vii. Declining Quality (1996): The quality of E-type systems will appear to be

declining unless they are rigorously maintained and adapted to operational

environment changes. According to this law, the uncertainty increases with the

time unless successful attempts to detect and rectify the embodiment are taken as

part of the maintenance activity. As time elapses and the user community become

more perceptive and expectant, alternative products become available, the criteria

of acceptability and satisfaction change. The quality of a product must relate to

user satisfaction. Hence, the quality of a software system declines with time and

information feedback plays a key role.

viii. Feedback System (first stated in 1974, formalised as law in 1996): E-type

evolution processes constitute multi-level, multi-loop, multi-agent feedback

systems and must be treated as such to achieve significant improvement over any

reasonable base. Feedback plays a very important role in software evolution. All

seven laws of software evolution is the result of feedback system. Agents can be

corporate managers, process managers, product managers, software architects,

software developers, software testers and users. The loops are the code reviews

and the level is the parallel versions.

1.3 Software Development Methodologies

Software has been part of modern society for more than 50 years. There are several software

development methodologies in use today. Some companies have their own customized

methodology for developing their software but the majority of organizations following two

kinds of methodologies: heavyweight and lightweight. Heavyweight methodology, also

considered as traditional approach of software development or plan driven approach is a

conceptual model used to develop information systems with well-defined phases like user

requirements, design and architecture, development and coding, quality assurance and software

testing, implementation, maintenance and support. At the other end of the continuum, the

lightweight methodologies also known as agile methodology, have gained significant attention

from the software engineering community in the last few years.

Page 16: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 6

1.3.1 Traditional Software Development Methodology

Traditional software development is based on sequential approach in which coding and testing

are carried out after requirement capture and design, followed by integration and system-level

testing. This plan based approach was introduced to provide a structured approach to large

scale development. In the waterfall model, the project management can rely on an upfront plan,

and possible deviations from the plan are easy to detect. Software engineering includes various

plan-driven or predictive life cycle models such as waterfall, spiral, rapid prototyping where

project is executed based on a plan which we freeze upfront before starting the project, iterative

life cycle model where development happens in iterations that encompass the activities of

requirements analysis, design, coding and testing and incremental life cycle model where

project delivery is divided into parts-analyse, design, code, test and deliver product (release).

Figure 1.1: Traditional Approach of Software Development

There are known disadvantages of traditional, plan driven models. In large products

especially, the sequential order of development has resulted into problems in integration and

testing the overall system at the end [7]. When the world around us is changing fast,

requirements from the end user are also changing fast as well. With the traditional software

development model, it usually takes a long time from the initial requirement capture before the

actual software is available for the end user, and it is difficult to implement changes in later

Requirements

Design and

Architecture

Development

and Coding

Quality Assurance

& Software Testing

Implementation

Maintenance &

Support

Page 17: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 7

phases. This can lead to a situation where the customers‟ current needs are not being addressed

at the end of the project, and as a result, many of the features implemented are not used.

To be able to respond to changes faster, and to develop software systems according to the

end user needs while the need still exists, many companies are searching for a solution with

agile methods. The organization-wide change process, in which agile practices are taken into

use to enable an agile software development mode of working, is called the agile

transformation. Successful transformation from plan-based to agile software development have

been reported and there are frameworks designed to guide organizations in the agile

transformation [8] [9].

1.3.2 Agile Development Methods (ADM)

Agile development is a term that was derived from the Agile Manifesto, which was written in

2001 by a group of 17 people [10]. The Agile Manifesto established a common set of

overarching values and principles for all of the individual agile methodologies at the time. The

formation of the Agile Alliance in 2001 and the publication of the Agile Manifesto formally

introduced agility to the field of software development. Agile software development has

challenged the traditional ways of delivering software as it provides a very different approach

to software development. The Manifesto for Agile Software Development uncover better ways

of developing software by doing it and helping others to do it through following values:

Individuals and Interactions Over processes and tools

Working software Over comprehensive documentation

Customer collaboration Over contract negotiation

Responding to change Over following a plan

Table 1.1: Values of Agile Software Development [10]

The Agile Manifesto presented and industry-led vision for a profound shift in software

development through 12 principles [10]. The twelve principles of agile software development

are following:

i) The highest priority is to satisfy the customer through early and continuous

delivery of valuable software

ii) The welcoming of changing requirements, even late in development, for the

benefit of the customer‟s competitive advantage

iii) Frequent delivery of working software, the release cycle ranging from a couple of

weeks to a couple of months, with a preference for a shorter timescale

iv) Daily collaboration of business people and developers throughout the project

Page 18: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 8

v) Building of projects around motivated individuals by offering them an appropriate

environment and the support they need, and trusting them to get the job done

vi) Emphasis on face-to-face conversation for conveying information and within a

development team

vii) Working software is the primary measure of progress

viii) Agile processes promote a sustainable development pace for the sponsors,

developers, and users

ix) Continuous attention to technical excellence and good design enhances agility

x) Simplicity is essential for maximising the amount of work not having to be done

xi) Self-organising teams give best results in terms of architectures, requirements, and

designs

xii) Regular reflection of teams on how to become more effective, and tuning and

adjusting its behaviour accordingly.

The principles of agile software development can be considered as fundamental

ideologies that should be embedded in the practices of any software development method

claiming to be agile.

Agile development methods (ADM) are characterized by self-organizing, incremental

(small software releases with rapid development cycles), straightforward (the method itself is

easy to learn and to modify), adaptive (the ability to make and react to last moment changes),

earlier testing, quick delivery which increases cooperative collaboration, communication (a

close customer and developer interaction) and coordination by delivering high quality products

to the customer. Agile development methods helps software development community reduces

their effort in development [11] [12].

Early implementations of lightweight methods include Scrum (1995), Crystal Clear,

Extreme Programming (1996), Adaptive Software Development, Feature Driven Development,

and Dynamic Systems Development Method (1995). These are now typically referred to as

agile methodologies, after the Agile Manifesto published in 2001. Agile processes have reached

a considerable interest both in industry and academia due to a proven track record in delivering

complex software on time and within the prescribed budget. Despite the encouraging results

reported by the agile methods community, there is still a need for empirically understanding the

quality/speed trade-offs in real life projects when following agile principles. The lifecycle of

agile processes aimed at minimizing the number of activities performed and the quality of

artifacts produced in order to deliver working software to client quickly.

Page 19: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 9

Figure 1.2: Methods of Agile Software Development [13]

1.3.3 Traditional Software Methodology Versus Agile Development Methodology

There is huge difference between traditional software methodology and agile development

methodology. Some of the most important characteristic differences are summarized below:

Traditional Software Methodology Agile Development Methodology

The systems are fully specifiable, predictable

and are built through extensive planning.

High-quality adaptive software is developed by

small teams using the principles of continuous

design improvement and testing based on rapid

feedback and change.

It emphasizes large scale planning It emphasizes flexibility

Formal communications and documentation Informal collaboration and working code

Plan driven approach Execution driven approach

Technology driving people People driving technology

Final product is delivered at the end of the

project

Incremental delivery of products

Communication only at the start of the project.

User explicit documented knowledge

Improves customer communication,

collaboration and coordination. Interpersonal

knowledge and continuous communication.

Face-to-face communication.

Planning driven project Customer driven project

Predictability, stability Quick response to change

Formalized documented requirement

Requirements in the form of user stories and test

cases.

Requirements in the form of user stories and test

cases.

Changes not acceptable Changes acceptable

People are comfortable when there are clear

policies and procedures that define their role in

the enterprise.

Embrace the philosophy according to which

programming is an art rather than a technic.

Table 1.2: Traditional Software Methodology Vs. Agile Development Methodology

1.4 Two Agile Software Development Methodologies: Extreme Programming (XP) and

SCRUM

The most widely used agile methodologies are Extreme Programming (XP) and Scrum. Both

methodologies share iterative approach of development.

Page 20: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 10

1.4.1 Extreme Programming (XP)

Extreme programming (XP) is well known agile method developed by Beck [14]. Extreme

programming focuses on delivering immediate business value to the customer. The extreme

programming process can be characterized by the short development cycles, incremental

planning, evolutionary design and its ability to response to changing business needs. The

method is built around practices like planning game, small releases, use of metaphors to

describe business situations, simple design, testing, refactoring, pair programming, collective

code ownership, continuous integration, 40-hours work week and on-site customer [15].

Figure 1.3: Extreme Programming Practices

Extreme programming (XP) methodology defined following agile practices and these

practices have been applied for the development of sample projects:

Pair Programming: In this practice, all the development tasks were assigned to

two developers (one pair). The one developer writes the code while the other

reviews each line of code. At intervals, the developers can swap the roles.

Page 21: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 11

Refactoring: Refactoring is the restructuring process to improve hierarchies and

abstractions.

Stand Up Meeting: A stand up meeting is a daily meeting held every day before

the start of the work to organize the daily activities and to provide a status update

to the team members.

On Site Customer: A customer‟s representative was always available to the team

for fast and effective communication.

Continuous Integration: The written code was integrated several times a day to

ensure that all the components work together correctly.

Collective code ownership: The code repository was freely accessible to all

developers, and each pair had the ability to make changes wherever needed. This

was eased by the uniformity of technical skills of all team members.

Test driven development (TDD): All code must have automated unit tests and

acceptance tests, and must pass all tests before it can be released.

Small Releases: The time between releases of functionality to users should be as

short as possible.

1.4.2 SCRUM

The Scrum methodology has been developed for managing the software development process

in a volatile environment. The Scrum methodology is based on the strategy used in the Rugby

sports i.e. flexibility, adaptability and productivity. In a Rugby scrum, the ball is passed back

and forth between team members to move the ball forward. The scrum methodology was

designed to handle rapidly changing business requirements by improving communication

between team members through daily meetings/ scrum meetings. In scrum, the work is break

down into series of iterations called as sprints. Scrum focuses more on management of the

development process than coding techniques aiming at consistently identifying any deficiencies

or impediments in the development process as well as in the practices that are used [16]. The

scrum methodology can be used on small and large projects. Scrum helps to develop software

more predictably, more reliably and with higher overall quality. Scrum leaves open for the

developers to choose the specific software development techniques, methods, and practices for

the implementation process. Scrum emphasizes the use of a set of software process patterns that

have proven effective for projects with tight timelines, changing requirements, and business

criticality.

Page 22: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 12

Figure 1.4: Scrum Process Flow [17]

Scrum defines the following set of development actions:

Sprints: The development process is divided into small iterations called as sprints

and delivered the product incrementally.

User Stories: All user requirements, functional as well as non-functional system

requirements were expressed in small stories called as user stories.

Product owner: The product owner is responsible for communicating the

customer‟s vision of the product to the development team.

Small teams: Scrum advocates the use of small teams - no more than 10 team

members.

Scrum meetings: During the sprint, the team holds frequent daily short meeting

known as Scrum meetings, which involve all team members.

Scrum Master: The project leader or project manager can play the role of scrum

master and facilitates the development work.

Product Backlog: Product backlog is the cumulative of all stories which are yet

to be implemented. Items can be added to the backlog at any time. The features

which were incorporated in the previous iterative cycle (sprint) are no longer part

of the current product backlog or are marked as “Done”. The product manager

assesses the backlog and updates priorities as required.

Page 23: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 13

1.5 Software Metrics

Among the things that govern our life, metrics occupies at the centre position. Some people

pointed out that without metrics, there should not exist modern science. Metrics makes the

abstract concepts more intuitive and more understandable. It is very important to incorporate

software metrics in software lifecycle. The development of software includes requirement

analysis, design, coding and testing, which all can be measured and analysed via metrics

methods. Software metrics can monitor the quality of software production and then makes

forecast and maintenance easier. With the rapid development of large scaled software, the

complexity of software grows fast, which makes the quality more and more difficult to control.

Therefore the production procedure should be checked by using software metrics. In order to

assure the reliability and the quality of software, correct metrics methods should be used for the

procedure and quality improvement.

1.5.1 Types of Software Metrics

Software metric is a quantitative measure of software. It helps in planning and predicting

software development. It also provide a measure of ease of using software. We can better

control software quality and development effort if we can quantify the software. The software

metrics evaluate the object oriented concepts like methods, classes, coupling and inheritance.

The metrics focus on internal object structure that reflects the complexity of each individual

entity and on external complexity that measures the interactions among entities. The metrics

measure computational complexity that affects the efficiency of an algorithm and the use of

machine resources, as well as psychological complexity factors that affect the ability of a

programmer to create, comprehend, modify and maintain software. Fenton [18] proposed three

main categories of software metrics. These categories are described as below:

Product metrics are measure of software products such as source code and design

documents.

Process metrics are measures of software development process such as the effort

required to design a software system.

Resource metrics are the quantitative measures of various resources used in the

project such as number of software developers, cost, schedule, productivity.

1.5.2 Measurement Scale

Depending on what kind of data is meaningful, measurement has been divided into four types

of scale:

Page 24: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 14

Nominal: It is the simplest possible measurement. There is no notion of ordering. The empirical

relation system consists only of different classes. Any distinct numbering of the classes is an

acceptable measure but the sizes of the numbers have no meaning for the measure.

Ordinal: Ordinal data allows to rank the various data values; however the difference or ratios

between values are not valuable. Any mapping that preserves the order is acceptable. E.g.

programming experience may be measured as high, low or medium.

Interval: Data from an interval scale can not only be ranked, but also can exhibit meaningful

differences between values. McCabe‟s complexity measure might be interpreted as having an

interval scale. Differences appear to be meaningful; but there is no absolute zero, and ratios of

values are not meaningful. Mapping must preserve order.

Ratio: Some data values are associated with a ratio scale which possesses an absolute zero and

allows meaningful ratios to be calculated. Numbers starts at zero and increases at equal

intervals. All arithmetic can be meaningfully applied. E.g. lines of code (LOC)

1.5.3 Design Metrics

Design metrics consist of two categories:

Traditional Design Metrics: Traditional design metrics are based on structured

design. These metrics have been used for evaluating software complexity of

structured design. It deals with the structural property of software. Some metrics

like Lines of Code (LOC), Cyclomatic Complexity, Comment Percentage have

been accepted as standard traditional metrics.

Object Oriented Design Metrics: Object oriented design and development are

popular concepts in today‟s software development environment. Object oriented

development requires not only a different approach to design and implementation,

it requires a different approach to software metrics. Object oriented technology

uses objects as its fundamental building blocks, the approach to software metrics

for object oriented programs must be different from standard metrics set [19].

Object oriented metrics deals with size, cohesion and coupling metrics.

1.6 Motivations

During literature survey, it was found that most of the authors in their work defined a need for

carrying out investigation of the evolutionary behaviour of object oriented and agile developed

software and evolutionary trends of such techniques cannot be taken for granted. A few of the

works have been listed out as below:

Page 25: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 15

Lehman et al. [1] in their future work mentioned to investigate the evolutionary

behaviour of software‟s developed using agile programming based development

methodology and claimed that the more extensive results will widen the scope of

validity of the contemplated theory of software evolution.

Kelley et al. [20] mentioned in their future work that several similar projects

developed using agile approach can be compared and find out whether they

display similar evolution traits with regards to Lehman‟s Law.

Sindhgatta et al. [21] in their paper have mentioned the need to review Lehman‟s

laws on larger case studies developed using agile methodology with a view

towards validating the initial results.

Capiluppi et al. [22] also mentioned in their future work to explore more

systematic ways of combining quantitative and qualitative observations for

building a richer and fuller picture of software evolution of agile developed

software systems.

All these key pointers mentioned by different authors constituted the motivations for this work.

1.7 Research Objectives

Previous research revealed that despite the research in the field of software evolution, most of

them focused on traditional or open source methods, and Lehman‟s laws of software evolution

have been interpreted and evaluated in the context of these methods. Lehman‟s laws of

software evolution need to be examined on projects following agile methodology to see if they

continue to hold good across the agile lifecycle. Various objectives of this work are as follows:

To investigate the relationship between agile processes and evolution of software

by carrying out an empirical validation using real world applications.

To empirically validate the Lehman‟s laws for software developed using agile

methodology.

To assess the behaviour of agile software processes at system level and sub-

system level.

1.8 Chapter Summary

Rest of the thesis is structured as follows:

Chapter 2 presents literature surveyed on software evolution and laws of software

evolution and agile processes. It also provides a summary of work done so far in

the related area.

Page 26: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Introduction

Page 16

Chapter 3 of thesis discusses the research methodology and tools used.

Chapter 4 presents the results of the experiments along with a brief description

about results wherever necessary.

Thesis concludes with its findings and work for future in Chapter 5.

Page 27: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

CHAPTER-2

LITERATURE REVIEW

This chapter reviews the concept of software evolution, software evolution in agile software

development methodology and software metrics. Sections 2.1 and 2.2 presents the literature

surveyed on software evolution and software evolution in agile software development

methodology. Section 2.3 describes the traditional and object oriented metrics. Finally the

chapter ends with a discussion on metrics and concepts chosen for the analysis in this study.

2.1 Software Evolution

Software engineering still lacks a complete solid scientific basis. The laws of software

evolution were one of the first approaches to define a theory of software systems that provides

such a scientific basis. Software evolution deals with the process by which programs are

modified and adapted to their changing environment. The aim of Lehman’s research was to

formulate a scientific theory of software evolution. The laws were designed with change in

mind. Software cannot be immutable, and the laws have been shown to need changes

themselves as time passed. The laws of software evolution were first described in 1974, and

after several years of intense activity and refinement, the latest version of the laws was

published in 1997 [23] [24]. The best approach for software evolution is to study the modern

programming processes to help developers, managers and users in order to produce better

software.

Belady and Lehman [3] discussed the study of 20 releases of the OS/360 operating

systems software, which is the first empirical research to focus on the dynamic behaviour of a

relatively large and mature system. In this paper, they discussed number of observations about

the size and complexity of the system, which led to five “laws” of software evolution

dynamics: Continuing Change, Increasing Complexity, Conservation of Organization Stability,

The Fundamental Law of Program Evolution, and Conservation of Familiarity. They measured

the number of modules handled per day (handle rate) for every release and concluded that

handle rate is stationary with cyclic ripples.

Further Lehman [6] elaborated the meaning of the laws in the context of real systems. In

this paper, the five laws of evolution were supported through graphical presentation of the data.

A detailed study of first 19 releases of the software was used to plan release 20. Lehman

demonstrated how some initial estimates were likely to be optimistic or otherwise inaccurate

until corrected with access to historical data, and is useful demonstration of the practical

Page 28: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Literature Review

Page 18

application of this type of research to software maintenance management. Lehman also

proposed that the concepts and techniques presented in this paper could find wide application

outside the specific area of software systems, in other industries and to social and economic

systems.

Cook and Roesch [25] examined 10 releases over 18 months of a real time telephone

switch from a German telecommunications firm and analysed software metrics for complexity.

They concluded that information metrics performed well as compared to other metrics, such as

Halstead and McCabe Metrics, and simple lines of code. They also examined the evolution of

the system over 18 months of data and argued that they found support for the laws of evolution.

Basili et al. [26] examined 25 software releases of 10 different systems at NASA

Goddard and looked at the three Swanson maintenance change types (corrective, adaptive,

perfective) and a set of maintenance activities for each. They found that error correction efforts,

typically small changes, required significant isolation activity, while enhancements required

more time on inspection and certification.

Lehman et al. [2] investigated the FEAST project for software evolution study, and

examined 21 releases spanning 5 years of evolution. They examined the size in terms of

number of modules and the number of modules changed and developed a growth model for

module size per release using an inverse square model. This paper summarized the eights laws

of software evolution.

Kemerer and Slaughter [27] conducted an empirical study of software evolution using

the systems of a large United States retailer. The investigation was focused on the types of

changes, costs and effort to evolve the software and also analysed these factors from the point

of the view of Lehman’s Law.

Kafura [28] studied the relationship between software complexity metrics and software

maintenance and discussed that the classes of complexity metrics (code metrics and structure

metrics) grew when the system was maintained, which confirmed Lehman’s laws. The author

also claimed that extreme changes of complexity in one procedure/module may indicate

possible flaws during the maintenance activity.

Cook et al. [29] discussed an approach to understand software evolution based on the

empirical study of software evolvability and proposed that evolvability can be measured at the

different levels of abstraction of software systems, i.e. at pre-design, architectural, detailed

Page 29: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Literature Review

Page 19

design and source code levels by providing a real work example. They also suggested a set of

metrics for software evolvability based on ISO/IEC 9126 standard which improved the relation

between software and its environment.

Lehman and Ramil [1] discussed the 35 years study of the software process and

software evolution phenomenon and proposed refinement in the theory of software evolution,

draws attention to the SPE program classification, a principle of uncertainty and laws of

software evolution. They mentioned the need to investigate the evolutionary behaviour of

software’s developed using object oriented, open source, agile programming and COTS-based

development methodology and claimed that the more extensive results will widen the scope of

validity of the contemplated theory of software evolution. They claimed that the software

evolvability will play an increasingly more critical role in ensuring the survival of a society

ever more dependent on computers.

Godfrey and Tu [30] studied the evolution of software in the open source context by

looking at the evolution of the Linux kernel. They found that the Linux kernel has been

growing at a super-linear rate for several years instead of growing at slower rates as the Linux

code base increased. They used systems lines of code as a size metrics, and concluded that the

law of invariant work rate does not hold for open source software.

Xie et al. [31] applied the software evolution laws on open source systems and evaluated

all the eight laws of software evolution on seven open source systems. They concluded that of

the eight laws, Continuing Change, Increasing Complexity, Self Regulation, and Continuing

Growth are applicable to the evolution of open source software while they were inconclusive of

the other four laws on Conservation of Organizational Stability, Conservation of Familiarity,

Declining Quality, and Feedback system.

Kalpana and Arvinder [32] studied the effect of software evolution on open source

software. They analysed different versions of two open source software-13 versions of JHot

Draw and 16 versions of Rhino released over the period of 10 years, by applying package level,

class level and method level metrics. They concluded that three laws, Continuing change,

Increasing Complexity and Continuing growth were easily determined using the metrics, while

the relatedness of three laws, Self regulation, Conservation of organizational stability and

Conservation of familiarity to open source software system was hard to determine and will

require more empirical studies with relevant data.

Page 30: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Literature Review

Page 20

Anita et al. [33] presented the study of the software evolution for Mozilla Firefox open

source software for fifty latest versions. The applicability of Lehman’s laws of software

evolution to Mozilla Firefox was investigated empirically using the size and complexity metrics

and found that Law 1, 2, 6 and 7 were applicable but relatedness to law 3, law 4, law 5 and law

8 was not found in case of Mozilla Firefox.

2.2 Software Evolution in Agile Software Development Methodology

There have been limited empirical studies on the software evolution following agile

methodology. A previous work on such evaluation is as follows:

Capiluppi et al. [22] were the first to perform a measurement based study of the

evolution of successful agile systems. In their case study, they took data samples four times per

month to collect source code, unit tests and code check-in information over the span of 2.5

years. This study combined the use of quantitative and qualitative evidence and found that

growth was positive during most periods, but there were brief periods of less growth. They

analysed that growth was higher was higher for the lines of code as compared to number of

files or directories and proposed that the reduced complexity comes from the team’s

commitment to refactoring.

Sindhgatta et al. [21] were the first to study evolution using Lehman’s laws to

understand the evolution of software development using agile process-Scrum. They divided the

laws in four different groups: growth and complexity, self-regulation and conservation,

increasing complexity, and declining quality and found all the six Lehman’s laws true for the

software system.

Kelly et al. [20] compared the two similar open source project, one developed using

traditional approach and other using agile approach within the context of Lehman’s laws for

continuing growth, continuing change, increasing complexity, and conservation of familiarity

and found that all four laws were applicable to software project developed using agile

approach.

2.3 Traditional and Object Oriented Metrics

Software metrics is a valuable mechanism to manage, predict, assess and improve the quality of

software systems. Software metrics have gained renewed interest because they can enable

automated large-scale quality analysis of software. Metrics can help the automated analysis of

Page 31: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Literature Review

Page 21

the growing data available in software repositories. A large number of metrics are available that

need to be used in projects for estimating and tracking. Both traditional as well as object

oriented metrics are important to measure the quality of software systems. Some metrics such

as lines of code and cyclomatic complexity, have become accepted as standard for traditional

functional/procedural programs, but for object oriented there are many proposed object oriented

metrics in the literature. Object-oriented design and development is becoming very popular in

today’s software development environment, which requires different approach to software

metrics.

2.3.1 Traditional Metrics

There are many traditional functional development metrics which can be applicable to object

oriented development like complexity, size and readability.

Cyclomatic Complexity: Cyclomatic complexity (McCabe) is used to evaluate

the complexity of an algorithm in a method. It is a count of the number of test

cases that are needed to test the method comprehensively. The formula for

calculating cyclomatic complexity is the number of edges minus the number of

nodes plus 2. A method with a low cyclomatic complexity is generally better.

Cyclomatic complexity cannot be used to measure the complexity of a class

because of inheritance, but the cyclomatic complexity of individual methods can

be combined with other measures to evaluate the complexity of the class [34]

[35].

Size: Size of a class is used to evaluate the ease of understanding of code by

developers and maintainers. Size can be measured in variety of ways like counting

all physical lines of code, the number of statements, the number of blank lines and

the number of comment lines. Lines of Code (LOC) counts all lines of program.

Non-Comment Non-blank (NCNB) referred to as Source Lines of Code and

counts all lines that are not comments and not blanks. Executable statements

(EXEC) is a count of executable statements. Size metric affects the ease of

understanding by the developers and maintainers. Classes and methods of large

size will always pose a higher risk [36].

Comment percentage: The high comment percentage increases the

understandability and maintainability and comments assist developers and

Page 32: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Literature Review

Page 22

maintainers. The comment percentage is calculated by the total number of

comments divided by the total lines of codes less the number of blank lines.

2.3.2 Object Oriented Metrics

CK metrics [37] proposed by Chidamber and Kemerer were the first and most renowned

metrics suite for Object oriented software.

Coupling Between Objects (CBO): CBO metric for a class is a count of the

number of other classes to which it is coupled [37]. It is measured by counting the

number of distinct non-inheritance related class hierarchies on which a class

depends. Two classes are said to be coupled if methods declared in one class uses

methods or instance variables defined by other class. They stated that excessive

coupling between objects can lead to modular design and inhibit reusability.

Higher the coupling, weaker the reusability of class and it will be more complex

to maintain the class.

Response for a class (RFC): RFC is the count of the set of all methods that can

be invoked in response to a message to an object of the class or by some method

in the class [38]. This includes all methods accessible with in the class hierarchy.

RFC counts the occurrence of calls to other classes from a particular class, RFC=

{RS}. The response set (RS) of a class is a set of methods that can potentially be

executed in response to message received by an object of that class. The

cardinality of this set is a measure of the attributes of objects in a class. Since

RFC specifically include methods called from outside the class, it is also a

measure of the potential communication between the class and other classes. The

bigger the RFC, the complexity of the class increases and testing and debugging

of the class becomes more complicated since it requires a greater level of

understanding on the part of tester. The complexity of a class increases with the

number of methods that can be invoked from it.

Weighted Methods per Class (WMC): Another metrics of Chidamber and

Kemerer’s [37] suite is WMC which measures the complexity of an individual

class. If all the methods are considered equally complex, then WMC is simply the

number of methods defined in each class, WMC=ni=1 Ci where C1 has M1, …. Mn

methods with c1,..,cn complexity respectively. Since WMC is intended to measure

the complexity of a class, it is indicator of the effort needed to develop and

Page 33: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Literature Review

Page 23

maintain a class. If WMC is larger, then program is complicated which means

more time and effort should be put on the class.

Depth of Inheritance Tree (DIT): DIT measures the maximum level of the

inheritance hierarchy of a class [37]. The root of the inheritance tree inherits from

no class and is at level zero of the inheritance tree. Direct count of the levels of

the levels in an inheritance hierarchy. DIT is intended to measure the class

complexity, design complexity and the potential reuse because the more deeper is

a class, the greater number of methods is likely to inherit. If DIT is smaller, then

the class is more abstract and simpler.

Number of Direct Child (NOC): NOC is the number of immediate subclasses

subordinate to a class in the hierarchy [37]. NOC counts the number of subclasses

belonging to a class. NOC indicates the level of reuse, the likelihood of improper

abstraction and as possible indication of the level of testing required. The greater

the number of children, the greater the likelihood of improper abstraction of the

parent and may be a case of misuse of subclassing. But the greater the number of

children, the greater the reuse since inheritance is a form of reuse. If a class has a

large number of children, it may require more testing of the methods of that class,

thus increase the testing time.

Lack of Cohesion (LCOM): LCOM measures the dissimilarity of methods in a

class by instance variable or attributes [37]. A highly cohesive module should

stand alone; high cohesion indicates good class subdivision. Lack of cohesion or

low cohesion increases complexity, thereby increasing the likelihood of errors

during the development process. High cohesion implies simplicity and high

reusability. High cohesion indicates good class subdivision. Lack of cohesion or

low cohesion increases complexity, thereby increasing the likelihood of errors

during the development process. Classes with low cohesion could probably be

subdivided into two or more subclasses with increased cohesion.

Henderson-Seller [39] suggested two problems with LCOM metric. First, two

classes can have a LCOM=0 while one has more common variables than other.

And second, there are no guidelines about interpreting the values. Therefore,

Henderson-Seller has suggested a new LCOM measure (LCOM*). If all methods

access all attributes, then µ(Aj) = ma, so that LCOM*=0, which indicates

perfect cohesion. If each method access only 1 attribute then µ(Aj) = a and

Page 34: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Literature Review

Page 24

LCOM*=1, which indicates a lack of cohesion. A value near zero for this metric

indicates very high cohesion, where most methods refer to most instance variable.

2.3.3 Other Metrics

Number of Public Methods (NPM): The NPM metric simply counts all the

methods in a class that are declared as public. It can be used to measure the size of

an API provided by a package.

Cohesion Among Methods of Class (CAM): This metric computes the

relatedness among methods of a class based upon the parameter list of the

methods. The metric is computed using the summation of number of different

types of method parameters in every method divided by a multiplication of

number of different method parameter types in whole class and number of

methods. A metric value close to 1.0 is preferred. (Range 0 to 1).

Inheritance Coupling (IC): This metric provides the number of parent classes to

which a given class is coupled. A class is coupled to its parent class if one of its

inherited methods functionally dependent on the new or redefined methods in the

class. A class is coupled to its parent class if: i) One of its inherited methods uses

a variable (or data member) that is defined in a new/redefined method. ii) One of

its inherited methods calls a redefined method. iii) One of its inherited methods is

called by a redefined method and uses a parameter that is defined in the redefined

method.

Coupling Between Method (CBM): The metric measure the total number of

new/redefined methods to which all the inherited methods are coupled.

Average Method Complexity (AMC): AMC measures the average method size

for each class and it is useful for JAVA. Size of a method is equal to the number

of java binary codes in the method.

2.4 Metrics Selected for Analysis

This section presents the metrics chosen for this thesis work. As the main focus of this work is

to study the relationship between agile developed software and laws of software evolution, it

requires set of metrics for analysing the behaviour of the software system with respect to the

software evolution laws. We choose Lines of Code (LOC), Number of Methods (NOM),

Coupling between Object (CBO), Lack of Cohesion (LCOM), Weighted Method per class

(WMC), Number of Direct Child (NOC), Response for a class (RFC) and Depth of Inheritance

Page 35: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Literature Review

Page 25

Tree (DIT) metrics for our study. We will use the agile concepts like pair programming, sprints,

refactoring also for the validation of software evolution laws.

2.5 Chapter Summary

This chapter provides the description of literature surveyed on software evolution and software

evolution in agile software development methodology. The traditional and object oriented

metrics are also summarized with a discussion on metrics and concepts chosen for the analysis

in this study.

Page 36: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

CHAPTER-3

METHODOLOGY AND IMPLEMENTATION

This chapter provides an overview of the methodology followed to carry out the validation of

software evolution laws for software development using agile methodology. It provides a

description of set of sample applications chosen along with tools used to carry out empirical

analysis. An overview of the statistical techniques used for data analysis is also given.

3.1 Sample Application

During the literature survey, some major issues with previous research were identified. There is

a lack of empirical studies for validation of software evolution laws for agile developed

processes. Also few researchers focused on the study of software evolution laws using agile

processes by comparing agile and non-agile projects or with single sample project. Taking

these things into consideration, the experiments were carried out using a set of real world

software systems developed using agile methodology. Though agile methodologies have gained

adoption in a wide variety of software development domains and came into mainstream of

software engineering and adopted by small software firms and by large organizations, but the

availability of software data enabling empirical software engineering studies about agile

development methodology is scarce. An intensive search was performed for the selection of

software system developed using agile processes. Three projects were selected as per the

requirement of thesis and the availability of data for implementation purpose.

3.1.1 FlossAr

FlossAr is an open source java project. FlossAr is a program to manage the Register of

Research of universities and research institutes. FlossAr was developed with a full object

oriented (OO) approach and released with GPL v.2 open source license [40]. This open source

software is available on SourceForge.net [41]. FlossAr is a web application, which has been

implemented through a specialization of the open source software project, jAPS (Java Agile

Portal System), a Java framework for Web portal creation. Since Java is an OO language, we

used the Chidamber and Kemerer (CK) OO metrics suite. As FlossAr project had to be

developed quickly, in front of requirements not well understood at the beginning, and with a

high probability of changing, the management of FlossLab, the firm behind the development of

FlossAr, decided to use an agile approach to develop the system.

Agile Methodology is a recent approach to software development, introduced at the end

of nineties and now widely accepted worldwide as “mainstream” software engineering. Agile

Page 37: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Methodology And Implementation

Page 27

methodology offers a viable solution when the software to be developed has fuzzy or changing

requirements, being able to cope with changing requirements throughout the life cycle of a

project. The choice of the development practices to used is of paramount importance for the

success of the project. The team and its advisors defined some principles to be followed:

Code Reuse: Not only the underlying framework , but also the specialized

software product must be reusable. In fact, there is no such thing as a general

purpose register of research, but each university or research institution wish to

customize such a system to cope with its specific features and requirements.

Evolvability: It is very important that the software can be easily modified and

upgraded, in a context where requirements were unclear since the beginning and

new requirements might be added continuously.

Maintainability: Errors and failures must be fixed quickly, in every software

module composing the system, minimizing the probability to introduce new bugs

when old bugs are fixed.

Modularity: The functional blocks of the underlying framework must be kept, and

new modules must be added on each of them, with no intervention on the

framework itself.

Portability: This was a specific requirement of FlossAr, to be able to propose it to

several research institutions, with different hardware and software contexts. For

other specialization projects, it might not be as important.

Based on the above defined principles, the team of FlossAr defined a set of agile

practices derived from Extreme programming and these includes pair programming, on site

customer, continuous integration, small releases, test driven development, refactoring, coding

standards, collective code ownership, sustainable pace, stand-up meeting, feature list and build

by feature.

3.1.2 StudentLancer

StudentLancer is a market place where students from various streams and departments can get

their job done related to the field. StudentLancer is a web application created online where

dealers and students can register themselves. The marketplace offers the various projects

related to the fields. The projects are handled by the dealers, The dealer gets notified about the

student and also a risk factor about the project/task. The details of the task are notified and by a

mutual agreement a timeline and cost are decided for both. The web application can give all the

Page 38: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Methodology And Implementation

Page 28

transaction details, documents shared and other details between both parties. The web

application is developed using Agile Methodology.

The team of StudentLancer defined a set of agile practices derived from Extreme

programming and they were pair programming, on site customer, continuous integration, small

releases, test driven development, refactoring, coding standards, collective code ownership,

sustainable pace, stand-up meeting, feature list and build by feature.

3.1.3 Multi-Level Marketing (MLM) Software

Multi-Level Marketing software is a web application which maintains a database of customers,

their online sales record and the sales of other salespeople that they recruit. MLM software

plays an important role for successful multi-level marketing business. Online MLM

software enables MLM companies to manage and run their direct selling business more

effectively towards a successful way. This software provides easy tracking of customers,

various kinds of reports regarding sales, revenue, analytical and pictorial presentation in

hierarchical structure of MLM customers. The web application is developed using the agile

methodology.

3.1.4 Tools used for the StudentLancer and Multi-Level Marketing software

The projects StudentLancer and Multi-Level Marketing software are developed by the same

organization. This section provides an overview of the tools used by the organization to

develop the two softwares. The tools used for the project development and management

processes are as follows:

GitHub is used for code repository and version controlling [42]. GitHub

repositories can be accessed from both Git and Subversion (SVN) clients. It

supports Subversion clients via the HTTPS protocol. It can be used to make

revision of the projects. Revision can be checked and updated using GitHub.

Addition of new features and fixing of bugs, can be made to GitHub by commits.

Jenkins is used for continuous integration for software development of projects.

[43]. It is an open source tool written in Java. It is a server-based system running

in a servlet container such as Apache Tomcat. It supports SCM tools including

AccuRev, CVS, Subversion, Git, Mercurial, Perforce, Clearcase and RTC, and

can execute Apache Ant and Apache Maven based projects as well as arbitrary

Page 39: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Methodology And Implementation

Page 29

shell scripts and Windows batch commands. The primary developer of Jenkins is

Kohsuke Kawaguchi. Jenkins was released under the MIT license and it is free

software. Builds can be stated by various means, including being triggered by

commit in a version control system, scheduling via a cron-like mechanism,

building when other builds have completed, and by requesting a specific build

URL.

Asana was used by the team to enable teamwork and for project management

[44]. Asana is a web based solution (SAAS: Software as a service) for the

effective collaboration of teams. The main user focus is to plan and manage

projects and tasks online without the use of email. The asana workflow is as

follows: Each team gets a workspace. Workspaces contain projects, and projects

contain tasks. In each task, users can add notes, comments, attachments, and tags.

Users can follow projects and tasks, and, when the state of a project or task

changes, followers get updates about the changes in their inboxes. The API is

available for free to everyone with an Asana account and can be accessed through

their developer site. Asana is integrated with several popular productivity tools

including Dropbox, Evernote, Google Drive, Harvest, and Instagantt, Jira,

Zendesk, among others.

3.2 Methodology

This section provides the methodology adopted to study the validation of software evolution of

agile projects using Lehman laws.

Figure 3.1: Methodology Followed

Page 40: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Methodology And Implementation

Page 30

Data collection: Once the sample applications were selected, the next step was to

collect data. To extract the data needed for analysis, different tools were used. The data is

collected for each release version of the selected projects. The software metrics were obtained

for each sample project and metrics values were then exported in Excel files. Microsoft Excel

was used to carry out the graphical representation of metrics for validation of software

evolution laws. The data about the set of agile practices used for the development and

maintenance of sample projects was also selected. The class name for the projects

StudentLancer and MultiLevel Marketing were not mentioned here in the thesis to maintain the

secrecy of the projects. A graphical depiction of methodology is given in Figure 3.1.

3.3 Tools Used

This section presents an overview of tools used for metrics collection and tools used to carry

out statistical analysis.

3.3.1 CKJM extended

In order to collect traditional and object oriented metrics value, a tool was required which can

fetch sample java application and execute them to provide metric values. For this purpose, we

chose CKJM extended [45] as metric collection tool. CKJM calculates metrics that have been

recommended as good quality indicator. CKJM extended (2.0) does not offer a Graphical User

Interface (GUI) and its focus is not on elaborate diagrams but on efficient calculation of

metrics. It is an open source project and is an extended version of CKJM 1.8. It was extended

through increasing the number of software metrics that it calculates. The program CKJM

extended calculates nineteen size and structure software metrics by processing the bytecode of

compiled Java files. To run the program simply specify the class files (or jar files) on its

command line or standard input. The program will produce on its standard output a line for

each class containing the complete name of the class and the values of the corresponding class

metrics. The program calculates for each class the following metrics and displays them on its

standard output:

WMC: Weighted methods per class (NOM: Number of Methods in the QMOOD

metric suite)

DIT: Depth of Inheritance Tree

NOC: Number of Children

CBO: Coupling between object classes

Page 41: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Methodology And Implementation

Page 31

RFC: Response for a Class

LCOM: Lack of cohesion in methods

Ca: Afferent coupling (not a C&K metric)

Ce: Efferent coupling (not a C&K metric)

NPM: Number of Public Methods for a class (not a C&K metric; CIS: Class

Interface Size in the QMOOD metric suite)

LCOM3: Lack of cohesion in methods Henderson-Sellers version

LCO: Lines of Code (not a C&K metric)

DAM: Data Access Metric (QMOOD metric suite)

MOA: Measure of Aggregation (QMOOD metric suite)

MFA: Measure of Functional Abstraction (QMOOD metric suite)

CAM: Cohesion Among Methods of Class (QMOOD metric suite)

IC: Inheritance Coupling (quality oriented extension to C&ampK metric suite)

CBM: Coupling Between Methods (quality oriented extension to C&ampK metric

suite)

AMC: Average Method Complexity (quality oriented extension to C&ampK

metric suite)

CC: McCabe's Cyclomatic Complexity

To run ckjm extend run java with the -jar flag, providing as its argument the location of

the file ckjm.jar and specify Java class files as arguments. A graphical presentation of tool is

given in Figure 3.2. The command's output will be a list of class names (prefixed by the

package they are defined in), followed by the corresponding metrics for that class: WMC, DIT,

NOC, CBO, RFC, LCOM, Ca, Ce, NPM, LCOM3, LOC, DAM, MOA, MFA, CAM, IC, CBM

and AMC . In lines where at the beginning is "~" is the value of CC. CC is counted for all

methods in given class.

Figure 3.2: Screenshot of CKJM Extended

Page 42: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Methodology And Implementation

Page 32

3.3.2 PHP_Depend

PHP_Depend is a small program that performs static code analysis on a given source base [46].

Static code analysis means that PHP_Depend first takes the source code and parses it into an

easily processable internal data structure. This data structure is normally called

an AST (Abstract Syntax Tree), that represents the different statements and elements used in

the analyzed source base. Then it takes the generated AST and measures several values for

software metrics. Each of these values stands for a quality aspect in the analyzed software,

observed from a very high level of abstraction, because no source was reviewed manually until

now. PHP Depend can generate a large set of software metrics from a given code base, these

values can be used to measure the quality of a software project and they help to identify that

parts of an application where a refactoring should be applied.

Figure 3.3: Screenshot of PHP_Depend

Page 43: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Methodology And Implementation

Page 33

3.3.3 Microsoft Excel

Microsoft Excel is a spreadsheet application developed by Microsoft for Microsoft Windows

and Mac OS [47]. It is a spreadsheet program that allows to store, organize and analyze

information. It features calculation, graphing tools, pivot tables, and a macro programming

language called Visual Basic for Applications. It has been a very widely applied spreadsheet

for these platforms, especially since version 5 in 1993, and it has replaced Lotus 1-2-3 as the

industry standard for spreadsheets. Microsoft Excel has the basic features of all spreadsheets,

using a grid of cells arranged in numbered rows and columns to organize data manipulations

like arithmetic operations, where column represents a variable and each row represents a case.

It supplies functions to answer statistical, engineering and financial needs. It displays data as

line graphs, histograms and charts, and limited three-dimensional graphical display. It allows

sectioning of data to view its dependencies on various factors for different perspectives. It has a

programming aspect, Visual Basic for Applications, allowing the user to employ a wide variety

of numerical methods. It has a variety of interactive features allowing user interfaces that can

completely hide the spreadsheet from the user, so the spreadsheet presents itself as an

application via a custom-designed user interface. Microsoft Excel 2013 included three views:

Normal view, Page Layout view and Page Break view. In our analysis, we have used Microsoft

Excel 2013 for graphical representation of data.

Figure 3.4: Screenshot of Microsoft Excel

Page 44: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Methodology And Implementation

Page 34

3.4 Techniques used for Analysis

The following section provides a detailed review of the techniques used in this study.

Average: The Microsoft Excel Average function returns the average (arithmetic

mean) of the numbers provided.

Average (number 1, [number 2] ,…, [number n] )

The software metrics was calculated for each individual file and then combined

into an average for the release.

Sum or Total Count: The sum function is one of the math and trig functions

which adds all of its argument.

SUM(number 1, [number 2],…,[number n] )

Graphs: Graphs or charts are incredibly useful tools, and Excel makes it quick

and easy to add them to the spreadsheets in order to tell a graphical presentation

of the data. Excel makes graphs so efficiently that it is considered a basic feature

of the program. The graphical representation of the software metrics data shows

the software evolution trends.

3.5 Chapter Summary

This chapter provides the description of sample projects, tools and methodologies used by the

projects for software development and tools and techniques used for collecting and the metric

data. The techniques used to analyse the data are also summarized.

Page 45: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

CHAPTER-4

RESULTS AND ANALYSIS

This chapter provides a detailed description of the results of empirical validation of software

evolution of agile projects using Lehman laws. We analyze the Lehman laws of software

evolution in the light of several metrics, computed for different versions of FlossAr,

StudentLancer and Multi-Level Marketing software released through evolution process. Some

of the laws have a direct relevance to the computed metrics whereas for some of the laws we

did not find direct relevance to software metrics.

4.1 Analysis Techniques and Result

This section summarizes the results obtained from the experimentation carried out on sample

projects. Each result is represented in graphical form. In each result the major points identified

during analysis are also highlighted.

4.1.1 Continuing Growth and Continuing Change (Law 1 and Law 6)

These two laws (Continuing Growth and Continuing Change) are directly connected, as growth

in the system is a direct result of change. The law of continuing change describes the fact that a

software system must continually adapt to its environment in order to meet user needs and to be

used for longer period. Software may change in response to bug fixing activity or in response to

change in the environment. The law of continuing growth states that a system must continue to

add new functionality over time. It is difficult to differentiate between growth and change. The

change as a result of change in usage environment may include addition of some functions,

classes or methods which will increase the size of software leading to growth. These laws are

measured in terms of size, number of LOC (per release) and graphical representation is shown

in Figure 4.1.

Figure 4.1: Growth and Change for projects 1, 2 and 3

Page 46: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 36

From the graph it is clear that the line of code of projects were increasing following a

smooth trend with release of new version. For project StudentLancer (LOC1), the graph is

showing the growth of LOC with small increase of code at each version. For project MLM

(LOC2), it is showing linear growth trend with huge increase in LOC at each version. For

project FlossAr (LOC3), the growth is slowly increasing from release 1 to release 2 as the

number of classes added were very less. But after release 2, the graph is showing linear growth

with an increase of 146764 lines of code. From the graph and analysis, it is clear that the law of

continuing change and continuing growth is reflected by all projects.

4.1.2 Increasing Complexity (Law 2)

The second law of evolution states that the complexity of the system increases as the program

evolves unless steps are taken to reduce complexity. It is perceived that growth adds to increase

in complexity but if appropriate changes are made; the evolution process might not show the

attributes that conforms increase in complexity. Therefore, it becomes difficult to determine

whether the law is reflected by the evolution process or not.

In case of object oriented systems, the complexity of the software system or subsystem

can be determined using coupling between objects (CBO), response for a class (RFC),

weighted method per class (WMC) and lack of cohesion metrics (LCOM).

The CBO was calculated for each file and then average was calculated for each release

overall. Figure 4.2 shows the CBO for each project.

Figure 4.2: Law of Increasing Complexity measured by CBO per release

Page 47: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 37

The project 1(MIM) has lesser degree of coupling as coupling between objects decreases

with new releases. The project 2 (StudentLancer) has the higher overall coupling value for all

releases, but it is showing same trend as project 1, which means the coupling is decreasing with

software evolution. For project 3 (FlossAr), the CBO grows from release 1 to release 2 and is

the higher for release 3. The classes with higher CBO indicate that they are highly

interconnected and related classes are accessing the internal details of one another. An ideal

project would have a low degree of coupling. The coupling for project 1 and 2 is decreasing

with new releases. The coupling for project 3 is increasing with new releases which is the result

of addition of huge number of classes at release 3.

For project 1, cohesion among methods of class was calculated. The LCOM was

calculated for project 2 and 3. The LCOM was calculated for each individual file, and

combined into an average for the release. The cohesion for project 1 is shown in Figure 4.3 and

cohesion for project 2 and 3 is shown in Figure 4.4.

Figure 4.3: Law of Increasing Complexity measured by cohesion for project 1

For Project 1, cohesion increases with higher value from release 1 to release 2 to release

3. Project 2 is also showing the higher cohesion value with the new releases of projects. For

Project 3, cohesion is decreasing from release 1 to release 2 and after that it is increasing for

release 3. An ideal project would have a low degree of coupling and a high degree of cohesion.

0

0.2

0.4

0.6

0.8

1

1.2

CAM: Cohesion AmongMethods of Class

CAM: Cohesion AmongMethods of Class

CAM: Cohesion AmongMethods of Class

Cohesion

Version 1 Version 2 Version 3

Page 48: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 38

Figure 4.4: Increasing Complexity for project 2 and 3

The RFC was calculated for each file and then average was calculated for each release

overall for project 2 and 3. For Project 2 (StudentLancer), the average RFC decreases with the

release 2 and after that increases with release 3. For project 3 (FlossAr),the average RFC

decreases with new releases. The larger RFC increases the complexity because a large number

of methods can be invoked in response to a message which is an indicator of the effort of

testing and debugging. The growth curve for average RFC for project 2 and 3 is shown in

Figure 4.5.

Figure 4.5: Growth curve for average RFC for project 2 and 3

Page 49: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 39

The change in the measure of average WMC for project 2 and 3 is shown in figure 4.6.

Both projects shows the increase in complexity measure. For project 2 (StudentLancer), there is

a decrease in average WMC from release 1 to release 2 and after that it is increasing during

release 3. The same trend is observed for project 3 (FlossAr). On looking into the details of

revision made to both projects, it is observed that major changes were brought about in the

overall structure of the software.

Figure 4.6: Growth curve for average WMC for project 2 and 3

The continuing growth of the software led to an increase in the number of classes and the

number of member functions and causing an increase to total CBO, LCOM, RFC and WMC.

This indicates an increasing complexity. The interpretation of observation related to average

CBO, LCOM, RFC and WMC is slightly different. Due to increase in the number of classes the

average CBO, LCOM, RFC and WMC was distributed over to added classes and showing a

slow increase in the complexity. This is interesting as it is showing result opposite to what

Lehman’s law would predict. The decrease in the complexity measure for all projects can be

attributed to activities meant to reduce the complexity. This means that the developers of all

projects are able to decrease their complexity through the use of iterations, intermediate minor

releases and focusing on maintenance of the project.

4.1.3 Self Regulation and Feedback (Law 3 and Law 8)

Evolution process of E-type system is self regulating. This means that growth rate is regulated

by the maintenance process. According to the law of feedback system, the evolution process is

Page 50: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 40

a multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve

significant improvement over any reasonable base.

The law 3 states that growth trends in the system are cyclically self regulating over a long

time period. A growth trend is seen when the lines of code added are considered in Figure 4.1.

In agile development methodology lifecycle, there are ripples in the growth. An iteration in

agile with a large increment in number of files can be followed by one with lesser number of

additions, and this pattern repeats, emphasizing the self regulatory nature of the development

process. It is also important to note that in agile development methodology, the development

process is divided into small iterations which may last for 2-4 weeks depending upon the

features to be implemented in that iteration. The agile development methodology process itself

is self regulating as it is showing iteration of different sizes in terms of weeks. The number of

weeks spend for one iteration can be larger as compared to number of weeks spend for another

followed iteration.

Figure 4.7: Duration of Iterations for Project MIM during release 3

Figure 4.8: Duration of Iterations for Project StudentLancer during release 2

Page 51: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 41

The duration of iterations for project MIM and StudentLancer is shown in Figure 4.7 and

Figure 4.8 respectively which shows the different durations for each iteration in terms of

weeks. Figure 4.9 represent the changes in files during the sprints for project MIM. Figure 4.10

and Figure 4.11 represent the changes in files during the sprints for project StudentLancer

during release 2 and release 3 respectively.

Figure 4.9: Change in files during Sprint for project MIM

Figure 4.10: Change in files during Sprint for project StudentLancer for release 2

It can be observed that change in files in terms of file addition, file deletion and file

modification differs from sprint-to-sprint or iteration-to-iteration. Thus even when there are

ripples in growth, these are regulated with certain bounds. Lehman’s third law of cyclical self

regulation does seem to explain the observed behaviour in the project.

Page 52: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 42

Figure 4.11: Changes in files during Sprint for project StudentLancer for release 3

In the eighth law on feedback system, Lehman determines the ripple effect of the growth

of a software system as an outcome of the system stabilizing itself due to feedback. In feedback

systems, correct decisions can only be taken in the context of understanding of the system as a

whole. Feedback plays an important role in self stabilization and to exploit them in future

planning, management and process improvement. In agile software development methodology,

the feedback is continuous process across sprints. The product backlog changed from one sprint

to next based on the feedback control. For all the three projects, the on-site customer was

available throughout the development of project and the modification in the project is as per the

new requirements received from the customer or to correct bugs/error in the previous releases.

The project 3 (FlossAr) is an open source project and major feature request and reporting of

bugs comes from user community. In Agile development methodology, the customer places the

important role as customer is available full time with the development team and it include short

releases of software system for the customer. This law is true for all three agile projects.

4.1.4 Conservation of Familiarity (Law 5)

This law states that the familiarity with evolving E-type system is conserved. A huge change

that might cause lack of familiarity of staff members involved with in the evolving software is

avoided. From the study of continuous growth and change, the size of project 2 and project 3

changes abruptly. But both the projects used pair programming through out the project

development phase, therefore familiarity was maintained. In agile development methodology,

the concept of collective code ownership and pair programming helps in maintaining the

Page 53: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 43

conservation of familiarity in the system. Through collective code ownership, multiple

developers in the team can update and change the same code. In such a scenario, domain

knowledge gets distribute across multiple team members and familiarity is thus shared.

4.1.5 Declining Quality (Law 7)

According to this law, the quality of evolving software will decline unless some substantial

efforts are made to improve it. The law is similar to Law 2: Increasing complexity, which is

indicator of declining quality. Figure 4.3 and 4.4 depicts that for project 1 and 2 the value of

cohesion increases but for project 3 the value of cohesion decreases which means that quality

of project 3 is declining and efforts will made to improve it.

For Project 1, cohesion increases with higher value from release 1 to release 2 to release

3. Project 2 is also showing the higher cohesion value with the new releases of projects. For

Project 3, cohesion is decreasing from release 1 to release 2 and after that it is increasing for

release 3. An ideal project would have a low degree of coupling and a high degree of cohesion.

This is interesting as it is showing result opposite to what Lehman’s law would predict. This

means that the developers of all three projects are able to decrease their complexity through the

use of iterations, intermediate minor releases and focusing on maintenance of the project.

The test driven development was used by all the projects which is essential to maintain

the quality of the system. For the projects under study, the majority of defects were identified

during sprint releases or while the development because a large number of test cases were

developed prior to the release. Thus, quality of projects were maintained.

4.2 Results Summary

This section summarizes the results generated from the experimentation carried out on sample

projects as mentioned in the previous section. In each result the major points identified during

analysis are highlighted.

i. Continuing Change: This law specifies that a program must continually adapt to it

environment, otherwise it becomes progressively less useful. Figure 4.1 showed

the growth for change in LOC for all three projects. It is evident from the results

in Figure 4.1 that there is an increase in LOC. This growth in terms of LOC is

assumed to be a result of constant need for new functionality.

ii. Increasing Complexity: The second law of evolution states that the complexity of

system increases as system evolves, unless effort is made to prevent it. It is

Page 54: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 44

evident from Figure 4.2 that projects MIM and StudentLancer has lesser degree of

coupling as CBO decreases with new releases, which can be supported by the fact

that in case of both projects, MIM and StudentLancer, efforts are being made to

make the changes in such a manner that evolution process does not increases the

complexity. Whereas for project FlossAr, there is an increase in the complexity

from version 2 to verison 3, which is the result of addition of large number of

classes at release 3.

For all three projects, cohesion is calculated. Figure 4.3 and 4.4 shows

that project MIM and StudentLancer shows the continues increase in the cohesion

value. For project FlossAr, first cohesion decreases from version 1 to version 2,

and after that it increases from version 2 to version 3 which means that the

complexity of system decreases through the use of iterations, intermediate minor

releases and focusing on the maintenance of the project.

iii. Self regulation: This law of self regulation suggests that the evolution of large

software systems is self regulating process. It can be observed from Figure 4.9,

4.10 and 4.11 that changes in files in terms of file addition, file deletion and file

modification differs from iteration-to-iteration. Thus even when there are ripples

in growth, these are regulated with certain bounds.

iv. Conservation of Familiarity: The fifth law on conservation of familiarity states

that during the active life of an evolving program, the content of successive

releases is statistically invariant. As system evolves, the associated team must

maintain mastery of its content and behaviour. The agile methodologies used in

the projects like pair programming and collective code ownership helps

maintaining the conservation of familiarity in the system.

v. Continuing Growth: This law states that the functional content of software

systems must be continually increased to maintain user satisfaction over time. It

can be observed from Figure 4.1 that there is a noticeable change in the size

metrics of all projects for all versions. It is concluded that the evolution pattern of

all three projects is correlated to law of continuing growth.

vi. Declining Quality: According to this law, the quality of evolving software will

decline unless some substantial efforts are made to improve it. For all three

projects, cohesion decreases which means that the developers of all projects are

able to decreases their complexity through the use of iterations, intermediate

minor releases and focusing on maintenance of the project. The test driven

Page 55: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Results and Analysis

Page 45

development is used by all projects and majority of defects were identified during

small releases helps to maintain the quality of the project.

vii. Feedback System: According to this law an evolutionary process must constitute

multi-level, multi-loop, multi-agent feedback systems and must be treated as such

to achieve significant improvement over any reasonable base. For agile developed

projects, feedback is continuous process across sprints and for all three projects,

the onsite customer was available throughout the development of the project. The

law seems to be true in the sense that since feature request and reporting of bugs

comes from user community, and continuous feedback from onsite customer plays

major role in the evolution process.

4.3 Chapter Summary

This chapter provided the results obtained from the experimentation carried out on all three

sample projects with graphical representation. The chapter concluded with result summary.

Page 56: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

CHAPTER-5

CONCLUSIONS AND FUTURE WORK

The rapid growth of software industry has changed the software development technology from

traditional software development methodology to agile based development methodology. Many

organizations shifted to agile development methodology and with this increase in the use of

agile methodology for software development there is a need to study the software evolution

trend for these software systems. The combined use of quantitative and qualitative evidence

provides the software evolution. It seems that this is due to the high level of complexity control

work and high rate of iteration with customers quickly receiving the requested functionality.

There is a need to study more agile developed systems to see if the software evolution law is

true for such systems or not. This work focus on empirically validating software evolution laws

for agile developed systems in the light of number of software metrics and agile methodology

used for the development and evolution of the project. To carry out experimentation LOC,

CBO, LCOM, RFC, WMC was selected and various agile values and principles were studied.

This investigation was carried out using a set of agile developed systems which include real

world applications and projects are active for commercial use. All the results were collected for

sample projects for the validation of software evolution laws. In this chapter, conclusions of the

work presented in the previous chapter are drawn. Following these conclusions, some pointers

are mentioned on possible future work.

5.1 Conclusions

Based on the results drawn in the previous chapter, following conclusions have been identified:

The agile develop projects allows smooth evolution while avoiding the problems

of increasing complexity and decreasing customer satisfaction.

Due to high level of complexity control work and the high rate of iterations, the

customers were quickly receiving the requested functionality.

All the projects shows the effect of continuous change and continuous growth

with increase in LOC.

For two systems, coupling is decreasing with new release which reduces the

complexity of the systems. While one system shows the increases in coupling for

last release which is the result of adding large number of classes through

increased customer requirements and feedback.

Page 57: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Conclusions and Future Work

Page 47

The two systems were showing the increase in cohesion while for one system

cohesion is decreasing from release 1 to 2 and after that it is increasing. An ideal

project should have high degree of cohesion. This is interesting as it is showing

result opposite to what Lehman’s law would predict. This means that the

developers of all systems are able to decrease their complexity through the use of

iterations, intermediate minor releases and focusing on maintenance of the project.

The law of self regulation is analyzed using the sprint durations and change in

files during the iterations. There are ripples in growth, regulated with certain

bounds. The lehman’s third law of cyclical self regulation explain the observed

behaviour in the project. It was proposed that the self regulatory behaviour of

project can be studied form the durations of sprints/iterations as it is showing the

ripple effect for growth of the system.

The law of feedback system determines the ripple effect of growth of a software

system which is due to continuous feedback. In agile, the feedback is continuous

process across sprints. And all the projects shows the effect of continuous

feedback as the customer was available throughout the development process and

also system changes with reporting of errors/bugs which is also a kind of feedback

received from the customer.

All projects shows the effect of conservation of familiarity as collective code

ownership and pair programming is used across all the sprints and project.

The quality of evolving software is determined using the concept of cohesion and

coupling. The two projects shows the high coupling and low cohesion and one

project is showing decrease in cohesion from release 1 to 2 and after that increase

in cohesion from release 2 to 3, which means that the developers of two project

are able to maintain the complexity through the use of iterations, intermediate

minor releases and focusing on maintenance of the project.

5.2 Future Work

Some interesting challenges were identified while carrying out this thesis work, which could be

further considered for the future work. The challenges are:

The lack of data available for the agile developed projects was the bigger

challenge. There is a need to seriously look into this matter so that research can be

easily carried out for agile processes.

Page 58: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

Conclusions and Future Work

Page 48

The real world application involve three systems developed using agile

methodology which includes FlossAr, StudentLancer and MultiLevel Martketing

software. In this work, only a set of real world applications were selected. Future

work may involve exploring the wide range of applications for validation purpose.

There is a need to explore more systematic ways of combining quantitative and

qualitative observation for building a richer and fuller picture of software

evolution.

The investigation in this work has been carried out only on systems with very

limited number of releases. Large systems with more number of releases over a

longer period in number of years must be studied to further analyse the validation

of software evolution for agile processes.

The investigation must be carried out with respect to iterations for validation of all

laws of software evolution.

The reflection of law of continuing change, continuing growth, increasing

complexity, self regulation and declining quality was easily determined using

software metrics. But the relatedness of law of conservation of organization

stability and feedback system was hard to determine with relevant data.

Page 59: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

REFERENCES

[1] Meir M. Lehman and Juan F. Ramil, “Software Evolution: Background, Theory,

Practice”, Information Processing Letters, vol. 88, no. 1-2, pp. 33-33, 17 October 2003

[doi:10.1016/S0020-0190(03)00382-X]

[2] Manny Meir Lehman, Juan F Ramil, Paul D Wernick, Dewayne E Perry and Wladyslaw

M Turski, “Metrics and Laws of Software Evolution – The Nineties View”, Proceedings

of the 4th

International Symposium on Software Metrics, pp. 20-32, 05-07 November

1997.

[3] L.A. Belady and M.M. Lehman, “A Model of Large Program Development”, IBM

Systems Journal, vol. 15, no. 1, pp. 225-252, 1976.

[4] J. Dvorak, “Conceptual Entropy and its Effect on Class Hierarchies”, Computer, vol.

27, no. 6, pp. 59-63, June 1994 [doi:10.1109/2.294856]

[5] M.M. Lehman, “On Understanding Laws, Evolution and Conservation in the Large-

Program Life Cycle”, Journal of Systems and Software (1), pp. 213-221, July 1980

[doi:10.1016/0164-1212(79)9002-0]

[6] M. M. Lehman, "Programs, life cycles, and laws of software evolution", Proceedings of

the IEEE, vol.68, no.9, pp.1060-1076, Sept.1980 [doi:10.1109/PROC.1980.11805]

[7] Capers Jones, “Applied Software Measurement: assuring productivity and quality”,

McGraw-Hill, Inc., New York, NY, 1991.

[8] Bob Schatz and Ibrahim Abdelshafi, "Primavera gets agile: a successful transition to

agile development", Software, IEEE , vol.22, no.3, pp.36-42, May-June 2005

[doi:10.1109/MS.2005.74]

[9] S.C. Misra, U. Kumar, V. Kumar, and G. Grant, "The Organizational Changes Required

and the Challenges Involved in Adopting Agile Methodologies in Traditional Software

Development Organizations", Digital Information Management, 2006 1st International

Conference on , vol., no., pp.25-28, Dec. 2006 [doi:10.1109/ICDIM.2007.369325]

[10] Manifesto for Agile Software Development. Available at: http://agilemanifesto.org/

(last visited December 2014)

[11] P. Abrahamsson, O. Salo, J. Ronkainen and J. Warsta, “Agile software development

methods: Review and Analysis”, Espoo, Finland, Technical Research Centre of Finland,

VTT Publications 478. http://www.inf.vtt.fi/pdf/publications/2002/P478.pdf, 2002.

Page 60: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

References

Page 50

[12] Alistair Cockburn, “The Agile Software Development” Addison-Wesley Longman

Publishing Co., Inc., Boston, MA, 2002

[13] Article: Agile Principles and Values, by Jeff Sutherland. Available at:

http://msdn.microsoft.com/en-us/library/dd997578.aspx

[14] K. Beck, “Extreme programming explained: Embrace change”, Addison-Wesley

Longman Publishing Co., Inc., Boston, MA, 1999

[15] K. Beck, “Embracing Change with Extreme Programming”, IEEE Computer, vol. 32

no. 10, pp. 70-77, October 1999 [doi:10.1109/2.796139]

[16] C. Mann and F. Maurer, “A cases study on the impact of scrum on overtime and

customer satisfaction”, Agile Conference, 2005. Proceedings, vol., no., pp. 70-79, July

2005 [doi:10.1109/ADC.2005.1]

[17] Image from www.scrumalliance.org/why-scrum (last visited December 2014)

[18] N. Fenton and S.L. Pfleeger, “Software Metrics: A Rigorous and Practical Approach”,

PWS Publishing Co., Boston, MA, 1998

[19] L.H. Rosenberg, “Applying and Interpreting Object Oriented Metrics”, Proc. Software

Technology Conference, April 1998

[20] K. Duran, G. Burns, P. Snell, “Lehman's laws in agile and non-agile projects", Reverse

Engineering (WCRE), 2013 20th Working Conference on , vol., no.,pp. 292-300,

October 2013 [doi:10.1109/WCRE.2013.6671304]

[21] R. Sindhgatta, N.C. Narendra and B. Sengupta, “Software Evolution in Agile

Development: A Case Study”, Proceedings of the ACM international conference

companion on Object oriented programming systems languages and applications

companion, October 17-21, 2010, Reno/Tahoe, Nevada, USA

[doi:10.1145/1869542.1869560]

[22] A. Capiluppi, J. Fernandez-Ramil, J. Higman, H.C. Sharp, and N. Smith, "An Empirical

Study of the Evolution of an Agile-Developed Software System", Software

Engineering, 2007. ICSE 2007. 29th International Conference on , vol., no., pp. 511-

518,May2007[doi:10.1109/ICSE.2007.14]

Page 61: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

References

Page 51

[23] M.M. Lehman, “Programs, Cities, Students: Limits to Growth?”, Inaugural Lecture,

Imperial College of Science and Technology, University of London, 1974.

[24] M.M. Lehman, “Laws of Software Evolution Revisited”, Proceedings of European

Workshop on Software Process Technology, Springer-Verlag, London, UK, pp. 103-

124, October 1996.

[25] C.R. Cook and A. Roesch, “Real-Time Software Metrics”, Journal of Systems and

Software, vol. 24, no. 3, pp. 223-237, 1994

[26] V.R. Basili, L.C. Briand, S. Condon, Y.M. Kim, W. Melo and J. Valett, “Understanding

and Predicting the Process of Software Maintenance Releases”, Proc. 18th

Int’l Conf.

Software Eng., Berlin, 1996.

[27] C.F. Kemerer and S. Slaughter, “An empirical approach to studying software

evolution”, IEEE Trans. Software Engineering, vol. 25, pp. 493-509, 1999.

[28] D. Kafura, “The use of software complexity metrics in software maintenance”, IEEE

Trans. Software Engineering, vol. 13, pp. 335-343, 1987.

[29] S. Cook, He Ji and R. Harrison, “Software Evolution and Software Evolvabilty”,

University of Reading, UK, 2000.

[30] Michael W Godfrey and Qiang Tu., “Evolution in open source software: A case study”,

In Software Maintenance, 2000. Proceedings. International Conference, pp. 131-142,

IEEE, 2000

[31] G. Xie, J. Chen and I. Neamtiu, “Towards a better understanding of software evolution:

An empirical study on open source software”, In ICSM, pp. 51-60, 2009.

[32] Kalpana Johari, Arvinder Kaur, “Effect of software evolution on software metrics: An

Open source case study”, ACM SIGSOFT Software Engineering Notes, vol. 36, no. 5,

September 2011 [doi: 10.1145/2020976.2020987]

[33] Anita Ganpati, Arvind Kalia and Hardeep Signh, “Software Evolution: An Empirical

Study of Mozilla Firefox”, International Journal of Computer Technology and

Applications, vol. 3, no. 3, pp. 992-996, May-June 2012

Page 62: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

References

Page 52

[34] Y. Lee, B. Liang and F. Wang, “Some Complexity Metrics for Object Oriented

Programs Based on Information Flow”, Proceedings: CompEuro, March, 1993, pp. 302-

310.

[35] McCabe & Associates, “McCabe Object Oriented Tool User’s Instructions”, 1994.

[36] R. Hudli, C. Hoskins and A. Hudli, “Software metrics for Object Oriented

Designs”,Proceedings of the 1994 IEEE Interbational Conference on Computer Design:

VLSI in Computer & Processors, pp. 492-495, October 1994

[37] S.R Chidamber and C.F Kemerer, “Towards a metrics Suite for object-oriented design”,

In Object Oriented Programming Systems Languages and Applications, pp. 197-211,

Phoenix, Arizone, USA, 1991.

[38] S.R Chidamber and C.F Kemerer, “A Metrics Suite for Object-Oriented design”, IEEE

Transactions on Software Engineering, Vol. 20, pp. 476-493, 1994.

[39] Henderson-Sellers, “Object-Oriented Metrics Measures of Complexity”, Upper Saddle

River, NJ:Prentice Hall, 1996.

[40] FlossAr site, http://www.flosslab.it/flosslab/en/flossar.wp

[41] FlossAr Source Code, http://www.sourceforge.net

[42] Github, https://github.com/

[43] Jenkins, http://jenkins-ci.org/

[44] Asana, https://asana.com/

[45] M. Jureczko, D. Spinellis, “Using object-oriented design metrics to predict software

defects”, In: Proceedings of the 5th International Conference on Dependability of

Computer Systems, pp. 69–81 (2010)

[46] PHP Depend, http://pdepend.org/documentation/handbook/index.html

[47] Microsoft Excel 2013, http://office.microsoft.com/en-IN

Page 63: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX – A

Experimental Results: Metrics Data

A.1 Experimental Results: Metrics Data of Multi-Level Marketing Software

Version LOC Number

of

Files

Number of

classes

Number of

package

Number of

Functions

Number of

Methods

Cyclomatic Complexity

/LLOC

Cyclomatic

Complexity /Number

of

Methods

Coupling between

Objects

CAM

Version 1 8979 464 32 3 64 368 0.03 1.07 2.125 0.535

Version 2 1289

28 864 52 5 58 548 0.06 2.04 2 0.675

Version 3 2589

88 2064 102 12 128 1148 0.75 6 0.4411 0.98

Page 64: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 54

A.2 Experimental Results: Metrics Data of StudentLancer

A.2.1 StudentLancer Version 1

Class name WMC DIT NOC CBO RFC LCOM NPM LCOM3 LOC CAM IC CBM AMC

Class 1 3 2 0 3 16 0 3 0 175 1 0 0 42

Class 2 17 0 0 8 65 46 6 0.125 473 0.5147 0 0 26.7647

Class 3 2 0 0 6 17 1 2 2 54 1 0 0 26

Class 4 28 1 1 2 41 0 28 0.132 182 1 0 0 12.3451

Class 5 1 2 0 0 14 0 1 2 10 1 0 0 3

Class 6 8 0 0 7 32 8 3 0.4286 256 0.25 0 0 30.75

Class 7 2 0 0 5 10 1 1 2 154 0.6667 0 0 76

Class 8 10 0 0 9 39 45 8 2 179 0.4 0 0 16.9

Class 9 12 0 0 8 47 36 12 0.2727 233 0.4722 0 0 18.333

Class 10 2 1 0 1 2 1 2 2 2 0.75 0 0 0

Class 11 10 3 0 7 28 33 10 0.3333 39 0.55 0 0 86

Class 12 15 3 0 4 66 0 15 2 111 0.75 0 0 16

Class 13 7 0 0 5 20 21 2 1.1333 100 0.3429 0 0 12.5714

Class 14 5 0 0 9 32 10 3 2 135 0.4 0 0 26

Class 15 2 0 0 1 6 1 2 2 18 0.5 0 0 8

Class 16 4 0 0 10 28 2 2 0.6667 381 0.5 0 0 93.75

Class 17 2 0 0 5 9 1 1 2 109 0.6667 0 0 53.5

Class 18 2 0 0 5 9 1 1 2 141 0.6667 0 0 69.5

Class 19 2 0 0 5 9 1 1 2 101 0.6667 0 0 49.5

Class 20 11 0 0 20 70 7 6 0.675 863 0.5455 0 0 76.3636

Class 21 5 0 0 10 41 8 2 0.5 377 1 0 0 73.8

Class 22 17 4 0 10 82 124 17 0.75 121 0.5 0 0 40

Class 23 16 0 0 8 49 98 14 0.6667 511 1 0 0 30.875

Class 24 5 0 0 7 15 2 1 0.5 60 0.6 0 0 10.6

Class 25 7 0 0 4 14 21 1 2 49 0.6429 0 0 6

Class 26 2 0 0 5 11 1 2 2 55 1 0 0 26.5

Class 27 6 0 0 6 24 0 4 0 127 1 0 0 20

Class 28 10 0 0 13 39 45 1 2 345 0.625 0 0 33.5

Class 29 2 3 0 1 20 1 2 2 8 0.75 0 0 2.5

Class 30 7 1 1 3 20 1 7 2 30 1 0 0 11.5

Class 31 15 0 0 15 63 0 11 0.7222 850 1 0 0 55.0667

Class 32 11 0 0 9 48 21 6 0.6435 1115 0.4333 0 0 96.1818

Class 33 4 0 0 10 25 4 2 0.3333 114 1 0 0 27

Class 34 29 2 1 6 60 4 29 0.3333 205 1 0 0 28

Class 35 2 0 0 6 23 1 2 2 160 1 0 0 79

Class 36 4 0 0 11 42 0 2 0.1667 516 1 0 0 127

Class 37 6 0 0 16 59 3 2 0.3 293 0.375 0 0 47.5

Class 38 8 0 0 13 49 16 2 0.4762 252 0.2708 0 0 30.125

Class 39 4 0 0 9 28 4 2 0.6667 204 0.625 0 0 48

Page 65: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 55

A.2.2 StudentLancer Version 2

Class name WMC DIT NOC CBO RFC LCOM NPM LCOM3 LOC CAM IC CBM AMC

Class 1 3 2 0 3 16 0 3 0 175 1 0 0 42

Class 2 17 0 0 8 65 46 6 0.125 473 0.5147 0 0 26.7647

Class 3 2 0 0 6 17 1 2 2 54 1 0 0 26

Class 4 28 1 1 2 41 0 28 0.132 182 1 0 0 12.3451

Class 5 1 2 0 0 14 0 1 2 10 1 0 0 3

Class 6 8 0 0 7 32 8 3 0.4286 256 0.25 0 0 30.75

Class 7 2 0 0 5 10 1 1 2 154 0.6667 0 0 76

Class 8 10 0 0 9 39 45 8 2 179 0.4 0 0 16.9

Class 9 12 0 0 8 47 36 12 0.2727 233 0.4722 0 0 18.333

Class 10 2 1 0 1 2 1 2 2 2 0.75 0 0 0

Class 11 10 3 0 7 28 33 10 0.3333 39 0.55 0 0 86

Class 12 15 3 0 4 66 0 15 2 111 0.75 0 0 16

Class 13 7 0 0 5 20 21 2 1.1333 100 0.3429 0 0 12.5714

Class 14 5 0 0 9 32 10 3 2 135 0.4 0 0 26

Class 15 2 0 0 1 6 1 2 2 18 0.5 0 0 8

Class 16 4 0 0 10 28 2 2 0.6667 381 0.5 0 0 93.75

Class 17 2 0 0 5 9 1 1 2 109 0.6667 0 0 53.5

Class 18 2 0 0 5 9 1 1 2 141 0.6667 0 0 69.5

Class 19 2 0 0 5 9 1 1 2 101 0.6667 0 0 49.5

Class 20 11 0 0 20 70 7 6 0.675 863 0.5455 0 0 76.3636

Class 21 5 0 0 10 41 8 2 0.5 377 1 0 0 73.8

Class 22 17 4 0 10 82 124 17 0.75 121 0.5 0 0 40

Class 23 16 0 0 8 49 98 14 0.6667 511 1 0 0 30.875

Class 24 5 0 0 7 15 2 1 0.5 60 0.6 0 0 10.6

Class 25 7 0 0 4 14 21 1 2 49 0.6429 0 0 6

Class 26 2 0 0 5 11 1 2 2 55 1 0 0 26.5

Class 27 6 0 0 6 24 0 4 0 127 1 0 0 20

Class 28 10 0 0 13 39 45 1 2 345 0.625 0 0 33.5

Class 29 2 3 0 1 20 1 2 2 8 0.75 0 0 2.5

Class 30 7 1 1 3 20 1 7 2 30 1 0 0 11.5

Class 31 15 0 0 15 63 0 11 0.7222 850 1 0 0 55.0667

Class 32 11 0 0 9 48 21 6 0.6435 1115 0.4333 0 0 96.1818

Class 33 4 0 0 10 25 4 2 0.3333 114 1 0 0 27

Class 34 29 2 1 6 60 4 29 0.3333 205 1 0 0 28

Class 35 2 0 0 6 23 1 2 2 160 1 0 0 79

Class 36 4 0 0 11 42 0 2 0.1667 516 1 0 0 127

Class 37 6 0 0 16 59 3 2 0.3 293 0.375 0 0 47.5

Class 38 8 0 0 13 49 16 2 0.4762 252 0.2708 0 0 30.125

Class 39 4 0 0 9 28 4 2 0.6667 204 0.625 0 0 48

Class 40 15 1 0 9 28 21 2 0.6435 448 0.4333 0 0 96.1818

Class 41 18 1 0 11 31 6 2 0.567 544 0.157 0 0 98.125

Class 42 12 1 2 9 25 0 2 0.35 322 0.625 0 0 32

Page 66: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 56

Class 43 6 1 2 2 19 19 2 0.8333 122 0.5 0 0 16.1429

Class 44 1 1 0 2 14 1 1 2 4 0.625 0 0 1

Class 45 1 1 2 2 14 1 1 2 6 0.625 0 0 1.5

Class 46 1 1 2 2 14 1 1 2 5 0.625 0 0 1.5

Class 47 1 1 2 2 14 1 1 2 6 0.625 0 0 1.5

Class 48 1 1 2 2 14 1 1 2 5 0.625 0 0 1.5

Class 49 1 1 0 2 14 1 1 2 4 0.625 0 0 1

Class 50 25 4 0 13 115 24 25 0.625 2112 0.3333 0 0 100

Class 51 11 0 0 6 62 55 11 1.0111 1174 0.7455 0 0 104.9091

Class 52 9 0 0 13 60 24 6 0.625 910 0.3333 0 0 100

Class 53 7 0 0 9 32 21 2 2 278 0.8571 0 0 38.7143

Class 54 4 0 0 5 15 6 3 1.3333 79 0.6875 0 0 18.25

Class 55 14 0 0 13 51 77 9 0.8173 393 0.3214 0 0 26.5

Class 56 7 0 0 5 17 15 4 2 155 0.5238 0 0 21.1429

Class 57 12 0 0 7 44 54 10 0.9273 754 0.5065 0 0 61

Class 58 8 0 0 7 32 8 3 0.4286 256 0.25 0 0 30.75

Class 59 12 0 0 7 44 54 10 0.9273 754 0.5065 0 0 61

Class 60 2 0 0 4 17 1 2 2 69 1 0 0 33.5

Class 61 1 3 0 0 2 0 1 2 5 1 0 0 3

Class 62 3 0 0 5 13 3 2 2 108 0.5558 0 0 35

Class 63 2 0 0 5 10 1 1 2 178 0.6667 0 0 88

Class 64 4 0 0 10 33 6 2 2 214 0.75 0 0 52.5

Class 65 4 1 0 3 5 4 4 0.8889 24 0.4375 0 0 4.25

Class 66 2 0 0 4 18 1 2 1 76 1 0 0 36

Page 67: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 57

A.2.3 StudentLancer Version 3

Class name WMC DIT NOC CBO RFC LCOM NPM LCOM3 LOC CAM IC CBM AMC

Class 1 3 2 0 3 16 0 3 0 175 1 0 0 42

Class 2 17 0 0 8 65 46 6 0.125 473 0.5147 0 0 26.7647

Class 3 2 0 0 6 17 1 2 2 54 1 0 0 26

Class 4 28 1 1 2 41 0 28 0.132 182 1 0 0 12.3451

Class 5 1 2 0 0 14 0 1 2 10 1 0 0 3

Class 6 8 0 0 7 32 8 3 0.4286 256 0.25 0 0 30.75

Class 7 2 0 0 5 10 1 1 2 154 0.6667 0 0 76

Class 8 10 0 0 9 39 45 8 2 179 0.4 0 0 16.9

Class 9 12 0 0 8 47 36 12 0.2727 233 0.4722 0 0 18.333

Class 10 2 1 0 1 2 1 2 2 2 0.75 0 0 0

Class 11 10 3 0 7 28 33 10 0.3333 39 0.55 0 0 86

Class 12 15 3 0 4 66 0 15 2 111 0.75 0 0 16

Class 13 7 0 0 5 20 21 2 1.1333 100 0.3429 0 0 12.5714

Class 14 5 0 0 9 32 10 3 2 135 0.4 0 0 26

Class 15 2 0 0 1 6 1 2 2 18 0.5 0 0 8

Class 16 4 0 0 10 28 2 2 0.6667 381 0.5 0 0 93.75

Class 17 2 0 0 5 9 1 1 2 109 0.6667 0 0 53.5

Class 18 2 0 0 5 9 1 1 2 141 0.6667 0 0 69.5

Class 19 2 0 0 5 9 1 1 2 101 0.6667 0 0 49.5

Class 20 11 0 0 20 70 7 6 0.675 863 0.5455 0 0 76.3636

Class 21 5 0 0 10 41 8 2 0.5 377 1 0 0 73.8

Class 22 17 4 0 10 82 124 17 0.75 121 0.5 0 0 40

Class 23 16 0 0 8 49 98 14 0.6667 511 1 0 0 30.875

Class 24 5 0 0 7 15 2 1 0.5 60 0.6 0 0 10.6

Class 25 7 0 0 4 14 21 1 2 49 0.6429 0 0 6

Class 26 2 0 0 5 11 1 2 2 55 1 0 0 26.5

Class 27 6 0 0 6 24 0 4 0 127 1 0 0 20

Class 28 10 0 0 13 39 45 1 2 345 0.625 0 0 33.5

Class 29 2 3 0 1 20 1 2 2 8 0.75 0 0 2.5

Class 30 7 1 1 3 20 1 7 2 30 1 0 0 11.5

Class 31 15 0 0 15 63 0 11 0.7222 850 1 0 0 55.0667

Class 32 11 0 0 9 48 21 6 0.6435 1115 0.4333 0 0 96.1818

Class 33 4 0 0 10 25 4 2 0.3333 114 1 0 0 27

Class 34 29 2 1 6 60 4 29 0.3333 205 1 0 0 28

Class 35 2 0 0 6 23 1 2 2 160 1 0 0 79

Class 36 4 0 0 11 42 0 2 0.1667 516 1 0 0 127

Class 37 6 0 0 16 59 3 2 0.3 293 0.375 0 0 47.5

Class 38 8 0 0 13 49 16 2 0.4762 252 0.2708 0 0 30.125

Class 39 4 0 0 9 28 4 2 0.6667 204 0.625 0 0 48

Class 40 15 1 0 9 28 21 2 0.6435 448 0.4333 0 0 96.1818

Class 41 18 1 0 11 31 6 2 0.567 544 0.157 0 0 98.125

Class 42 12 1 2 9 25 0 2 0.35 322 0.625 0 0 32

Page 68: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 58

Class 43 6 1 2 2 19 19 2 0.8333 122 0.5 0 0 16.1429

Class 44 1 1 0 2 14 1 1 2 4 0.625 0 0 1

Class 45 1 1 2 2 14 1 1 2 6 0.625 0 0 1.5

Class 46 1 1 2 2 14 1 1 2 5 0.625 0 0 1.5

Class 47 1 1 2 2 14 1 1 2 6 0.625 0 0 1.5

Class 48 1 1 2 2 14 1 1 2 5 0.625 0 0 1.5

Class 49 1 1 0 2 14 1 1 2 4 0.625 0 0 1

Class 50 25 4 0 13 115 24 25 0.625 2112 0.3333 0 0 100

Class 51 11 0 0 6 62 55 11 1.0111 1174 0.7455 0 0 104.9091

Class 52 9 0 0 13 60 24 6 0.625 910 0.3333 0 0 100

Class 53 7 0 0 9 32 21 2 2 278 0.8571 0 0 38.7143

Class 54 4 0 0 5 15 6 3 1.3333 79 0.6875 0 0 18.25

Class 55 14 0 0 13 51 77 9 0.8173 393 0.3214 0 0 26.5

Class 56 7 0 0 5 17 15 4 2 155 0.5238 0 0 21.1429

Class 57 12 0 0 7 44 54 10 0.9273 754 0.5065 0 0 61

Class 58 8 0 0 7 32 8 3 0.4286 256 0.25 0 0 30.75

Class 59 12 0 0 7 44 54 10 0.9273 754 0.5065 0 0 61

Class 60 2 0 0 4 17 1 2 2 69 1 0 0 33.5

Class 61 1 3 0 0 2 0 1 2 5 1 0 0 3

Class 62 3 0 0 5 13 3 2 2 108 0.5558 0 0 35

Class 63 2 0 0 5 10 1 1 2 178 0.6667 0 0 88

Class 64 4 0 0 10 33 6 2 2 214 0.75 0 0 52.5

Class 65 4 1 0 3 5 4 4 0.8889 24 0.4375 0 0 4.25

Class 66 2 0 0 4 18 1 2 1 76 1 0 0 36

Class 67 18 1 0 11 31 6 2 0.567 544 0.157 0 0 98.125

Class 68 25 4 0 13 115 24 25 0.625 2112 0.3333 0 0 100

Class 69 4 0 0 9 28 4 2 0.6667 204 0.625 0 0 48

Class 70 27 1 0 0 28 325 27 0.9615 134 0.3704 0 0 3.4815

Class 71 20 1 0 5 47 88 20 0.7368 177 0.3 1 1 7.7

Class 72 12 0 0 9 37 60 12 0.2727 178 0.4167 0 0 13.75

Class 73 23 2 0 7 56 167 4 0.8106 448 0.2826 1 2 18.2174

Class 74 3 0 0 4 21 3 2 1 107 0.5833 0 0 34.3333

Class 75 6 0 0 13 44 9 3 0.65 279 0.5 0 0 44.8333

Class 76 3 1 0 7 35 0 2 0.6667 177 0.6667 0 0 56

Class 77 14 0 0 6 60 91 7 1 876 0.5204 0 0 60.2857

Class 78 4 0 0 4 31 6 1 2 167 0.625 0 0 40.75

Class 79 19 1 0 3 42 133 14 0.881 240 0.1789 0 0 11.2682

Class 80 8 1 0 4 11 24 6 0.7857 39 0.2708 0 0 3.625

Class 81 12 0 0 15 51 0 12 0.1818 223 0.2407 0 0 17.5

Class 82 6 0 0 4 23 15 1 1 237 0.6667 0 0 37.8333

Class 83 3 0 0 3 13 3 3 1 104 0.6667 0 0 33

Class 84 9 0 0 4 38 36 6 1 465 0.6667 0 0 49.8889

Class 85 13 0 0 7 59 0 12 0.5625 474 0.2949 0 0 35.1538

Class 86 3 0 0 1 8 3 3 2 26 1 0 0 7.6667

Class 87 7 0 0 9 25 13 5 0.6667 119 0.4286 0 0 14.4286

Page 69: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 59

Class 88 9 0 0 12 24 6 9 0.7679 266 0.5556 0 0 16.6667

Class 89 8 0 0 7 26 2 8 0.619 354 0.625 0 0 17.875

Class 90 5 1 0 12 30 10 2 2 188 0.6 0 0 36.6

Class 91 4 4 0 1 13 6 4 2 47 0.5 0 0 11.5

Class 92 1 0 0 10 18 0 0.8095 42 1 0 0 3.875 0

Class 93 24 0 0 7 43 208 23 0.9275 310 0.2031 0 0 7.6667

Page 70: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 60

A.3 Experimental Results: Metrics Data of FlossAr

A.3.1 FlossAr Version 1.0

Class name WMC DIT NOC CBO RFC LCOM NPM LCOM3 LOC CAM IC CBM AMC

BaseInstallFrame 9 6 0 0 49 0 8 0.6429 355 0.4444 0 0 37.6667

InstallController 22 1 0 7 82 205 16 0.8571 689 0.1189 0 0 29.7273

InstallException 4 3 0 0 5 0 4 0.3333 96 0.625 1 1 22.5

Installpanel 4 5 0 0 28 0 3 0 136 0.75 1 1 32.75

InstallPerform 16 1 0 1 68 54 14 0.902 920 0.3906 0 0 55.4375

IntroPanel 2 5 0 0 24 0 1 0 98 0.75 0 0 47.5

LicensePanel$1 2 1 0 1 4 0 1 0 14 0.6667 0 0 5.5

Page 71: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 61

A.3.2 FlossAr Version 1.1

Class name WMC DIT NOC CBO RFC LCOM NPM LCOM3 LOC CAM IC CBM AMC

BaseInstallFrame 9 6 0 0 49 0 8 0.6429 355 0.4444 0 0 37.6667

InstallController 22 1 0 7 82 205 16 0.8571 689 0.1189 0 0 29.7273

InstallException 4 3 0 0 5 0 4 0.3333 96 0.625 1 1 22.5

Installpanel 4 5 0 0 28 0 3 0 136 0.75 1 1 32.75

InstallPerform 16 1 0 1 68 54 14 0.902 920 0.3906 0 0 55.4375

IntroPanel 2 5 0 0 24 0 1 0 98 0.75 0 0 47.5

LicensePanel$1 2 1 0 1 4 0 1 0 14 0.6667 0 0 5.5

LicensePanel 7 5 0 1 49 13 4 0.6111 270 0.3143 0 0 31.7143

OptionsPanlel$1 2 1 0 1 4 0 1 0 14 0.6667 0 0 5.5

OptionsPanel 6 5 0 1 52 7 3 0.4933 598 0.375 0 0 96.1667

Page 72: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 62

A.3.3 FlossAr Version 2.1

Class name

WM

C

DIT

NO

C

CB

O

RF

C

LC

OM

NP

M

LC

OM

3

LO

C

CA

M

IC

CB

M

AM

C

AbstractCategory 13 1 0 0 18 66 12 0.8958 65 0.3462 0 0 3.6923

AbstractCategoryDAO 10 0 0 5 24 45 5 2 219 0.3833 0 0 20.9

AbstractCategoryManager 12 0 0 5 48 56 6 0.5152 321 0.2262 0 0 25.5

CategoryDAOInterface 4 1 0 3 4 6 4 2 4 0.75 0 0 0

Category 12 0 0 2 35 40 12 0.5152 224 0.3542 0 0 17.4167

CategoryDAO 7 0 0 9 28 21 2 1.1667 127 0.3429 0 0 16.4286

CategoryManager 7 0 0 11 33 21 5 2 160 0.3095 0 0 21.8571

ResourceCategory 5 0 0 1 15 8 5 0.25 54 0.6 0 0 9.6

ResourceCategoryDAO 7 0 0 5 20 21 2 1.1333 100 0.3429 0 0 12.5714

ResourceCategoryManager 5 0 0 9 32 10 3 2 135 0.4 0 0 26

PublicContentChangedEvent 7 1 0 4 9 17 7 1.0556 37 0.3571 0 0 3.4286

PublicContentChangedObserver 1 1 0 2 1 0 1 2 1 1 0 0 0

Content 35 1 0 4 69 455 34 0.9412 394 0.3 0 0 9.6857

ContentRecordVO 27 1 0 0 28 325 27 0.9615 134 0.3704 0 0 3.4815

ContentWrapper 20 1 0 5 47 88 20 0.7368 177 0.3 1 1 7.7

SmallContentType 6 1 0 0 8 7 6 0.7 32 0.5 0 0 4

SymbolicLink 13 1 0 0 27 32 12 0.9083 277 0.6923 0 0 19.5385

HypertextAttributeUtil 2 1 0 1 10 1 2 2 84 0.5 0 0 41

AbstractAttribute 31 1 0 5 55 431 30 0.9111 347 0.2581 0 0 9.8065

AbstractComplexAttribute 7 0 0 4 8 21 7 2 16 0.3571 0 0 1.2857

AbstractListAttribute 8 0 0 6 22 26 7 0.5714 79 0.3 0 0 8.75

AbstractMLAttribute 2 0 0 1 3 1 2 2 7 1 0 0 2.5

AbstractResourceAttribute 10 0 0 12 50 39 9 0.7778 210 0.35 0 0 19

AttachAttribute 2 0 0 3 6 1 2 2 21 1 0 0 9.5

AttributeInterface 30 1 0 6 30 435 30 1.0345 40 0.2444 0 0 0

BooleanAttribute 10 0 0 6 22 33 10 0.5556 84 0.55 0 0 7.3

DateAttribute 16 0 0 6 32 116 15 0.7667 146 0.3125 0 0 8

HypertextAttribute 10 0 0 9 39 45 8 2 179 0.4 0 0 16.9

ImageAttribute 2 0 0 3 6 1 2 2 22 0.75 0 0 10

LinkAttribute 10 0 0 8 40 33 10 0.4444 260 0.4 0 0 24.9

ListAttribute 12 0 0 8 47 36 12 0.2727 233 0.4722 0 0 18.333

ListAttributeInterface 2 1 0 1 2 1 2 2 2 0.75 0 0 0

LongTextAttribute 1 0 0 1 2 0 1 2 4 1 0 0 3

MonoLinkAttribute 8 0 0 7 24 16 8 0.5714 186 0.5625 0 0 22.125

MonoListAttribute 12 0 0 9 37 60 12 0.2727 178 0.4167 0 0 13.75

MonoTextAttribute 10 0 0 7 22 33 10 0.3333 97 0.55 0 0 8.6

NumberAttribute 11 0 0 6 27 51 11 0.7 111 0.3939 0 0 8.9091

ResourceAttributeInterface 2 1 0 2 2 1 2 2 2 0.75 0 0 0

TableAttribute 34 0 0 11 60 351 23 0.7273 954 0.2206 0 0 26.8824

TextAttribute 13 0 0 8 38 66 12 0.3333 188 0.3269 0 0 13.3846

Page 73: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 63

AttributeTypeDOM 4 1 0 10 37 0 2 0.4444 173 0.5 0 0 41.5

ContentDOM 13 1 0 3 23 0 11 0.9259 190 0.5833 0 0 12.9231

ContentHandler 23 2 0 7 56 167 4 0.8106 448 0.2826 1 2 18.2174

ContentTypeDOM 10 1 0 12 60 21 3 0.7619 376 0.3143 0 0 35.9

AbstarctAttributeHandler 7 0 0 4 8 21 7 2 16 0.3571 0 0 1.2857

AbstarctMLAttributeHandler 3 0 0 1 4 1 3 0.5 14 0.6667 0 0 3.3333

AttributeHandlerInterface 5 1 0 2 5 10 5 2 5 0.4 0 0 0

BooleanAttributeHandler 5 0 0 3 11 10 3 2 43 0.6 0 0 7.6

DateAttributeHandler 5 0 0 5 12 10 3 2 44 0.6 0 0 7.8

HypertextAttributeHandler 3 0 0 1 7 3 3 2 23 0.5833 0 0 6.6667

LinkAttributeHandler 11 0 0 4 25 47 3 0.775 196 0.5909 0 0 16.4545

ListAttributeHandler 9 0 0 6 30 32 4 0.75 184 0.5556 0 0 19.1111

MonolinkAttributeHandler 11 0 0 4 25 47 3 0.775 196 0.5909 0 0 16.4545

MonoTextAttributeHandler 5 0 0 3 10 10 3 2 38 0.6 0 0 6.6

NumberAttributeHandler 5 0 0 3 11 10 3 2 45 0.6 0 0 8

ResourceAttributeHandler 5 0 0 8 17 10 3 2 69 0.55 0 0 12.8

TableAttributeHandler 16 0 0 6 48 94 4 0.65 396 0.5156 0 0 23.5

TextAttributeHandler 5 0 0 3 13 10 3 2 53 0.6 0 0 9.6

ContentAttributeIterator 5 1 0 3 17 2 4 0.625 78 0.4667 0 0 14.2

ContentModel 11 1 0 0 12 45 11 0.9 54 0.4848 0 0 3.4545

ContentModelDAO 3 0 0 4 21 3 2 1 107 0.5833 0 0 34.3333

ContentModelManager 5 0 0 5 29 0 4 0.5 114 0.36 0 0 21.4

ContentPageMapper 6 1 0 0 12 0 6 0 44 0.8333 0 0 6.1667

ContentPageMapperManager 8 0 0 11 35 26 6 0.2857 153 0.2708 0 0 18

AbstractContentDispenser 2 0 0 2 3 1 2 2 5 0.625 0 0 1.5

BaseContentDispenser 6 0 0 16 45 5 3 0.5 323 0.3542 0 0 51.8333

ContentAuthorizationInfo 5 1 0 1 9 0 3 0.5 107 0.45 0 0 20

LinkResolverManager 6 0 0 13 44 9 3 0.65 279 0.5 0 0 44.8333

AbstractContentRenderer 2 0 0 2 3 1 2 2 5 0.625 0 0 1.5

BaseContentRenderer 6 0 0 15 36 11 5 0.7 191 0.3125 0 0 30.5

AbstractMonoInstanceResouce 6 0 0 4 12 13 6 0.6 34 0.4444 0 0 4.5

AbstractMultiInstanceResouce 6 0 0 4 16 13 6 0.6 50 0.5556 0 0 7.1667

AbstractResouce 24 1 0 4 54 242 20 0.8315 298 0.2917 0 0 11.0833

AttachResouce 4 0 0 2 7 4 3 0.6667 58 1 0 0 13.25

ImageResouce 7 0 0 2 25 19 6 0.8333 121 0.5 0 0 16.1429

ImageResouceDimension 7 1 0 0 8 15 7 0.8333 34 0.7143 0 0 3.4286

ResouceInstance 16 1 0 2 32 100 13 0.8 283 0.375 0 0 16.3125

ResouceInterface 22 1 0 2 22 231 22 2 22 0.2424 0 0 0

ResouceRecordVO 11 1 0 0 12 45 11 0.9 54 0.4848 0 0 3.4545

ImageDimensionDOM 3 1 0 7 35 0 2 0.6667 177 0.6667 0 0 56

ResourceDOM 10 1 0 3 20 0 8 0.8889 142 0.5556 0 0 12.5

ResourceHandler 11 2 0 6 41 19 4 0.72 284 0.3295 1 2 24.3636

ResourceTypeDOM 4 1 0 8 34 0 2 0.4167 178 0.5 0 0 42.5

ResourceDataBean 7 1 0 0 7 21 7 2 7 1 0 0 0

ResourceInstanceFileHelper 11 1 0 11 78 55 3 2 622 0.281 0 0 55.5455

Page 74: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 64

ResourceDAO 14 0 0 6 60 91 7 1 876 0.5204 0 0 60.2857

ResourceManager 18 0 0 14 83 93 14 0.6471 688 0.2099 0 0 37.0556

HtmlHandler 2 1 0 0 4 1 2 2 12 0.75 0 0 5

IndexableInterface 1 1 0 0 1 0 1 2 1 1 0 0 0

IndexerDAO 12 1 0 10 43 0 9 0.4773 378 0.2159 0 0 30.1667

SearchEngineManager 20 0 0 21 80 116 17 0.8553 557 0.15 0 0 26.65

SearcherDAO 9 1 0 14 35 34 5 0.5 290 0.3333 0 0 31.1111

ConfigLoader 1 1 0 1 1 0 1 2 1 1 0 0 0

ControllerServlet 4 0 0 4 31 6 1 2 167 0.625 0 0 40.75

ResourceWardenServlet 6 0 0 12 62 15 1 2 366 0.3 0 0 60

StartupListener 10 1 0 4 36 45 4 1 321 0.3143 0 0 31

RequestContext 11 1 0 1 17 37 11 0.9286 83 0.2468 0 0 5.9091

SysAnagrafeContext 3 0 0 2 7 1 3 0.5 32 0.6667 0 0 9.3333

SysAnagrafeContextFactory 3 0 0 5 9 3 2 2 29 0.6667 0 0 8.6667

SystemConstants 0 1 0 0 0 0 0 2 89 0 0 0 0

SystemContext 19 1 0 3 42 133 14 0.881 240 0.1789 0 0 11.2682

SystemContextFactory 7 1 0 7 53 21 2 2 283 0.2714 0 0 39.4286

ApsException 2 3 0 0 4 1 2 2 11 0.8333 0 0 0.45

ApsSystemException 2 0 0 1 4 1 2 2 11 0.8333 0 0 4.5

AbstractDAO 3 1 0 2 8 3 1 2 31 0.5 0 0 9.3333

AbstractService 8 1 0 4 11 24 6 0.7857 39 0.2708 0 0 3.625

BaseConfigManager 8 0 0 10 44 16 4 0.6429 195 0.4688 0 0 23.125

ConfigInterface 2 1 0 0 2 1 2 2 2 1 0 0 0

ConfigItemDAO 3 0 0 3 22 3 3 1 177 0.6 0 0 57.3333

CacheManager 12 0 0 15 51 0 12 0.1818 223 0.2407 0 0 17.5

ControllerManager 6 0 0 5 23 0 5 1.075 134 0.3333 0 0 20

AbstractControlService 4 1 0 6 22 4 2 0.7778 88 0.5625 0 0 20.25

Authenticator 4 0 0 8 29 4 3 0.6667 191 0.375 0 0 46.25

ControlServiceInterface 2 1 0 2 2 1 2 2 2 0.625 0 0 0

ErrorManager 4 0 0 5 14 4 3 0.3333 96 0.5 0 0 22.5

Executor 3 1 0 3 9 1 3 0.5 49 0.5 0 0 15

RequestDebugger 2 0 0 2 12 1 2 2 40 0.6667 0 0 19

RequestValidator 4 1 0 8 24 4 3 0.6667 142 0.5 0 0 33.25

Group 7 1 0 0 9 13 7 0.9583 37 0.4762 0 0 3.7143

GroupDAO 6 0 0 4 23 15 1 1 237 0.6667 0 0 37.8333

GroupManager 9 0 0 5 41 0 8 0.3125 232 0.3333 0 0 24.5556

GroupsUtilizer 1 1 0 0 1 0 1 2 1 1 0 0 0

I18nDAO 3 0 0 4 13 3 2 1 82 0.5833 0 0 26

I18nManager 5 0 0 4 25 4 3 0.5 101 0.4 0 0 19

I18nManagerWrapper 2 1 0 4 5 0 2 0 32 0.8333 0 0 14

KeyGeneratorDAO 3 0 0 3 13 3 3 1 104 0.6667 0 0 33

KeyGeneratorManager 5 0 0 4 23 0 3 0.25 130 0.4667 0 0 24.6

Lang 7 1 0 0 8 11 7 0.7778 37 0.4762 0 0 3.8571

LangManager 7 0 0 8 44 11 5 0.6667 193 0.3571 0 0 26.1429

ApsEvent 2 1 0 1 2 1 2 2 2 0.75 0 0 0

Page 75: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 65

NotifyManger 5 0 0 5 34 4 3 0.25 164 0.36 0 0 31.6

ObserverServices 1 1 0 1 1 0 1 2 1 1 0 0 0

Page 24 1 0 4 32 226 23 0.9304 169 0.1713 0 0 5.625

PageDAO 14 0 0 11 78 91 8 1.0692 872 0.3968 0 0 60.5714

PageManager 15 0 0 8 64 57 10 0.5238 578 0.2667 0 0 37.3333

Showlet 7 1 0 2 8 15 7 0.8333 34 0.3571 0 0 3.4286

PageChangedEvent 5 1 0 4 7 8 5 0.75 23 0.4667 0 0 3.4

PageEventObserver 1 1 0 2 1 0 1 2 1 1 0 0 0

PageModel 11 1 0 1 12 37 11 0.86 61 0.2909 0 0 4.0909

PageModelDAO 3 0 0 6 24 3 2 1 112 0.5833 0 0 36

PageModelDOM 8 1 0 11 40 16 4 0.8878 288 0.425 0 0 33.25

PageModelManager 5 0 0 5 23 0 4 0.5 79 0.4 0 0 14.4

Permission 5 1 0 0 6 6 5 0.75 24 0.7 0 0 3.4

PermissionDAO 7 0 0 4 24 21 6 1 242 0.5238 0 0 33

Role 11 1 0 0 22 13 11 0.6667 98 0.5152 0 0 7.6364

RoleDAO 9 0 0 4 38 36 6 1 465 0.6667 0 0 49.8889

RoleManager 13 0 0 7 59 0 12 0.5625 474 0.2949 0 0 35.1538

ShowletType 12 1 0 0 14 52 12 0.8909 62 0.375 0 0 3.75

ShowletTypeDAO 3 0 0 5 24 3 2 1 112 0.5833 0 0 36

ShowletTypeDOM 5 1 0 6 27 0 4 0.6667 136 0.6 0 0 25.6

ShowletTypeManager 5 0 0 5 26 0 4 0.5 89 0.4 0 0 16.4

ShowletTypeParameter 5 1 0 0 6 6 5 0.75 24 0.7 0 0 3.4

AbstractURLManager 4 0 0 3 21 6 3 2 73 0.5 0 0 17.25

PageURL 11 1 0 4 25 35 11 0.82 113 0.2727 0 0 8.8182

URLManager 3 0 0 11 24 1 3 0.5 118 0.4667 0 0 37.333

User 14 1 0 1 25 57 14 0.8308 144 0.3571 0 0 8.9286

UserDAO 13 0 0 5 46 78 1 1 668 0.5495 0 0 49.6154

UserManager 10 0 0 7 39 0 10 0.5556 338 0.36 0 0 32.5

ActionURLTag 5 0 0 6 23 4 5 0.5 126 0.6 0 0 24

CheckPermissionTag 4 0 0 3 13 0 4 0.3333 70 0.625 0 0 16.25

ContentListTag 17 0 0 3 31 64 17 0.75 198 0.7059 0 0 10.2353

ContentNegotiationTag 9 0 0 2 23 18 8 0.75 118 0.6667 0 0 11.7778

ContentTag 10 0 0 3 21 9 9 0.4815 108 0.65 0 0 9.5

CSSHeadInfoOutputterTag 3 0 0 1 8 3 3 2 26 1 0 0 7.6667

CssURLTag 4 0 0 6 16 0 4 0.7778 87 0.625 0 0 20

ExecShowletTag$ResponseWrapper 3 0 0 1 7 0 3 0.5 27 0.5556 0 0 7.3333

ExecShowletTag 8 0 0 12 49 22 2 1 429 0.375 0 0 52.5

HeadInfoOutputterTag 7 0 0 2 18 0 7 0.5556 97 0.5714 0 0 12.4286

HeadInfoTag 9 0 0 3 18 4 9 0.625 106 0.6667 0 0 10.4444

I18nTag 11 0 0 7 28 17 10 0.65 191 0.3636 0 0 16

ImgURLTag 2 0 0 1 4 1 2 2 10 1 0 0 4

InfoTag 10 0 0 6 27 13 10 0.6944 150 0.65 0 0 13.6

NavigatorCodeTag 5 0 0 3 13 4 5 0.5 49 0.6 0 0 8.6

NavigatorDescrTag 7 0 0 9 25 13 5 0.6667 109 0.4286 0 0 14.4286

NavigatorLevelTag 5 0 0 2 13 4 5 0.5 49 0.6 0 0 8.6

Page 76: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 66

NavigatorTag 9 0 0 12 24 6 9 0.7679 166 0.5556 0 0 16.6667

NavigatorTitleTag 3 0 0 4 10 3 2 2 49 0.6667 0 0 15.3333

NavigatorURLTag 5 0 0 4 15 4 5 0.5 55 0.6 0 0 9.8

PageBuilderTag 2 0 0 4 19 1 2 2 86 1 0 0 42

PagerTag 14 0 0 3 28 61 14 0.6923 141 0.3393 0 0 8.7143

PageTitleTag 8 0 0 7 26 2 8 0.619 154 0.625 0 0 17.875

ResourceURLTag 6 0 0 3 20 3 6 0.6 81 0.6667 0 0 12.1667

SearcherTag 4 0 0 3 17 0 4 0.3333 70 0.625 0 0 16.25

ShowletTag 4 0 0 3 21 0 4 0.3333 103 0.625 0 0 24.5

URLParTag 6 0 0 1 14 3 6 0.6 64 0.6667 0 0 9.3333

URLTag 15 0 0 6 33 43 15 0.7857 200 0.4667 0 0 11.9333

ContentListTagHelper 6 1 0 14 41 15 2 2 361 0.5333 0 0 59.1667

ContentTagHelper 5 1 0 12 30 10 2 2 188 0.6 0 0 36.6

PagerTagHelper 7 1 0 6 30 21 2 2 251 0.4286 0 0 34.8571

SearcherTagHelper 2 1 0 7 15 1 2 2 43 0.6667 0 0 20.5

HeadInfoContainer 3 1 0 0 9 0 3 0 38 0.5556 0 0 11.3333

NavigatorParser 8 1 0 6 39 28 2 2 595 0.4219 0 0 73.375

NavigatorTarget 5 1 0 1 6 0 5 0.5 30 0.6 0 0 4.6

PagerVO 21 1 0 0 26 192 13 0.8889 169 0.5079 0 0 6.619

ApsProperties 4 4 0 1 13 6 4 2 50 0.5 0 0 11.5

ApsPropertiesDOM 7 1 0 6 33 3 4 0.7333 183 0.4762 0 0 24.4286

DateConverter 3 1 0 1 13 3 3 2 51 0.4167 0 0 16

ForJLogger 19 1 0 1 28 0 19 0 164 0.5 0 0 7.5789

MapSupportRule 4 0 0 2 9 0 4 0.5 35 0.6667 0 0 7.25

BaseAdminAction 5 0 0 11 31 10 2 2 237 0.8 0 0 46.4

CurrentUserAction 3 0 0 10 26 3 2 2 136 0.6667 0 0 44.3333

CurrentUserActionForm 11 0 0 5 23 31 11 0.725 121 0.4318 0 0 9.6364

CategoryAction 9 0 0 16 67 36 2 2 542 0.8148 0 0 59.2222

CategoryActionForm 13 0 0 13 38 48 11 0.8611 205 0.2596 0 0 14.3077

CategoryActionHelper 4 0 0 7 22 6 3 2 101 0.4167 0 0 24.25

ContentAction 10 0 0 15 62 45 2 1.1111 646 0.9 0 0 63.5

ContentActionForm 3 0 0 10 28 3 2 2 131 0.6 0 0 42.6667

ContentFindAction 9 0 0 13 57 36 2 2 657 0.5802 0 0 72

HypertextAttributeAction 4 0 0 10 25 6 2 2 142 0.625 0 0 34.5

LinkAttributeAction 12 0 0 17 68 66 2 2 792 0.6429 0 0 65

ListAttributeAction 6 0 0 12 45 15 2 2 421 0.5185 0 0 69.1667

ResourceAttributeAction 10 0 0 17 48 45 2 2 557 0.5 0 0 54.7

TableAttributeAction 10 0 0 11 40 45 2 2 446 0.9 0 0 43.6

AttributeActionHelper 5 1 0 6 19 10 4 2 85 0.3677 0 0 16

TableAttributeHelper 3 1 0 8 14 3 3 2 51 0.5 0 0 16

AbstractAttributeManager 19 1 0 7 37 171 4 1 222 0.5564 0 0 10.5263

AbstractMonoLangAttributeManager 6 0 0 5 24 15 1 2 136 0.5556 0 0 21.6667

AbstractMultiLangAttributeManager 6 0 0 7 30 15 1 2 214 0.5476 0 0 34.6667

AttributeManagerInterface 3 1 0 3 3 3 3 2 3 0.9167 0 0 0

AttributeTracer 22 1 0 1 23 133 22 0.8571 177 0.3636 0 0 6.5909

Page 77: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 67

BooleanAttributeManager 3 0 0 3 7 3 1 2 18 0.6667 0 0 5

DateAttributeManager 5 0 0 7 30 10 1 2 166 0.4 0 0 32.2

HypertextAttributeManager 10 0 0 13 39 45 1 2 345 0.625 0 0 33.5

LinkAttributeManager 8 0 0 9 24 28 1 2 300 0.7292 0 0 36.5

ListAttributeManager 5 0 0 10 19 10 1 2 157 0.6857 0 0 30.4

MonoLinkAttributeManager 1 0 0 1 2 0 1 2 4 1 0 0 3

MonoListAttributeManager 5 0 0 7 15 10 1 2 103 0.6857 0 0 19.6

MonoTextAttributeManager 5 0 0 5 9 10 1 2 41 0.5333 0 0 7.2

NumberAttributeManager 5 0 0 7 25 10 1 2 114 0.4 0 0 21.8

ResourceAttributeManager 5 0 0 8 12 10 1 2 83 0.6 0 0 15.6

TableAttributeManager 5 0 0 8 24 10 2 2 184 0.6 0 0 35.8

TextAttributeManager 5 0 0 6 11 10 1 2 36 0.5143 0 0 6.2

SymbolicLinkErrorMessenger 3 1 0 8 13 3 2 1.5 94 0.3333 0 0 29

ContentActionHelper 10 1 0 17 71 45 10 2 500 0.55 0 0 49

PagesAction 14 0 0 19 10

1 91 2 2

115

6 0.7245 0 0 81.5714

PagesActionForm 27 0 0 13 53 271 25 0.9313 303 0.1975 0 0 9.7037

ShowletAction 5 0 0 13 42 10 2 2 469 0.8 0 0 92.8

ShowletFromPortalAction 6 0 0 14 40 15 3 2 399 0.75 0 0 65.5

ShowletFromPortalActionHelper 2 1 0 10 17 1 2 2 85 0.5 0 0 41.5

ListViewerShowletFromPortalAction 3 0 0 13 19 3 3 2 77 0.5556 0 0 24.6667

SimpleParamShowletFromPortalAction 2 0 0 4 4 1 2 2 9 0.6667 0 0 3.5

ViewerShowletFromPortalAction 2 0 0 4 4 1 2 2 9 0.6667 0 0 3.5

PageActionHelper 8 0 0 12 50 28 4 1.1429 328 0.35 0 0 39.875

SpecialShowletActionHelper 9 1 0 14 55 36 9 2 409 0.2917 0 0 44.4444

ListViewerShowletAction 8 0 0 22 66 28 2 2 703 0.6429 0 0 86.875

SimpleParamShowletAction 4 0 0 13 43 6 2 2 277 0.75 0 0 68.25

ViewerShowletAction 6 0 0 15 50 15 2 2 385 0.6667 0 0 63.1667

ShowletParamVO 3 0 0 1 4 1 3 0.5 14 0.6667 0 0 3.3333

ResourceCategoryActionHelper 3 0 0 6 19 3 2 2 136 0.5238 0 0 44.3333

ResourceCategoryAction 9 0 0 14 66 36 2 2 519 0.6389 0 0 56.6667

ResourceCategoryActionForm 14 0 0 10 29 61 13 0.8901 145 0.2653 0 0 8.8571

ResourceActionHelper 6 1 0 10 39 15 6 1.2 207 0.3889 0 0 33.3333

ResourceAction 14 0 0 16 78 91 2 2 796 0.5071 0 0 55.8571

ResourceActionForm 27 0 0 13 63 297 22 0.8962 357 0.1852 0 0 11.8519

AbstractTreeHelper 6 1 0 10 26 15 4 2 165 0.4667 0 0 26.5

AbstractBaseAction 6 0 0 10 21 15 1 2 100 0.5667 0 0 15.6667

ApsActionMapping 3 0 0 1 4 1 3 0.5 14 0.6667 0 0 3.3333

ConfigFactory 2 0 0 2 6 1 2 2 15 0.75 0 0 6.5

DispatchForward 5 0 0 12 41 10 2 2 353 0.8 0 0 69.6

Utf8TilesRequestProcessor 2 0 0 1 5 1 1 2 15 0.6667 0 0 6.5

ContentDescrTag 6 0 0 4 23 9 6 0.2 84 0.5833 0 0 12.8333

PageTitleTag 8 0 0 6 25 16 8 0.4286 115 0.625 0 0 13.125

GroupsAction 8 0 0 12 55 28 2 2 596 0.875 0 0 73.5

GroupsActionForm 10 0 0 8 20 21 9 0.8667 100 0.36 0 0 8.5

RolesAction 10 0 0 13 71 45 2 2 626 0.7429 0 0 61.6

Page 78: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 68

RolesActionForm 14 0 0 7 25 49 13 0.8791 130 0.2857 0 0 7.7857

UsersAction 13 0 0 18 89 78 2 2 826 0.7143 0 0 62.5385

UsersActionForm 24 0 0 7 43 208 23 0.9275 220 0.2031 0 0 7.6667

PermissionVO 8 1 0 0 10 18 8 0.8095 42 0.375 0 0 3.875

DbExtractor 15 1 0 11 43 0 12 0.3571 516 0.4333 0 0 33.2

DbExtractorDAO 12 0 0 6 40 62 10 0.9091 567 0.5278 0 0 45.75

ExtertractorInterfaceDAO 8 1 0 3 8 28 8 2 8 0.6458 0 0 0

SubTypeProductDAO 14 0 0 7 47 89 13 0.9808 580 0.5714 0 0 39.8571

SubTypeProductExtractor 2 0 0 3 5 1 1 2 11 1 0 0 4.5

EntityMonoListAttribute 11 0 0 7 30 33 11 0.7 142 0.2576 0 0 11.7273

MapExtractor 7 1 0 6 23 11 7 0.5556 131 0.5714 0 0 17.2857

MonotextSelectAttributeExtractor 10 0 0 7 23 23 10 0.5 117 0.3 0 0 10.5

MonotextSelectMultiAttribute 14 0 0 11 47 47 14 0.5769 255 0.3 0 0 17.0714

SelectAttributeBean 11 1 0 0 12 25 11 0.725 73 0.7727 0 0 5.2727

SelectAttributeInterface 5 1 0 1 5 10 5 2 5 0.4667 0 0 0

SelectBeansAttributeInterface 3 1 0 0 3 3 3 2 3 0.8333 0 0 0

SelectBeansExtractorInterface 4 1 0 2 4 6 4 2 4 0.6667 0 0 0

SelectMultiAttributeInterface 3 1 0 1 3 3 3 2 3 0.6667 0 0 0

BaseEntityDispenser 3 0 0 13 22 6 3 0.5833 153 0.4444 0 0 48

AjaxServlet 4 0 0 3 28 6 1 2 127 0.6667 0 0 30.75

StartupAnagrafeListener 4 0 0 4 12 6 1 2 43 0.5833 0 0 9.75

AjaxServletHelper 4 1 0 5 18 6 3 2 114 0.5625 0 0 27.5

AteneoDAO 9 0 0 11 36 36 9 1 761 0.6889 0 0 82.6667

AteneoManager 2 0 0 3 6 1 1 2 14 1 0 0 6

BaseBuilderManager 20 0 0 19 85 106 11 0.7895 729 0.2833 0 0 35.15

BibTexManager 23 0 0 26 10

4 221 7 0.7727

204

2 0.3106 0 0 87.6957

Entita 20 0 0 7 66 178 20 1.0357 593 0.29 0 0 27.25

EntitaAbstractManager 21 0 0 16 61 200 17 0.75 516 0.2517 0 0 23.4286

EntitaDaoInterface 8 1 0 3 8 28 8 2 8 0.75 0 0 0

EntitaManager 20 0 0 28 71 90 19 0.5789 500 0.3071 0 0 23.85

EntitaManagerHelper 5 1 0 5 24 4 1 0.8333 338 0.65 0 0 66

IndexOptimizerThread 3 1 0 2 28 1 3 0.625 175 0.7778 0 0 56

EntityChangedEvent 9 1 0 4 11 30 9 1.05 50 0.3611 0 0 3.4444

EntityChangedObserver 1 1 0 2 1 0 1 2 1 1 0 0 0

EntityDOM 8 1 0 3 17 4 6 0.8 104 0.5238 0 0 11.375

EntityHandler 9 2 0 5 32 16 4 0.65 220 0.3333 1 2 22.8889

EntityTypeDOM 4 0 0 8 34 6 1 2 156 0.375 0 0 38

EntityManagerWrapper 10 1 0 11 33 17 9 0.8444 227 0.6667 0 0 21.2

AnagrafeCacheManager 2 0 0 12 23 1 2 2 92 0.75 0 0 45

CentroEsternoDAO 9 0 0 10 34 36 9 1 761 0.6889 0 0 82.6667

CentroEsternoManager 2 0 0 3 6 1 1 2 14 1 0 0 6

CollectionDAO 7 0 0 4 26 21 1 1 466 0.8571 0 0 63.5714

CollectionManager 13 0 0 13 51 0 4 0.1667 106

7 0.3187 0 0 80.9231

CommonManager 9 0 0 12 48 14 6 0.5 243 0.4 0 0 25.7778

Page 79: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 69

DipartimentoDAO 9 0 0 10 34 36 9 1 713 0.6889 0 0 77.3333

DipartimentoManager 20 0 0 3 7 1 1 2 17 1 0 0 7.5

EditoreDAO 10 0 0 9 37 45 10 1 657 0.68 0 0 64.1

EditoreManager 4 0 0 9 18 6 3 2 75 0.625 0 0 17.75

FacoltaDAO 9 0 0 10 34 36 9 1 718 0.6889 0 0 77.8889

FacoltaManager 2 0 0 3 7 1 1 2 17 1 0 0 7.5

GruppoDAO 9 0 0 10 34 36 9 1 702 0.6889 0 0 76.1111

GruppoManager 2 0 0 3 7 1 1 2 17 1 0 0 7.5

InvitoGruppi 8 1 0 0 9 10 8 0.7143 47 0.75 0 0 4.5

InvitoGruppiDao 6 0 0 5 26 15 6 1.08 328 0.7 0 0 52.8333

InvitoGruppiManager 7 0 0 6 18 0 7 0.1667 208 0.4 0 0 28.4286

NotificatoreInvitiManager 9 0 0 13 39 0 4 0.4 331 0.3148 0 0 35.2222

InvitoProgettiDao 6 0 0 5 26 15 6 1.08 328 0.7 0 0 52.8333

InvitoProgettiManager 7 0 0 6 18 0 7 0.1667 208 0.4 0 0 28.4286

InvitoProgetto 8 1 0 0 9 10 8 0.7143 47 0.75 0 0 4.5

NotificatoreInvitiManager 6 0 0 12 30 0 3 0.35 222 0.3667 0 0 35.3333

LaboratorioDAO 9 0 0 10 34 36 9 1 694 0.6889 0 0 75.2222

LaboratorioManager 2 0 0 3 7 1 1 2 17 1 0 0 7.5

MailDao 12 0 0 3 22 42 12 0.9394 174 0.4167 0 0 12.75

MailManager 18 0 0 19 95 103 14 0.7005 662 0.1975 0 0 35.1667

SMTPAutenticator 2 0 0 0 4 0 1 0 21 0.75 0 0 8.5

IProdottoTempManager 4 1 0 2 4 6 4 2 4 0.875 0 0 0

ProdottoManager 22 0 0 26 101

75 18 0.619 969 0.3142 0 0 43

ProductSubTypesManager 7 0 0 6 29 21 7 2 227 0.5 0 0 31.4286

AltriProdottiDAO 9 0 0 9 29 36 9 1 449 0.6889 0 0 48

AltroProdottoDAO 9 0 0 9 32 36 9 1 689 0.6889 0 0 74.6667

ArticoloCongressoDAO 9 0 0 10 34 36 9 1 829 0.6889 0 0 90.2222

ArticoloDAO 10 0 0 10 35 45 10 1 874 0.7 0 0 85.5

BrevettoDAO 9 0 0 9 32 36 9 1 777 0.6888

9 0 0 84.4444

CapitoloDAO 11 0 0 10 36 55 11 1 960 0.6909 0 0 85.4545

LibroDAO 10 0 0 10 36 45 10 1 873 0.7 0 0 85.4

ManufattoDAO 9 0 0 9 32 36 9 1 641 0.6889 0 0 69.3333

PerformanceDAO 9 0 0 9 32 36 9 1 665 0.6889 0 0 72

ProgettoDesignDAO 9 0 0 10 34 36 9 1 694 0.6889 0 0 75.2222

TempDAO 10 0 0 9 33 45 10 1 546 0.7 0 0 52.7

PunteggiDAO 7 0 0 6 38 21 7 1.1667 493 0.619 0 0 68.4286

PunteggiManager 10 0 0 6 37 45 10 1.1111 387 0.42 0 0 37.6

ProgettoDAO 9 0 0 10 33 36 9 1 606 0.6889 0 0 65.4444

ProgettoManager 2 0 0 3 7 1 1 2 17 1 0 0 7.5

RicercatoreDAO 16 0 0 15 54 120 16 1 115

4 0.7125 0 0 70

RicercatoreManager 6 0 0 7 20 0 5 0.2 164 0.6667 0 0 26.1666

7

RivistaDAO 11 0 0 9 34 55 11 1 726 0.6909 0 0 64.3636

RivistaManager 5 0 0 9 19 4 4 0.5 107 0.4667 0 0 20.2

EntitySearchEngineManager 44 0 0 26 12

7 726 37 0.8339

136

7 0.1789 0 0 29.9091

Page 80: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 70

EntitySearcherDAO 18 1 0 14 50 151 8 0.5882 111

8 0.375 0 0 61.0556

SearchHelper 12 1 0 0 38 66 4 2 675 0.5417 0 0 55.25

StrumentoDAO 9 0 0 10 34 36 9 1 569 0.6889 0 0 61.3333

StrumentoManager 3 0 0 11 19 3 2 2 63 0.6667 0 0 20

EntityPair 7 1 0 0 9 0 7 0.5 53 0.5238 0 0 6.2857

UserAnag 18 0 0 4 48 89 18 0.9647 280 0.25 0 0 13.7222

UtenteDAO 23 0 0 10 70 253 5 1.0198 137

9 0.4946 0 0 57.9565

UtenteManager 38 0 0 23 15

3 271 27 0.7243

184

7 0.1761 0 0 47.4737

AuditDAO 3 0 0 4 14 3 3 1.5 128 0.7333 0 0 40.6667

AuditManager 16 0 0 19 76 64 8 0.7867 792 0.2292 0 0 48.1875

ChangeBean 8 1 0 0 9 22 7 0.9286 45 0.4762 0 0 3.875

ForceUpdate 3 1 0 2 6 3 3 2 22 0.8333 0 0 6.3333

ForceUpdateDAO 4 1 0 1 26 6 3 1 181 0.625 0 0 43.75

UserChangedEvent 9 1 0 4 11 30 9 1.0313 48 0.2889 0 0 3.4444

UserChangedObserver 1 1 0 2 1 0 1 2 1 1 0 0 0

AddEntityEnableTag 3 0 0 6 25 1 3 0.5 119 0.6667 0 0 38.3333

AreeCunTag 9 0 0 5 27 8 9 0.5833 151 0.6667 0 0 15.4444

CheckDelegationTag 4 0 0 8 23 0 4 0.3333 99 0.625 0 0 23.5

CheckEntityTag 4 0 0 5 21 0 4 0.3333 105 0.625 0 0 25

CheckPropertyTag 4 0 0 5 27 0 4 0.3333 112 0.625 0 0 26.75

CheckRoleTag 4 0 0 3 14 0 4 0.3333 65 0.625 0 0 15

EntityListTag 10 0 0 7 38 21 8 0.7778 222 0.375 0 0 20.8

EntitySearcherTag 4 0 0 12 32 0 4 0.3333 171 0.625 0 0 41.5

EntitySimpleSearcherTag 4 0 0 3 20 0 4 0.3333 93 0.625 0 0 22

EntityTag 10 0 0 3 21 9 9 0.4815 108 0.65 0 0 9.5

EntityTagForMultiModel 10 0 0 2 21 9 9 0.5833 136 0.65 0 0 12.2

EntityUserEmailTag 5 0 0 7 21 0 5 0 96 0.6 0 0 18

FilterStringForJavascriptTag 4 0 0 0 10 0 4 0.3333 49 0.625 0 0 11

GetDataTag 7 0 0 3 18 3 7 0.5833 82 0.6429 0 0 10.4286

GetEntityNameByUserTag 4 0 0 6 20 0 4 0.3333 102 0.625 0 0 24.25

GetEntityNameTag 5 0 0 3 17 0 5 0.25 89 0.6 0 0 16.6

GetEntityTag 5 0 0 5 16 0 5 0.25 70 0.6 0 0 12.8

GetEntityUserNameTag 5 0 0 5 19 0 5 0 86 0.6 0 0 16

GetTempProductTag 5 0 0 4 15 0 5 0.25 67 0.6 0 0 12.2

GetUserTag 4 0 0 4 14 0 4 0.3333 69 0.625 0 0 16

I18nTag 9 0 0 4 21 14 8 0.625 132 0.4444 0 0 13.3333

InputMonotextTag 14 0 0 8 37 39 12 0.8352 283 0.3571 0 0 18.7857

IsNotResearcherTag 4 0 0 6 17 0 4 0.3333 77 0.625 0 0 18

LabelI18nTag 9 0 0 4 21 14 8 0.625 128 0.4444 0 0 12.8889

MailTag 3 0 0 12 25 1 2 0.9167 197 0.5556 0 0 62.6667

RefinePagerTag 8 0 0 4 32 14 8 0.5714 144 0.4167 0 0 16.75

SelectsTag 10 0 0 5 53 15 7 0.7889 438 0.4667 0 0 41.8

WelcomeTag 2 0 0 12 26 1 2 2 157 1 0 0 77.5

EntitySearcherTagHelper 14 1 0 10 53 91 14 1 476 0.4286 0 0 32.9286

Page 81: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 71

EntityTagHelper 5 1 0 12 30 10 2 2 188 0.6 0 0 36.6

RefinePagerTagHelper 5 0 0 7 24 10 3 2 232 0.6286 0 0 45.4

SearchConstants 2 1 0 0 3 1 1 1.6 15 1 0 0 4

AbstractRicerca 5 1 0 7 10 10 2 2 65 0.44 0 0 12

RicercaGruppi 5 0 0 13 33 10 3 2 441 0.4286 0 0 87.2

RicercaProdotti 3 0 0 7 22 3 2 2 150 0.6667 0 0 49

RicercaProdottiDelGruppo 3 0 0 14 27 3 2 2 119 0.6667 0 0 38.6667

RicercaProdottiDelRicercatore 3 0 0 9 17 3 2 2 75 0.6667 0 0 24

RicercaProgetti 3 0 0 11 22 3 2 2 174 0.6667 0 0 57

RicercaProgettiDelRicercatore 3 0 0 6 17 3 2 2 86 0.6667 0 0 26.6667

RicercaRicercatori 3 0 0 11 22 3 2 2 185 0.6667 0 0 60.6667

RicercaStrumentazione 3 0 0 12 28 3 2 2 180 0.6667 0 0 59

RicercaTematiche 4 0 0 14 36 6 2 2 254 0.4167 0 0 62.5

RefinePagerVO 7 0 0 1 11 3 7 0.6667 57 0.5714 0 0 6.7143

SubTypeBean 15 1 0 0 16 91 15 0.9286 74 0.4889 0 0 3.4667

StringSupport 9 1 0 3 31 36 9 0 230 0.6667 0 0 24.5556

OrderEntity 3 1 0 1 13 0 3 0 52 0.6667 0 0 16

OrderEntityBean 11 1 0 0 13 35 11 0.7 114 0.4091 0 0 9

CurrentUsersAnagAction 5 0 0 15 46 4 2 0.5 331 0.5111 0 0 64.8

CurrentUsersAnagActionForm 7 0 0 9 23 9 7 0.5833 100 0.4643 0 0 13

PunteggiAction 5 0 0 14 47 10 2 1.25 368 0.6571 0 0 72.4

SottotipiAction 8 0 0 12 47 28 2 2 315 0.5625 0 0 38.375

UserEmailActionForm 6 0 0 3 10 7 6 0.7 44 0.5 0 0 6

LinkEntityAttributeAction 8 0 0 14 49 28 1 2 443 0.6607 0 0 54.375

ListEntityAttributeAction 5 0 0 13 32 10 1 2 417 0.525 0 0 82.4

SelectEntityAttributeAction 15 0 0 24 91 105 2 1.0536 151

5 0.8286 0 0 99.7333

EdtrivActionForm 10 0 0 4 17 37 10 0.8889 68 0.4 0 0 5.4

EntitaAction 33 0 0 27 15

2 522 2 0.9821

294

1 0.4904 0 0 87.9091

EntitaActionForm 10

0 0 0 16

14

2

485

8 94 0.989 726 0.1811 0 0 5.8

EntitaSearchAction 13 0 0 20 84 78 2 1.0556 1771

0.5128 0 0 134.769

2

MultiAction 5 0 0 19 45 10 2 2 381 0.8 0 0 75.2

ProjectAction 3 0 0 11 30 3 2 2 156 619 0 0 51

EntitaActionHelper 12 1 0 20 76 66 12 2 615 0.3194 0 0 50.25

EntitaActionHelperMappatore 5 1 0 0 19 8 3 0.5 218 0.7 0 0 42.4

InvitoGruppiAction 13 0 0 19 70 78 2 2 492 0.3846 0 0 36.8462

InvitoProgettiAction 14 0 0 19 74 91 2 2 551 0.3766 0 0 38.3571

AbstractReportGeneration 6 1 0 16 34 13 3 0.8 131 0.4444 0 0 20

ContentType 7 2 0 4 13 13 5 0.8704 139 0.3333 1 1 17.5714

DepartmentReportGenerator 3 0 0 6 13 3 1 1.5 106 0.5 0 0 34

ProductOdtReportGenerator 4 0 0 15 28 2 1 1.3333 118 0.4583 0 0 28.25

ProductReportGenerator 4 0 0 14 28 2 2 1.3333 118 0.4583 0 0 28.25

QueryReportGenerator 8 0 0 22 52 0 3 1.0357 362 0.375 0 0 43.75

ReportData 31 1 0 0 32 435 31 0.9667 154 0.7419 0 0 3.4839

ResearcherReportGenerator 4 0 0 12 32 4 1 1.3333 288 0.5625 0 0 70.5

Page 82: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 72

AllProductOfAResearcherReportAction 3 0 0 7 28 3 2 2 141 0.6667 0 0 46

Controller\QueryCA 19 1 0 0 20 153 19 0.9444 94 0.7368 0 0 3.4737

ReportAction 7 0 0 16 49 21 2 2 329 0.5893 0 0 46

DepartmentResearchAreaReportDataFiller 6 1 0 12 25 15 3 2 132 0.4167 0 0 21

DepartmentResearhProjectDataFiller 7 1 0 9 26 21 3 2 143 0.3929 0 0 19.4286

DepartmentStaffReportDataFiller 6 1 0 11 32 15 3 1.2 184 0.3542 0 0 28.8333

QueryReportDataFiller 4 1 0 11 36 6 3 2 226 0.5 0 0 55.5

ReportDataFiller 2 1 0 5 2 1 2 2 2 0.8333 0 0 0

ResearchLinesReportDataFiller 3 1 0 9 22 3 3 2 71 0.6111 0 0 22.6667

ResearchProductsReportDataFiller 4 1 0 10 23 6 3 2 91 0.4688 0 0 21.75

ResearchProjectsReportDataFiller 5 1 0 9 25 10 3 2 108 0.525 0 0 20.6

RtfDataHelper 6 1 0 4 14 15 6 2 402 0.8889 0 0 66

RtfResearcherProductDataFiller 5 1 0 10 27 10 3 2 173 0.525 0 0 33.6

AbstractEntityDataSource 10 1 0 15 72 15 7 0.7222 540 0.3429 0 0 52.6

DepartmentDataSource 1 0 0 7 7 0 1 2 24 1 0 0 23

EntityDataSourceFactory 3 1 0 8 10 3 3 2 45 0.4167 0 0 14

QueryDataSource 1 0 0 7 6 0 1 2 19 1 0 0 18

ResearcherDataSource 1 0 0 8 8 0 1 2 29 1 0 0 28

RtfResearcherProductDataSource 1 0 0 6 6 0 1 2 19 1 0 0 18

AllProductBibtexAction 7 0 0 15 59 21 2 2 385 0.5357 0 0 54

BibtexAction 12 0 0 22 77 66 2 2 766 0.4697 0 0 62.8333

BibtexFileActionForm 5 0 0 4 7 4 5 0.5 27 0.5 0 0 4.2

BibTextNamesResolver 7 1 0 0 29 9 5 0.6111 427 0.5714 0 0 59.5714

ResourceEntityAction 11 0 0 21 58 55 6 1 430 0.3636 0 0 38

ResourceEntityActionForm 9 0 0 9 27 28 8 0.75 95 0.4444 0 0 9.3333

ResourceEntityActionHelper 6 1 0 10 39 15 6 1.2 207 0.3889 0 0 33.3333

SmtpAction 4 0 0 10 39 6 2 2 197 0.75 0 0 48.25

SmtpActionForm 10 0 0 4 17 25 10 0.8056 99 0.4 0 0 8.5

UserAnagAction 15 0 0 21 103

103 21 2 2 0.3833 0 0 77.6

UTF8Filter 4 1 0 0 7 6 4 2 17 0.4 0 0 3.25

AutocompleterAction 7 0 0 9 32 21 2 2 278 0.8571 0 0 38.7143

AutocompleterDAO 4 0 0 5 15 6 3 1.3333 79 0.6875 0 0 18.25

SuggestionManager 14 0 0 13 51 77 9 0.8173 393 0.3214 0 0 26.5

AjaxDelegationAction 3 0 0 14 38 3 2 2 187 0.6667 0 0 61.3333

CinecaImportDAO 11 0 0 6 62 55 11 1.0111 117

4 0.7455 0 0

104.909

1

IProdottoCinecaManager 1 1 0 2 1 0 1 2 1 1 0 0 0

ProdottoCineca 70 1 0 2 72 2347

70 0.9855 349 0.375 0 0 3.5

ProdottoCinecaManager 9 0 0 13 60 24 6 0.625 910 0.3333 0 0 100

ImportCinecaAction 4 0 0 15 37 6 2 2 244 0.75 0 0 60

WorkbookCreator 8 1 0 21 36 10 2 0.5952 375 0.3036 0 0 45.125

LinesReportAction 3 0 0 11 31 3 2 2 139 0.6667 0 0 45.3333

ShellAction 4 0 0 6 42 6 2 2 293 0.75 0 0 72.25

GroupSortAction 3 0 0 8 23 3 2 2 107 0.6667 0 0 34.6667

UserEntityAction 4 0 0 10 33 6 2 2 214 0.75 0 0 52.5

Page 83: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 73

PluginsManager 5 0 0 7 28 4 4 0.25 133 0.5333 0 0 25.4

PluginDOM 6 1 0 6 40 0 3 0.5333 202 0.3667 0 0 32.1667

AbstractPluginService 4 1 0 3 5 4 4 0.8889 24 0.4375 0 0 4.25

Plugin 18 1 0 0 23 125 18 0.9191 103 0.3611 0 0 4.2778

PluginTag 2 0 0 4 17 1 2 2 69 1 0 0 33.5

MultiLevelSelectAttribute 14 0 0 9 32 45 14 0.641 178 0.2738 0 0 11.5

MultilevelExtractor 7 0 0 5 17 15 4 2 155 0.5238 0 0 21.1429

MultilevelExtractorDAO 12 0 0 7 44 54 10 0.9273 754 0.5065 0 0 61

SelectLevelAttributeAction 12 0 0 12 50 66 2 1.0682 672 0.5104 0 0 54.6667

ExporterDao 5 0 0 5 31 10 5 1.25 289 0.7 0 0 55.8

ExporterService 6 0 0 8 51 5 3 0.76 272 0.4667 0 0 43.5

ExportAction 3 0 0 9 25 3 2 2 325 0.4286 0 0 107.333

3

AnagrafeExporter 8 0 0 7 32 8 3 0.4286 256 0.25 0 0 30.75

ArticleExporter 2 0 0 5 10 1 1 2 154 0.6667 0 0 76

BookExporter 2 0 0 5 10 1 1 2 154 0.6667 0 0 76

ChapterExporter 2 0 0 5 10 1 1 2 178 0.6667 0 0 88

CongrssArticleExporter 2 0 0 5 10 1 1 2 170 0.6667 0 0 84

DepartmentExporter 3 0 0 5 13 3 2 2 108 0.5556 0 0 35

DesignExporter 2 0 0 5 9 1 1 2 101 0.6667 0 0 49.5

Exporter 3 1 0 2 4 3 2 1 17 0.5556 0 0 4

ExporterFactory 2 1 0 18 24 1 2 2 173 0.5 0 0 85.5

FacultiExporter 3 0 0 5 13 3 2 2 108 0.5558 0 0 35

HelpToExport 5 1 0 6 13 10 5 2 58 0.5 0 0 10.6

ManufactExporter 2 0 0 5 9 1 1 2 101 0.6667 0 0 49.5

OtherExporter 2 0 0 5 9 1 1 2 109 0.6667 0 0 53.5

PatentExporter 2 0 0 5 9 1 1 2 141 0.6667 0 0 69.5

PerformanceExporter 2 0 0 5 9 1 1 2 101 0.6667 0 0 49.5

ProductExporter 4 0 0 8 24 4 2 0.6667 123 0.5 0 0 29.5

ProjectExporter 4 0 0 9 29 9 2 0.6667 302 0.5 0 0 74.25

ResearcherExporter 4 0 0 10 28 2 2 0.6667 381 0.5 0 0 93.75

Row 1 3 0 0 2 0 1 2 5 1 0 0 3

MyHTMLEncoder 2 0 0 1 6 1 2 2 18 0.5 0 0 8

TestCategoryManager 7 0 0 8 38 0 5 0 173 1 0 0 23.5714

TestResourceCategoryManager 6 0 0 7 26 0 4 0 126 1 0 0 19.8333

TestContentDAO 17 0 0 8 65 46 6 0.125 473 0.5147 0 0 26.7647

TestContentManager 14 0 0 7 58 0 11 0.1538 667 1 0 0 46.5714

TestContentTagDAO 3 0 0 3 16 0 3 0 130 1 0 0 42

TestContentDOM 2 0 0 3 8 1 2 2 25 1 0 0 11.5

TestContentAttributeIterator 2 0 0 6 17 1 2 2 54 1 0 0 26

TestContentModelDAO 2 0 0 5 16 1 2 2 67 1 0 0 32.5

TestContentModelManager 5 0 0 5 15 4 3 0.25 47 1 0 0 8.2

TestContentPageMapperManager 5 0 0 6 14 0 3 0 57 1 0 0 10.2

TestContentDispenser 6 0 0 5 16 0 4 0.5333 188 1 0 0 29.8333

TestLinkResolverManager 10 0 0 7 32 0 9 0.1667 382 1 0 0 37

TestResourceDAO 2 0 0 7 23 1 2 2 109 1 0 0 53.5

Page 84: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 74

TestResourceManager 13 0 0 12 60 0 9 0.0833 597 0.5769 0 0 44.8462

MockResourceDataBean 13 1 0 1 21 54 13 0.8667 86 0.3462 0 0 5.2308

TestResourceDOM 2 0 0 3 8 1 2 2 25 1 0 0 11.5

TestHtmlHandler 2 0 0 3 6 1 2 2 19 1 0 0 8.5

TestSearchEngineManager 15 0 0 15 63 0 11 0.7222 850 1 0 0 55.0667

MockContentRelationsDAO 3 0 0 3 9 3 3 2 98 0.75 0 0 31.6667

MockControllerContinue 3 1 0 3 4 3 3 2 14 0.5 0 0 3.6667

MockControllerError 3 1 0 3 4 3 3 2 14 0.5 0 0 3.6667

MockControllerErrorManager 3 1 0 3 5 3 3 2 18 0.5 0 0 5

MockControllerOutput 3 1 0 3 4 3 3 2 14 0.5 0 0 3.6667

MockControllerRedirect 3 1 0 3 5 3 3 2 18 0.5 0 0 5

MockRequestValidator 3 0 0 2 5 3 1 2 20 0.6667 0 0 5.6667

MockResourcesDAO 2 0 0 3 8 1 2 2 49 0.625 0 0 23.5

MockShowletsDAO 2 0 0 3 9 1 2 2 53 0.625 0 0 25.5

MockUniqueKeysDAO 2 0 0 3 10 1 2 2 61 0.625 0 0 29.5

TestDbEncoding 2 0 0 3 18 1 2 2 182 1 0 0 90

TestSysAnagrafeContext 2 0 0 13 26 1 2 2 112 1 0 0 55

TestSysAnagrafeContextFactory 2 0 0 27 6 1 2 2 171 1 0 0 84.5

TestSystemContext. 2 0 0 13 26 1 2 2 112 1 0 0 55

TestSystemContextFactory 2 0 0 26 6 1 2 2 170 1 0 0 84

TestBaseConfigService 3 0 0 5 12 3 3 2 43 1 0 0 13.3333

TestConfigItemDAO 3 0 0 4 15 3 3 2 107 1 0 0 34.6667

TestCacheManager 6 0 0 4 19 0 4 0 125 1 0 0 19.6667

TestAuthenticator 3 0 0 10 24 3 3 2 166 1 0 0 54.3333

TestErrorManager 5 0 0 7 19 0 3 0 103 1 0 0 19.4

TestExecutor 2 0 0 8 15 1 2 2 50 1 0 0 24

TestRequestValidator 3 0 0 8 18 3 3 2 100 1 0 0 32.3333

TestControllerManager 6 0 0 19 37 15 6 2 269 1 0 0 43.8333

TestHelper 3 1 0 3 7 3 3 2 17 0.4167 0 0 4.6667

TestGroupManager 6 0 0 5 25 0 4 0 191 1 0 0 30.6667

TestI18nManager 4 0 0 6 13 0 2 0 52 1 0 0 11.75

TestKeyGeneratorDAO 2 0 0 5 12 1 2 2 56 1 0 0 27

TestKeyGeneratorManager 8 0 0 6 27 16 2 0.5 212 0.3438 0 0 25.25

TestLangManager 6 0 0 6 24 0 4 0 127 1 0 0 20

TestPageDAO 6 0 0 11 62 15 4 2 720 0.6667 0 0 119

TestPageManager 5 0 0 12 58 10 2 2 531 0.8 0 0 105.2

TestPageModelDAO 2 0 0 4 11 1 2 2 51 1 0 0 24.5

TestPageModelDOM 2 0 0 4 11 1 2 2 51 1 0 0 24.5

TestPageModelManager 5 0 0 7 24 0 3 0 130 1 0 0 24.8

TestPermissionDAO 4 0 0 5 26 6 2 2 304 0.75 0 0 75

TestRoleDAO 4 0 0 4 25 6 2 2 263 0.75 0 0 64.75

TestRoleManager 9 0 0 7 43 0 2 0 286 0.7778 0 0 30.6667

TestShowletTypeDAO 2 0 0 5 11 1 2 2 55 1 0 0 26.5

TestShowletTypeDOM 2 0 0 4 11 1 2 2 47 1 0 0 22.5

TestShowletTypeManager 5 0 0 7 28 0 3 0 154 1 0 0 29.6

Page 85: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 75

TestURLManager 4 0 0 7 14 0 2 0 54 1 0 0 12.25

MockUserDAO 7 0 0 4 14 21 1 2 49 0.6429 0 0 6

TestUserDAO 5 0 0 7 29 0 3 0.375 257 0.6 0 0 50

TestUserManager 9 0 0 7 42 0 6 0.25 354 0.5556 0 0 38.1111

TestContentTagHelper 6 0 0 10 25 3 4 0.2 144 1 0 0 22.8333

BaseTestCase 5 0 0 7 15 2 1 0.5 60 0.6 0 0 10.6

TestUtils 6 1 0 9 33 3 5 0.4 272 0.375 0 0 44.1667

MockApsDataSource 3 0 0 1 6 1 3 0.5 32 0.6667 0 0 8.6667

MockResponse 2 0 0 1 3 1 2 2 7 0.75 0 0 2.5

MockSession 3 0 0 1 7 0 3 0 24 0.6667 0 0 6.6667

MockURLManager 3 0 0 6 15 3 3 2 53 0.4667 0 0 16.6667

AllTests0 2 1 0 2 5 1 2 2 156 0.5 0 0 77

TestBaseAdminAction 7 0 0 7 39 15 4 0.5 202 1 0 0 27.5714

TestCurrentUserAction 4 0 0 5 22 0 3 0.3333 173 1 0 0 42

TestCategoryAction 9 0 0 3 23 36 9 2 213 1 0 0 22.6667

TestHypertextAttributeAction 4 0 0 2 14 6 3 2 86 0.625 0 0 20.5

TestLinkAttributeAction 10 0 0 7 43 25 9 2 294 0.55 0 0 28.4

TestListAttributeAction 7 0 0 6 37 1 6 2 251 1 0 0 34.8571

TestResourceAttributeAction 13 0 0 2 22 36 10 2 319 0.6154 0 0 23.5385

TestTableAttributeAction 13 0 0 5 32 22 10 2 588 1 0 0 44.2308

TestContentAction 14 0 0 10 57 43 9 0.7692 545 0.381 0 0 37.8571

TestContentFindAction 23 0 0 7 54 221 12 0.5455 550 0.6739 0 0 22.8696

TestSimpleParamShowletAction 4 0 0 4 19 6 4 2 107 1 0 0 25.75

TestViewerShowletAction 3 0 0 4 18 3 3 2 85 1 0 0 27.3333

TestPagesAction 30 0 0 10 77 177 22 0.5517 116

0 0.4111 0 0 37.6

TestShowletAction 6 0 0 4 20 13 6 2 155 1 0 0 24.8333

TestResourceCategoryAction 7 0 0 3 18 21 7 2 165 1 0 0 22.5714

TestResourceAction 14 0 0 4 35 49 12 2 333 0.5357 0 0 22.7857

TestDispatchForward 9 0 0 3 27 36 8 2 161 0.5556 0 0 16.8889

TestGroupsAction 16 0 0 8 49 98 14 0.6667 511 1 0 0 30.875

TestRolesAction 10 0 0 8 37 45 10 2 285 1 0 0 27.5

TestUsersAction 17 0 0 10 59 124 14 0.75 714 0.5294 0 0 40.9412

AllTests1 2 1 0 2 6 1 2 2 42 0.5 0 0 20

AllTests2 2 1 0 2 6 1 2 2 48 0.5 0 0 23

ApsMockStrutsTestCase 8 0 0 9 23 20 2 0.2857 120 0.625 0 0 13.875

TestEntityMonoListAttribute 3 0 0 8 13 0 3 0.25 54 1 0 0 16.3333

TestMailService 6 0 0 4 16 3 4 0.2 126 1 0 0 19.8333

TestEntitySearchEngineManager 11 0 0 20 70 7 6 0.675 863 0.5455 0 0 76.3636

TestAteneoDAO 5 0 0 10 41 8 2 0.5 377 1 0 0 73.8

TestBaseBuilderManager 8 0 0 12 41 12 3 0.5 621 0.6875 0 0 76.125

TestEntityManagerWrapper 1 0 0 1 2 0 1 2 4 1 0 0 3

TestCollectionManager 2 0 0 12 19 1 2 2 170 1 0 0 84

MockGruppoDAO 7 0 0 4 14 21 7 2 45 0.6857 0 0 5.4286

TestGruppoDAO 5 0 0 9 29 4 2 0.4167 210 1 0 0 40.4

TestGruppoManager 6 0 0 13 36 1 2 0.2667 255 0.5833 0 0 41

Page 86: Validating Software Evolution of Agile Projects Using ...pvsingh.com/wp-content/uploads/2017/07/Gurpreet-Kour.pdf · 3.1.3 MultiLevel Marketing Software 28 3.1.4 Tools Used for the

APPENDIX-A

Page 76

MockUserAnagDAO 8 0 0 5 16 28 2 2 57 0.625 0 0 6.125

MockUserDAO 10 0 0 4 20 45 1 2 70 0.5571 0 0 6

TestUserAnagDAO 5 0 0 11 51 0 3 0.4167 440 0.6 0 0 86.4

TestUtenteManager 6 0 0 11 27 7 3 0.6 186 0.5833 0 0 29.5

AllTestsIT 2 1 0 2 5 1 2 2 42 0.5 0 0 20

TestEntitaAction 11 0 0 9 48 21 6 0.6435 111

5 0.4333 0 0 96.1818

TestBibTextNamesResolver 28 0 0 2 37 0 26 0.1481 438 1 0 0 14.6071

TestUserAnagAction 7 0 0 8 28 15 5 0.5 203 1 0 0 27.8571

Comune 9 1 0 0 10 28 9 0.875 44 0.7222 0 0 3.4444

Read 5 1 0 4 16 2 4 0.5833 68 0.5 0 0 12

TestAteneo 2 0 0 3 21 1 2 2 86 1 0 0 42

TestParsingComuniStati 4 0 0 9 28 4 2 0.6667 204 0.625 0 0 48

TestParsingLingua 2 0 0 6 23 1 2 2 160 1 0 0 79

TestParsingSSD 2 0 0 3 9 1 2 2 36 1 0 0 17

AteneoConverter 4 0 0 10 25 4 2 0.3333 114 1 0 0 27

ChangeSSD 2 0 0 4 18 1 2 1 76 1 0 0 36

CinecaToFlossARConverter 4 0 0 11 42 0 2 0.1667 516 1 0 0 127

DipartimentoConverter 4 0 0 9 24 4 2 0.3333 87 1 0 0 20.25

FacoltaConverter 4 0 0 10 27 4 2 0.3333 95 1 0 0 22.25

GruppoConverter 4 0 0 9 24 4 2 0.3333 87 1 0 0 20.25

LineeRicercatoreConverter 4 0 0 14 33 4 2 0.3333 130 1 0 0 31

LinguaConverter 4 0 0 13 44 4 2 0.3333 167 1 0 0 40.25

MoveAltriProdotti 4 0 0 9 30 4 2 0.3333 176 1 0 0 42.5

ProdottoConverter 6 0 0 16 59 3 2 0.3 293 0.375 0 0 47.5

ProdottoConverter1 8 0 0 13 49 16 2 0.4762 252 0.2708 0 0 30.125

ProdottoConverter2 6 0 0 12 40 7 2 0.4 174 0.375 0 0 27.6667

RicercatoreAreaConverter 4 0 0 9 23 4 2 0.3333 84 1 0 0 19.5

RicercatoreConverter 4 0 0 10 25 4 2 0.3333 93 1 0 0 21.75

RivisteConverter 4 0 0 11 26 4 2 0.5 96 1 0 0 22.5