Incorporating Change
Learn about substituting, augmentation and excluding, inversion and porting, also how to make the system more adaptable.
We'll cover the following...
Substituting
Given a modular design, substituting is just replacing one module with another, like swapping out an NVidia graphics card for an AMD graphics card or vice versa.
The original module and the substitute need to share a common interface. That’s not to say they have identical interfaces, just that the portion of the interface needed by the parent system must be the same. Subtle bugs often creep in with substitutions.
In our running example, we might substitute a logistics module from UPS or FedEx in place of our original home-grown calculator.
Augmenting and excluding
Augmenting is adding a module to a system. Excluding is removing one. Both of these are such common occurrences that we might not even think of them as design-changing operations. However, if we design our parent system to ensure that augments and exclusions are first-class priorities, then we’ll reach a different design.
For example, if we decompose our system along technical lines we might end up with a module that writes to the ...