Portals eNewsletters Web Seminars dataWarehouse.com DM Review Magazine
DM Review | Covering Business Intelligence, Integration & Analytics
   Covering Business Intelligence, Integration & Analytics Advanced Search

View all Portals

Scheduled Events

White Paper Library
Research Papers

View Job Listings
Post a job


DM Review Home
Current Magazine Issue
Magazine Archives
Online Columnists
Ask the Experts
Industry News
Search DM Review

Buyer's Guide
Industry Events Calendar
Monthly Product Guides
Software Demo Lab
Vendor Listings

About Us
Press Releases
Advertising/Media Kit
Magazine Subscriptions
Editorial Calendar
Contact Us
Customer Service

Development Best Practices:
Agile Development

online columnist  Robert  Wegener     Column published in DMReview.com
March 10, 2005
  By Robert Wegener

This month's column will cover some of the best practices for the agile development organization. We'll look at what agile development is and how it can be introduced into a development organization.

Agile development consists of methods which embrace change and promote iterative development. There are a set of core principles set forth by the Agile Alliance (http://www.agilealliance.org/home) that set the direction for agile development methodologies such as extreme programming (XP) and Scrum. Some of the common principles stress self-organizing teams, time-boxed/short iteration development cycles, joint development between business users and developers (face to face), continuous attention to technical excellence and an agile process to promote sustainable development.

In its basic sense, development is nothing more that creating a working system in code based on a series of requirements. Agile development makes us look back at Development 101. In the perfect world the business users would create their own software based on their own requirements. In some ways this does happen already with tools like spreadsheets and simple databases. As system complexity increases, so do the number of users with particular knowledge of individual parts of the system. They can no longer develop their own systems without stepping on the other areas of the business. They also create barriers to integration by using different tools. The diversity of tools, complicated requirements and specialized technical knowledge have molded and shaped the software development life cycle. All software goes through the same stages of requirements gathering to design to development to testing to deployment. Agile practices focus on incorporating Development 101 back into the mix to promote an agile process that does not collapse under its own weight from over documenting, over analyzing or over designing.

Agile development is a return to using the best practices that worked with a small team of core individuals. Concepts such as self-organized teams, continuously released working software, the ability to incorporate changes at the last minute are key to any development organization.

The issue is not what to do, it's how to do it in today's environment. Development organizations have embraced vary robust methodologies that require a high-level of process documentation for everything from functional requirements, detailed design documents with event models, object models and data models. Add a layer of quality assurance and project management over this and you get a very tightly coupled organization that is far from agile and one that cannot accommodate last minute changes.

The best way to embrace Agile development is to start on a smaller project with the participants trained in selected Agile best practices. Project managers will need be trained in how to manage agile development projects as their role is drastically different from a controlling and planning perspective. The Agile Alliance Web site contains a list of great books to get any organization started on the road to agile development and agile project management at http://www.agilealliance.org/membership/allBooks. Aside from training you will need to have an executive sponsor and customer champion that can communicate the value of agile development and its place in the organization.

One of the best-known agile development processes is Scrum. It is a lightweight process used to manage software development and incorporates existing practices such as extreme programming (XP) and RUP. It is best suited for projects with rapidly changing requirements. Scrum is based on 30-day iterations called sprints. Task are prioritized every 30 days in a sprint planning meeting and monitored through daily briefings. A sprint review meeting is held at the end of the sprint at which time the development team demonstrates the functionality completed for that iteration. The process continues until the application backlog is empty. The short duration and time-boxed steps increase productivity and reduce errors. The Scrum life cycle is composed of four phases: planning, staging, development and release.

The major strength with Scrum is its focus on management values and practices. It involves commitment on everyone's part. The Scrum team commits to its goals for each iteration. The product owner commits to prioritizing the product back log. The Scrum Master (PM) commits to letting the team manage itself and works to remove team obstacles as noted in the daily Scrum meetings.

The idea of the self-managing team takes some upfront work to master. Project managers and team leads have to adapt to an environment that they do not direct and plan. They act more like a mine sweeper, clearing the path for the team to move forward under their own direction.

It must be noted that Scrum is not a complete solution for development. It does not define work products, requirements gathering, development or architectural techniques. The ideal way to use Scrum is to merge it with your best practices and work products. Also, the key ingredient to the successful completion of any project is good people. The industry is at a juncture on the issue of what a good development organization should consist of. On one hand there are those that believe that development is a commodity item and the use of cheap resources is all that is needed to create software. The other school looks to software development as an art, with each developer skilled in multiple techniques and technologies. No matter which school you subscribe too, Scrum will definitely help promote better, faster software development.

In previous articles, I've stressed the need for reusability through patterns and model-driven development (MDA). Agile development techniques are one more piece of the development puzzle. They have proven themselves to be very effective in small and large projects and allow for compatibility with other development techniques such as RUP. The next piece of the puzzle that we will discuss is testing. Next month's article will look at testing as an intricate, ongoing function in the software development life cycle.


For more information on related topics visit the following related portals...
Best Practices/Benchmarking and Project Management/Tool Selection.

Robert Wegener is the director of solutions for RCG Information Technology's Web services. He has more than 20 years of information and business engineering experience in operations, customer service, transportation, finance, product development, telecommunications and information systems. Wegener also has extensive experience in various process and development methodologies, quality assurance and testing methodologies. He can be contacted by e-mail at rwegener@rcgit.com.

E-mail This Column E-Mail This Column
Printer Friendly Version Printer-Friendly Version
Related Content Related Content
Request Reprints Request Reprints
Site Map Terms of Use Privacy Policy
SourceMedia (c) 2006 DM Review and SourceMedia, Inc. All rights reserved.
SourceMedia is an Investcorp company.
Use, duplication, or sale of this service, or data contained herein, is strictly prohibited.