Agile methodology speeds software development

Opinion
Jan 26, 20054 mins

* Rally Development employs the Agile methodology to offer software-as-a-service

Last week, I introduced the subject of Agile software development, a methodology that enables rapid software development through a major shift in the way that software is designed and developed. Agile has had its successes and failures, but after spending some time analyzing the methodology, I feel that it has real merit (and, being a former software developer, I can clearly appreciate its benefits). There are also real advantages for companies that outsource development work to use this methodology.

Yesterday, I spent some time with the founders of Rally Development, a leading supplier of Agile coaching services and technologies. Besides the Agile connection, I am also interested in Rally because it uses the “software as a service” (SaaS) model (similar to Salesforce.com) and provides an outsourced service to its customers.

Rally was founded in 2002 by former executives at Rational Software, BEA, and PVCS Tracker to provide the knowledge, coaching and tooling needed to succeed with Agile development practices. The company supports three major trends in the way that software is defined, developed, and delivered:

* Agile development – competitive pressure to respond faster to rapid changes in customer needs.

* Distributed development – highly dispersed development teams, with offshore and “follow the sun” practices becoming commonplace.

* Web services and the real-time enterprise – new standards for software usage and deployment.

Rally’s slogan does a good job of summarizing what Agile is all about: “deliver early, deliver often.” One benefit of Agile development is its focus on producing small, iterative advancements of a software product. This allows companies that use Agile to increase the frequency of release cycles, thereby responding to changing customer needs and new opportunities much more quickly. A graphic example of Agile may be found on Rally’s own development roadmap: the company uses an eight-week (!) release cycle, introducing major new functionality every two months.

As an industry analyst, I spend a lot of time listening to vendor presentations, and I can safely say that I have never encountered an accelerated roadmap like Rally’s before – most vendors that I deal with work on six month or yearly release cycles. This acceleration is also due to the SaaS delivery mechanism, as new functionality is deployed very quickly without requiring customers to install and migrate to a new release. Think about that from a competitive perspective; if company A and company B are close competitors, and company A can bring new features to market three to six times faster than company B, they have a real competitive advantage.

Traditional software development processes, which often consist of lengthy and labyrinthine “waterfall” processes that include the definition of requirements and specifications, followed by a development cycle, followed by testing and quality assurance, and finally progressing to a release cycle, often take a year or more to complete. Changes in the scope of the project, such as shifts in priority or new features, often result in significant delays.

The Agile approach is orthogonal to these traditional processes, emphasizing the generation of test cases early in the development cycle. Developers code directly against the test case, and when the test passes, the feature is considered complete. Agile also creates smaller development tasks that are easier to test and change as needed – this is a key benefit when conducting offshore development, as it reduces overall risk of failure and makes the project easier to manage. Another key Agile concept is that it does not require organizations to “rip and replace” their existing development and testing tools – it merely uses them in a different, more efficient manner.

Rally takes this process one step further by modeling the progress of an Agile development cycle using a finite state machine (FSM). By monitoring key activities at the feature level, such as whether it is being coded, waiting to be tested or blocked, the state of the overall project is updated dynamically, with no outside intervention (such as updating project plans and generating time sheets). The FSM is kept up-to-date automatically, in near real-time, as development progresses so distributed teams always know the status of their commitments. Developers really like this approach as it reduces the amount of paperwork and overhead that they have to deal with on a day-to-day basis.

I would encourage anyone who is interested in drastically reducing the time required to develop and release software, to check into Agile and Rally. While established development shops will have to undergo a significant change, the result will be increased competitiveness and much higher productivity.

As always, I welcome your ideas, suggestions and comments on the subjects of outsourcing and information security; my e-mail address is below. Thanks for reading.