Design Tactics - Modifiability
=
26
items
(filtered by
description
name only
) /
show notes
Localize Changes
Restricting modifications to a small set of modules will generally reduce the cost.
Know Your Dependencies
Syntax of Data/Service.
The data that is produced by A and consumed by B must be consistent with the type (or format) of data assumed by B
Semantics of Data/Service
The data produced by A and consumed by B must be consistent with the assumptions of B.
Sequence of Data/Service
B must receive the data produced by A in a fixed sequence.
Identity of an Interface
The identity (name or handle) of the interface must be consistent with the assumptions of B.
Location (Runtime)
The runtime location of A must be consistent with the assumptions of B.
Quality of Service/Data
The quality of the data or service provided by A must be consistent with B's assumptions.
Existence
For B to execute correctly, A must exist.
Resource Behavior
The resource behavior of A must be consistent with B's assumptions.
Maintain Semantic Coherence
Ensure that module responsibilities work together without excessive reliance on other modules.
Abstract Common Services
Modifications to commons services will need to be made only once rather than in each module.
Anticipate Expected Changes
Evaluate an assignment of responsibilities baed on the set of envisioned changes.
Generalize the Module
The more general a module, the more likely that requested changes can be made by adjusing the input language rather than by modifying the module.
Limit Possible Options
Restricting the possible options reduces the effect of these modifications.
Prevention of Ripple Effects
A ripple effect from a modification is the necessity of making changes to modules not directly affected by it.
Hide Information
Isolate changes within one module and prevent changes from propagating to others.
Maintain Existing Interfaces
Maintaining the interface and its syntax allows a module to remain unchanged.
Restrict Communication Paths
Data production/consumption introduces dependencies that cause ripples.
Use an Intermediary
Defer Binding Time
Binding at runtime means that the system has been prepared for that binding and all of the testing and distribution steps have been completed.
Runtime Registration
Supports plug-and-play operation at the cost of additional overhead.
Configuration Files
Set parameters at startup.
Polymorphism allows late binding of method calls.
Allows late binding of method calls.
Component Replacement
Allows load time binding.
Adherence to Defined Protocols
Allows runtime binding of independent processes.
Adherence to Defined Protocols
Component Replacement
Polymorphism allows late binding of method calls.
Configuration Files
Runtime Registration
Defer Binding Time
Use an Intermediary
Restrict Communication Paths
Maintain Existing Interfaces
Hide Information
Prevention of Ripple Effects
Limit Possible Options
Generalize the Module
Anticipate Expected Changes
Abstract Common Services
Maintain Semantic Coherence
Resource Behavior
Existence
Quality of Service/Data
Location (Runtime)
Identity of an Interface
Sequence of Data/Service
Semantics of Data/Service
Syntax of Data/Service.
Know Your Dependencies
Localize Changes
Modifiability Design Tactics