Untitled Document
Despite signs of life in the economy, the realities of software development
persist. Most companies and customers need their software yesterday with the
most advanced features at the lowest possible cost. To accomplish these seemingly
contradictory goals, developers seek to streamline production with fast, effective
processes that can give the customer what she wants in the shortest time possible.
These realities and past development failures have led to a shift in software
development thinking from the more structured, sequential methods of software
development of the past, often called the "Waterfall" model, to more
iterative and incremental models such as the "Rational Unified Process
(RUP)" and "Agile."
Agile proponents abound and it can sometimes seem as if more traditional development
processes have fallen out of favor, but in reality all three models have their
plusses, minuses and ideal project environments. At the end of the day, the
best method or blending of methods for you depends on a thorough understanding
of all three processes and how they fit your software project, business culture,
and development environment.
Waterfall
Waterfall programming is a highly structured process that relies heavily on
up-front planning and a set of sequential, prescribed steps that flow into each
other like a waterfall. Each step typically has its own team of experts and
carefully scripted milestones and no step can begin until the previous step
has been completed. The goal is to gather all your detailed requirements early
in the process and provide a single complete solution with results that are
highly predictable.
Typically the steps in Waterfall development are:
- Requirements and specifications gathering
- Software design
- Coding
- Integration
- Testing and debugging
- Installation
- Maintenance
Waterfall development can work very well for complex, mission-critical applications
that interface with many other systems and for organizations such as NASA or
the military that require the highest levels of fault tolerance.
Detractors say that Waterfall simply takes too long and lacks the flexibility
-- or agility -- required for today's fast-paced software market and development
environment. Waterfall projects typically take months or years, and by the time
they're finished, it's sometimes found that the requirements have changed or
that the original requirements were off the mark to begin with. The result can
be expensive, budget-busting fixes.
-1-