The following categories present some of the more common design flaws:
Direct modification Components that make direct modification of data values in other components are a direct violation of encapsulation.
Such coupling makes for inflexible designs.
Too Much Responsibility Components with too much responsibility are difficult to understand and to use.
Responsibility should be broken into smaller meaningful packages and distributed.
No Responsibility Components with no responsibility serve no purpose.
Often arise when designers equate physical existence with logical design existence.
``Money is no object''
Components with unused responsibility
Usually the result of designing software components without thinking about how they will be used.
Misleading Names
Names should be short and unambiguously indicate what the responsibilities of the component involve.