Software QA FYI - SQAFYI

Agile Software Development Processes

By: Everette R. Keith

Abstract
In software development there exists a tension between quality, cost, and time.Delivering cost competitive quality software in today’s time constrainedmarket is a difficult task. Many traditional software processes are top heavywith documentation and rigid control mechanisms making it difficult applyingthem to different software projects. New families of processes, referred to asAgile Processes, are making headway into the software industry. Theseprocesses focus on code rather than documentation calling themselves agilebecause, unlike the traditional processes, they are adaptable, not rigid. Thispaper discusses several of these Agile Processes, the philosophy driving themand the challenges faced when implementing them.

Introduction
Software has been part of modern society for more than 50 years. Likewise, so have software development processes. The software process is the foundation for engineering software. Within the context of his book, Pressman defines “a software process as a framework for the tasks that are required to build high-quality software.” [1].

There is a tension between quality, cost, and time impacting software development processes. Software developers have to address two prevailing questions. 1) Why does software cost so much? 2) Why does it take so long to develop a software product? Today’s software processes stress quality over efficiency. Studies’ show that fixing problems after product introduction can cost from 60 to 100 times more than finding and eliminating the problems during the design phase.

Today’s mainstream software processes do not effectively address the two major questions of cost and time. There is, however, an emerging philosophy producing new processes known as “Agile Software Development”. The new processes focus more on people interactions and early development of code than on documentation and planning.

This paper introduces and discusses Agile Software Processes. The paper begins by taking a brief look at today’s market and how it impacts the software industry. Next, agile process philosophy is explored followed by an overview of four of the more widely used agile processes. Following this, the challenges associated with implementing agile processes are presented and a case study describing one company’s experience with agile processes is outlined. The paper concludes with a summary and the author’s views concerning the value of using agile processes cautioning that while valuable they are not a panacea capable of solving all problems associated with software design and development.

A Brief Look at Today’s Market
There is a stark difference between yesterday’s markets, where survival often depended on restrictive practices applied in relatively stable business climates and today’s markets which move at blinding speed. “The accelerated comodification of goods and services in addition to the simple and cheap replication of the business models of others lead to a constant redefinition and fragmentation of markets in the endless search for the next high-margin differentiated products and services.” [2]. The pressures introduced by the rapidly changing markets introduce pressures into the software industry requiring them to be as adaptable as the markets into which their products are used.

A rapidly changing market introduces greater choices into the market. Users and producers of software must contend with issues concerning features, those to include and those to exclude. What technology should be pursued? How can companies differentiate themselves giving them a competitive edge? These, and other business related questions, are always difficult to answer; trying to predict answers to them in rapidly changing markets compounds the difficulty. In fact, from a software system perspective it is highly probable that making long-term predictions in rapidly changing markets is impossible. [2]

Agile Process Philosophy
Agile Software development philosophy has it roots in the reality of today’s markets. The emergence of agile software processes attempt to deal with the issues introduced by rapidly changing and unpredictable markets. Reading the “Manifesto for Agile Software Development” [3] the basic ideas of the philosophy are introduced through four basic 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.


The items on the right have value, however, the items on the left define the agile philosophy. Exploring each of these values will aid in gaining knowledge of the agile process philosophy while exposing how applying the philosophy to defined methods will enhance software development aligning it with today’s volatile markets.

Full article...


Other Resource

... to read more articles, visit http://sqa.fyicenter.com/art/

Agile Software Development Processes