''To develop some new capability, existing in parallel with the old, and slowly migrate it in (I've heard this called ArchitecturalSubstitution?)'', as MichaelFeathers writes in ExtremeReuse. ''Perhaps this phrase is a bit misleading. Architecture isn't supposed to ''change'' at all; it is the base, irreducible, and '''immutable''' set of rules determining how a system behaves. Replacing some capability with another -- hopefully ''expanded'' -- capability isn't a change in architecture, it's a change in implementation. The architecture remains the same, the services called out by the original architecture are still being provided, and anything relying on those services are still able to use them.'' ''However, with a New! IMPROVED!! capability in place any new dependencies can make use of the new services being provided. This still doesn't change the architecture; it merely means there is some new implementation available.''