Slide 25 of 44
Example: The Library Blob Class
Typical Causes (How could we have gotten here?)
- Lack of an object-oriented architecture. The designers may not have an adequate understanding of object-oriented principles. Alternatively, the team may be lacking appropriate abstraction skills.
- Lack of (any) architecture. The lack of definition of the system components, their interactions and the specific use of the selected programming languages. This allows programs to evolve in ad-hoc way due to the programming languages being used outside of their intended purposes.
- Lack of architecture enforcement. Sometimes this AntiPattern grows accidentally, even after a reasonable architecture was planned. This may be the result of inadequate architectural review as development takes place. This is especially prevalent with development teams new to OO.
- In iterative projects, developers tend to add little pieces of functionality to an existing working classes, rather than add new classes, or revise the class hierarchy for more effective allocation of responsibilities.
- Specified Disaster. Sometimes The Blob results from the way requirements are specified. If the requirements dictate a procedural solution, then architectural commitments may be made during requirements analysis which are difficult to change. Defining system architecture as part of requirements analysis is usually inappropriate, and often leads to The Blob AntiPatterns, or worse