Nuffnang

Friday, November 20, 2009

Agile Software Development


By: Paige Taylor

Agile Project Development has roots in the programming methodologies of the mid-1990s, however, it was not until the Agile Manifesto of 2001 that the theories behind it became a recognized movement. Based on 12 key-components, the manifesto emphasizes the importance of the developers within the software design process. The emergence of this "lightweight" thinking changed the top-heavy, bureaucratic approach to a team-centered, highly-adaptable approach where client involvement and satisfaction are key.

In agile development, the software design process is broken down into small pieces with very little long term planning. This method is successful due to the basic components of the agile tools: teamwork, client collaboration, timeboxes and a high degree of adaptability. Programming teams are broken into small, manageable groups of five to ten people. The smaller group size allows for daily, organized face-to-face interactions and accountability. Although the team members within the group are responsible for individual components of the programming task, they must be transparent with one another about the work accomplished and the challenges they are facing. Existing corporate identities are not recognized for members of the group, as each person is considered to be equally vital to the success of the timebox's completion. This method calls for a high degree of trust within the team.

Each team is given direct access to a client liaison who is responsible for answering questions during the development process. This allows the team to adapt quickly to changing needs or ideas. The representative is then able to report to the client with status updates and the team's concerns. In agile development the emphasis is on the importance of client satisfaction throughout the design process.

Timeboxes, also called iterations, are relatively short time frames of one to four weeks within the overall design process. Teams construct the code component assigned to them within this duration. Each iteration contains the complete software design process and produces a relatively bug-free component at the end of the specified time. Each team must design, plan, analyze, code and test their component before bringing it to the client. Although many iterations may be necessary for a large project or program, the client has a fully functioning program component after each timebox. This is a critical difference between agile methods and "heavyweight" designs like the waterfall method, which require a project's completion before the client approves or denies the work.

The ongoing client feedback gives the software a high degree of adaptability within the agile method. The programmers' ability to troubleshoot concerns and issues that the client may have along the path of the software's development allows for quick changes and innovative thinking. The agile software model requires that the client re-evaluates and ranks their needs based on the business value of each component. Unlike traditional programming methods, this constant change and re-prioritizing is what the agile development process thrives on and can effectively address with the agile tools.

The process of agile design relies heavily on face-to-face interactions, hence the amount of documentation generated is far less than in other methods. Progress and success are primarily measured by working, bug-free software. Agile Software Development earned the nickname of "lightweight" due to the lack of paperwork and apparent free-form process. In actuality, there is immense structure within the team workings during each timebox.

Software development that is considered to be part of the Agile Methodologies include: Scrum, Dynamic Systems Development Method (DSDM), Extreme Programming, Adaptive Software Development, Crystal Clear and Feature Driven Development. These approaches embrace the people-centered approach to software design outlined in the Agile Manifesto. The Agile Alliance, a non-profit organization founded by some of the 17 original methodology founders, promotes the idea of agile development throughout the software design community.

Although not preferred for all software design projects, the agile method is firmly rooted in the programming industry. The fast-paced, often chaotic, atmosphere it produces within the team dynamic requires programmers comfortable with that approach. As not all programmers and projects are alike, there will always be a need for other methods besides the agile software development process.

Article Source: http://www.articlesnatch.com

About the Author:
Paige Taylor is a freelance writer intrigued by the rise of the Agile Software Development movement.

No comments:

Post a Comment