Maintain The VisionThis is a pattern based on my Third Principle (see SevenPrinciplesOfSoftwareDevelopment). Please give feedback at the bottom.
Author: DavidHooker
Pattern: Maintain The Vision
Problem: A system under construction is degrading into a mish-mash of incompatible designs/subsystems/etc., thus threatening to not meet one or more project goals.
Forces/Context: A system is in development. It must meet user needs and be on time and within budget. Consideration is being given to maintenance, extensibility, and reuse.
Solution: A clear vision is essential to the success of a software project. Without one, projects almost unfailingly end up being "of two [or more] minds" about itself. Without conceptual integrity, a system threatens to become a patchwork of incompatible designs, held together by the wrong kind of screws. As Brooks states:
Conceptual integrity is the most important
consideration in system design.
Stroustrup also notes:
Having a clean internal structure is essential to
constructing a system that is understandable, can
be extended and reorganized, and is maintainable
and testable.
From which Booch summarizes:
It is only through having a clear sense of a
system’s architecture that it becomes possible
to discover common abstractions and mechanisms.
Exploiting this commonality ultimately leads to
systems that are simpler, and therefore smaller
and more reliable.
Compromising the architectural vision of a software system weakens and will eventually break even the most well designed
systems. Having an empowered Architect who can hold the vision and enforce compliance helps ensure a very successful
software project.
This principle can be sustained by creating, communicating and maintaining one of the SystemMetaphors?. --KentBeck
EditText of this page
(last edited November 22, 2000)
or FindPage with title or text search