This 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