The waterfall process can delay high-risk elements (such as integration)
until late in the cycle, when it may be too late to recover. Antipatterns
can thrive in such an environment. Quality control is back-loaded, and
antipatterns found near the end of the cycle might never get fixed
because of political pressures and expense.
The process forces complex one-time translations between major docu-
ments, with no built-in accountability. For example, it is difficult to be
sure that a program matches the original requirements. It is also difficult
to determine where a functional requirement maps onto an end user's
requirement. This characteristic is called traceability . Process-related
antipatterns can thrive because of the relative lack of accountability.
Iterative methodologies improve this process by providing short cycles with
increased accountability throughout each cycle. We can adapt to change and
address key risk elements early. Iterative methodologies help to thwart antipat-
terns by doing the following:
Iterative methodologies provide more opportunities to refactor, usually
after each cycle. We then have an antidote for antipatterns that are
Deliverables, called artifacts , trace end-user requirements from the
beginning throughout the entire process after each iteration. This trace-
ability improves accountability and quality. In such an environment,
process antipatterns are more easily exposed and addressed.
One of the cornerstones of a good development process is to build in
increasing value as the cycle matures. With an iterative process, it is much
easier to do so. Managers can define functional releases from a very early
stage, with extra functionality delivered throughout the process that
builds in additional use cases with each successive iteration. Reducing
scheduling pressures by accurate sizing can also help code quality.
Mini-antipatterns: Incomplete Process Transitions
Many projects never see the full benefits of object-oriented technologies and
related methodologies. They fail to make an effective transition from the tradi-
tional waterfall process. Here are some common mistakes:
Poorly defined iterations. It is easy to look at an iterative methodology
and incorrectly infer that the process is unstructured. Many project
managers do not attempt to set a comfortable rhythm of release cycles.