Gul and quality. Agile software process is an incremental

Gul Rose

Virtual University, Lahore, Pakistan

We Will Write a Custom Essay Specifically
For You For Only $13.90/page!


order now

[email protected]

Abstract – This paper is a motivation for analyzing software quality aspects of
agile software development process. In this paper I have observed the quality in
some important approaches and methodologies of agile. I have also discussed
that how agile software process able to enhance quality of the product. I have
also stated the common practices of agile which helped to enhance the quality.

 

Keyword: Software Quality, Software Quality assurance, Refactoring, Scrum, Agile
Development, Test Driven Development, Extreme Programming.

I. INTRODUCTION

Software industry is growing very rapidly with passage of time. Many new
software development processes are introduced in industry and Agile is one of
these processes. With growing industry and increasing competition in industry the
software quality becomes the main candidate for products/projects success 7.

Quality is actually the factor to measure the level of user’s
satisfaction. Quality dictates the list of features that must be completed in a
product as per user’s need. In Agile approach following are two major
characteristics: First characteristic is handling the change in requirement
that can come at any time in complete development lifecycle and agile can
manage it. Second the delivery time of the project is usually very shorter 1.

Agile process considers two
factors very carefully in development life cycle; process and quality. Agile
software process is an incremental and iterations based approach of
development. In Agile requirements changes occur as per customer needs. In
Agile, the adaptive planning becomes very important as all activities of software
process are time boxed 4.

 

Agile software process is
very useful and in practice software development process. In this process the
client needs to be considered on highest priority and client usually directly
involves in reviewing the software during development 13.

 

Agile software process has become very popular in couple of years due to
agility factor. Due to agility, this process of development differs with remaining
traditional development process models. Agile handles the quality factors
inside the process very highly which makes this process more users satisfactory.
This process model helps to increase collaboration between client and developing
team which ensures the quality and timely product delivery 3.

The Agile software process is totally changing the approaches of the
software development. This process has introduced a latest concept of starting
the work with smaller team and deliverables with pure quality. In agile team
communication and collaboration also helps to increase the overall quality of
the product 6.

Extreme Programming highlighted the discussion of the agile software
development. Many have opposed agile development process and many have
explained the benefits of this process. But due to requirement change accommodation,
continuous delivery of product and most importantly high collaboration between
client and development team in agile makes this process very desirable 11.

Agile software process was introduced to reduce the risk of the low
quality software systems. In agile they focused to develop and deliver software
fast and get the continuous feedback from the client to provide quality
product. In agile the methodology like extreme programming (XP) introduced the
concept of simplicity. XP emphasizes that system should be simple as much as
possible. In Agile software development to ensure the quality assurance usually
refactoring is performed to remove defects of quality 6.

The remaining part of the paper is organized as follows: Section 2 gives
a small literature review about software quality assurance, software quality
and refactoring. Section 3 gives a small overview of agile software process
life cycle which will clear that why agile has become popular these days.
Section 4 describes the popular methodologies of agile software process. Section
5 concludes the paper and Section 6 contains all the references used for this
paper.

 

II. Literature
Review

A. Software
Quality Assurance

Software
quality assurance is a formal way to monitor and assure the quality of the
product on each stage of development. Software quality assurance is actually a
way to achieve a high quality product 12. Below given figure shows the
overall activities includes in software quality assurance.

Figure 2.1:
Software Quality Assurance Activities

 

B. Software
Quality

Software
Quality defines that how much a software is reliable, secure, manageable and as
per user’s requirements. Software quality directly depends on meeting the
requirements provided by user. Software quality can be compromised due to
following factors:

Creating product with insufficient qualityCreating product with features that client did
not demand.Creating product which client demanded first
but realized later that it is not he/she meant to create. Creating product exactly like client demanded
in start but after seeing actual product client realized that he/she had
asked the wrong thing.Creating product exactly like client demanded
in start but now they want some different thing 10.

Figure 2.2: Quality
Factors

 

C.
Refactoring

Refactoring
is process to improve quality of the software code. In this process small
changes are performed in code to improve overall design and code structure. In
refactoring one thing that is important to consider is that it does not change
the behavior of the code. During refactoring, developers do not change
functionality of software. They merely improve the overall quality of the code.
E.g. change of method name in code. Developer must need to keep in mind that
changed method name changes throughout the code. Refactoring completes once the
code performs exactly like before refactoring 5.

In agile
this refactoring practice is very commonly followed by agile developers. Even a
small code needs to be refactored; the agile developers do that before working
to new feature. This helps to increase the overall quality of product code 5.

Figure 2.3: Refactoring

 

 

III. Agile
Software Process Life Cycle

In
agile software process some of the major factors that need to be considered are
focus on process, continuous and early delivery and most importantly on
quality. Agile process works on iterative and incremental approach of
development. This process also deals with change in requirements of client at
any time of product development 14.

In
agile development process life cycle following phases are included:

Requirements
GatheringAnalysisDesignCodingTesting
Partially
Developed Product Delivery

Since,
in agile client is involved in all phases of process and its feedback is
incorporated regularly. The product is developed in small iterations (Sprints) 4.

Figure 3: Agile Process

 

 

IV. Agile
Methods

A. Scrum

The
scrum is very common method to implement agile process. Scrum does not define
any hard core technique of development. It actually helps to finalize a simple
approach of development where team can work on implementations of software and
able to handle constantly changing requirements and variables 2.

Some
people consider the scrum a framework instead of the methodology of agile
process. In scrum following roles of a team are involved to complete the
development:

Product
Owner:Scrum
MasterScrum
Team

 

Each role ensures the delivery of the
software product with highest quality. In Scrum the development is performed in
small iterations called sprints. To guarantee a delivery of quality product scrum
process has following list of activities:

Product Backlog ManagementSprint Backlog ManagementSprint PlanningBacklog GroomingRetrospective MeetingDaily Scrum Meeting

 

Figure 4.1: Scrum
Process

 

B. Test
Driven Development

Test
driven development is also called as test first development. This approach is
also a method to implement agile process. This is also an iterative and
incremental approach. In this approach the agile developers must need to write tests
to test their code before developing further. The code cannot be considered
done until it passes the written tests 9.

This
approach really helps to ensure the quality of the product as agile developers spend
time to analyze the problem before developing it. This reduces the chances of
bugs. Due to availability of the tests, the developers can test their code too.
 

This
approach also encourages developers to refactor more bluntly because developers
know that they have a test suite available to check his/her code accuracy. In
case of any mistake of refactoring that test suite will highlight the problem 5.

 

 

Figure 4.2: Test
Driven Development

 

C.
Extreme Programming

Extreme
programming (XP) is one of the successful methodologies of agile development
process. This process is also focus on the customer satisfaction. In this
method development is divided into small and simple development cycles. After
each cycle an incremented product output is delivered to client.

Client
collaboration frequency with team is very high in this method to provide
his/her feedback.

Changes
can come at any stage of the cycle and development team must be able to
incorporate changes at any level 8.

First
step in extreme programming is to collect requirements. On the basis of these
requirements the development process is divided into small cycles. After
dividing the work, the iteration planning phase starts on the basis of the
requirement and estimations of effort required to complete iteration.

The
development of iteration usually performs using pair programming or other
techniques. Iteration plan can be modified on the basis of requirements change.
After development testing is performed to ensure the quality of product. If
bugs found in code, then fixes of these bugs will be added in current or next
iteration on the basis of priority and need 4.

Figure 4.3: Extreme Programming

 

V.
Conclusion

This study concludes that agile software
process is very efficient development process model because it ensures the
quality product. It also clearly explained that all the methodologies or
approaches used in agile process helps to enhance the overall quality of the
product.

Every aspect of the agile process
focused on the quality and continuous delivery. In conclusion, I will say that
agile process model definitely has revolutionized the software development
industry. Due to agile process, the chances of bugs’ identification on
production have been reduced heavily. If some bug is found on production as
well, still the cost of the fix is not big as were in traditional software
development process models (Waterfall, RAD).

V1. References

1 Amran Hossain, Dr. Md. Abul Kashem, Sahelee
Sultana “Enhancing Software Quality Using Agile Techniques.|”

2 Pekka Abrahamsson, Outi Salo, Jussi Ronkainen and Juhani Warsta “Agile
Software Development Methods:

Review and Analysis”

 

3Deepa Vijay, Gopinath Ganapathy “Guidelines
to minimize the cost of software quality in agile scrum process”

4 Sheetal
Sharma, Darothi Sarkar, Divya Gupta “Agile
Processes and Methodologies: A Conceptual Study”

 

5 Scott Ambler Ambysoft, Inc. “Quality
in an Agile World”

6 JÖRG RECH “Handling of Software Quality Defects in Agile Software
Development”

 

7 Pete Mcbreen “Quality Assurance and Testing in Agile Projects”

 

8 Diemtar Seipal, Frank Pauppe “An Agile Process Model for Developing Diagnostic
Knowledge Systems.”

 

9 Panagiotis Sfetsos, Ioannis Stamelos “Improving Quality by
Exploiting Human Dynamics in Agile Methods”

 

10 Shallowoy, Beaver, Trott, “The Role
of Quality Assurance in lean quality Development”

11 Ming Huo, June Verner, Liming Zhu “Software Quality and Methods”

12 Ming Chang Lee “Software
Quality Factors and Software Quality Metrics to Enhance Software Quality
Assurance”

13 Alistair
Cockburn, Laurie Williams “The Costs
and Benefits of Pair Programming”

14 B.Boehm and R.Turner, “Balancing Agility and Discipline: A
Guide for the Perplexed, Addison, Wesley, 2003.