Gul and quality. Agile software process is an incremental

Gul Rose Virtual University, Lahore, [email protected] – This paper is a motivation for analyzing software quality aspects ofagile software development process. In this paper I have observed the quality insome important approaches and methodologies of agile.

I have also discussedthat how agile software process able to enhance quality of the product. I havealso stated the common practices of agile which helped to enhance the quality.  Keyword: Software Quality, Software Quality assurance, Refactoring, Scrum, AgileDevelopment, Test Driven Development, Extreme Programming.

I. INTRODUCTIONSoftware industry is growing very rapidly with passage of time. Many newsoftware development processes are introduced in industry and Agile is one ofthese processes. With growing industry and increasing competition in industry thesoftware quality becomes the main candidate for products/projects success 7.Quality is actually the factor to measure the level of user’ssatisfaction.

Quality dictates the list of features that must be completed in aproduct as per user’s need. In Agile approach following are two majorcharacteristics: First characteristic is handling the change in requirementthat can come at any time in complete development lifecycle and agile canmanage it. Second the delivery time of the project is usually very shorter 1.Agile process considers twofactors very carefully in development life cycle; process and quality. Agilesoftware process is an incremental and iterations based approach ofdevelopment. In Agile requirements changes occur as per customer needs.

InAgile, the adaptive planning becomes very important as all activities of softwareprocess are time boxed 4.  Agile software process isvery useful and in practice software development process. In this process theclient needs to be considered on highest priority and client usually directlyinvolves in reviewing the software during development 13. Agile software process has become very popular in couple of years due toagility factor.

Due to agility, this process of development differs with remainingtraditional development process models. Agile handles the quality factorsinside the process very highly which makes this process more users satisfactory.This process model helps to increase collaboration between client and developingteam which ensures the quality and timely product delivery 3.The Agile software process is totally changing the approaches of thesoftware development. This process has introduced a latest concept of startingthe work with smaller team and deliverables with pure quality. In agile teamcommunication and collaboration also helps to increase the overall quality ofthe product 6. Extreme Programming highlighted the discussion of the agile softwaredevelopment.

Many have opposed agile development process and many haveexplained the benefits of this process. But due to requirement change accommodation,continuous delivery of product and most importantly high collaboration betweenclient and development team in agile makes this process very desirable 11.Agile software process was introduced to reduce the risk of the lowquality software systems. In agile they focused to develop and deliver softwarefast and get the continuous feedback from the client to provide qualityproduct. In agile the methodology like extreme programming (XP) introduced theconcept of simplicity. XP emphasizes that system should be simple as much aspossible.

In Agile software development to ensure the quality assurance usuallyrefactoring is performed to remove defects of quality 6.The remaining part of the paper is organized as follows: Section 2 givesa small literature review about software quality assurance, software qualityand refactoring. Section 3 gives a small overview of agile software processlife cycle which will clear that why agile has become popular these days.Section 4 describes the popular methodologies of agile software process.

Section5 concludes the paper and Section 6 contains all the references used for thispaper.  II. LiteratureReviewA. SoftwareQuality AssuranceSoftwarequality assurance is a formal way to monitor and assure the quality of theproduct on each stage of development. Software quality assurance is actually away to achieve a high quality product 12.

Below given figure shows theoverall activities includes in software quality assurance. Figure 2.1:Software Quality Assurance Activities B. SoftwareQualitySoftwareQuality defines that how much a software is reliable, secure, manageable and asper user’s requirements. Software quality directly depends on meeting therequirements provided by user. Software quality can be compromised due tofollowing 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: QualityFactors C.RefactoringRefactoringis process to improve quality of the software code. In this process smallchanges are performed in code to improve overall design and code structure. Inrefactoring one thing that is important to consider is that it does not changethe behavior of the code. During refactoring, developers do not changefunctionality 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 thatchanged method name changes throughout the code. Refactoring completes once thecode performs exactly like before refactoring 5.

In agilethis refactoring practice is very commonly followed by agile developers. Even asmall code needs to be refactored; the agile developers do that before workingto new feature. This helps to increase the overall quality of product code 5. Figure 2.3: Refactoring  III.

AgileSoftware Process Life CycleInagile software process some of the major factors that need to be considered arefocus on process, continuous and early delivery and most importantly onquality. Agile process works on iterative and incremental approach ofdevelopment. This process also deals with change in requirements of client atany time of product development 14.Inagile development process life cycle following phases are included:Requirements GatheringAnalysisDesignCodingTesting Partially Developed Product DeliverySince,in agile client is involved in all phases of process and its feedback isincorporated regularly. The product is developed in small iterations (Sprints) 4.

Figure 3: Agile Process  IV. AgileMethodsA. ScrumThescrum is very common method to implement agile process.

Scrum does not defineany hard core technique of development. It actually helps to finalize a simpleapproach of development where team can work on implementations of software andable to handle constantly changing requirements and variables 2. Somepeople consider the scrum a framework instead of the methodology of agileprocess. In scrum following roles of a team are involved to complete thedevelopment:Product Owner:Scrum MasterScrum Team Each role ensures the delivery of thesoftware product with highest quality. In Scrum the development is performed insmall iterations called sprints. To guarantee a delivery of quality product scrumprocess has following list of activities:Product Backlog ManagementSprint Backlog ManagementSprint PlanningBacklog GroomingRetrospective MeetingDaily Scrum Meeting  Figure 4.

1: ScrumProcess B. TestDriven DevelopmentTestdriven development is also called as test first development. This approach isalso a method to implement agile process.

This is also an iterative andincremental approach. In this approach the agile developers must need to write teststo test their code before developing further. The code cannot be considereddone until it passes the written tests 9.

Thisapproach really helps to ensure the quality of the product as agile developers spendtime to analyze the problem before developing it. This reduces the chances ofbugs. Due to availability of the tests, the developers can test their code too. Thisapproach also encourages developers to refactor more bluntly because developersknow that they have a test suite available to check his/her code accuracy.

Incase of any mistake of refactoring that test suite will highlight the problem 5.   Figure 4.2: TestDriven Development C.Extreme ProgrammingExtremeprogramming (XP) is one of the successful methodologies of agile developmentprocess. This process is also focus on the customer satisfaction. In thismethod development is divided into small and simple development cycles. Aftereach cycle an incremented product output is delivered to client.Clientcollaboration frequency with team is very high in this method to providehis/her feedback.

Changescan come at any stage of the cycle and development team must be able toincorporate changes at any level 8.Firststep in extreme programming is to collect requirements. On the basis of theserequirements the development process is divided into small cycles.

Afterdividing the work, the iteration planning phase starts on the basis of therequirement and estimations of effort required to complete iteration.Thedevelopment of iteration usually performs using pair programming or othertechniques. Iteration plan can be modified on the basis of requirements change.After development testing is performed to ensure the quality of product. Ifbugs found in code, then fixes of these bugs will be added in current or nextiteration on the basis of priority and need 4.

Figure 4.3: Extreme Programming V.ConclusionThis study concludes that agile softwareprocess is very efficient development process model because it ensures thequality product. It also clearly explained that all the methodologies orapproaches used in agile process helps to enhance the overall quality of theproduct. Every aspect of the agile processfocused on the quality and continuous delivery. In conclusion, I will say thatagile process model definitely has revolutionized the software developmentindustry.

Due to agile process, the chances of bugs’ identification onproduction have been reduced heavily. If some bug is found on production aswell, still the cost of the fix is not big as were in traditional softwaredevelopment process models (Waterfall, RAD).V1. References1 Amran Hossain, Dr. Md.

Abul Kashem, SaheleeSultana “Enhancing Software Quality Using Agile Techniques.|” 2 Pekka Abrahamsson, Outi Salo, Jussi Ronkainen and Juhani Warsta “AgileSoftware Development Methods:Review and Analysis” 3Deepa Vijay, Gopinath Ganapathy “Guidelinesto minimize the cost of software quality in agile scrum process”4 SheetalSharma, Darothi Sarkar, Divya Gupta “AgileProcesses and Methodologies: A Conceptual Study” 5 Scott Ambler Ambysoft, Inc. “Qualityin an Agile World”6 JÖRG RECH “Handling of Software Quality Defects in Agile SoftwareDevelopment” 7 Pete Mcbreen “Quality Assurance and Testing in Agile Projects” 8 Diemtar Seipal, Frank Pauppe “An Agile Process Model for Developing DiagnosticKnowledge Systems.” 9 Panagiotis Sfetsos, Ioannis Stamelos “Improving Quality byExploiting Human Dynamics in Agile Methods” 10 Shallowoy, Beaver, Trott, “The Roleof Quality Assurance in lean quality Development” 11 Ming Huo, June Verner, Liming Zhu “Software Quality and Methods”12 Ming Chang Lee “SoftwareQuality Factors and Software Quality Metrics to Enhance Software QualityAssurance”13 AlistairCockburn, Laurie Williams “The Costsand Benefits of Pair Programming”14 B.Boehm and R.

Turner, “Balancing Agility and Discipline: AGuide for the Perplexed, Addison, Wesley, 2003.