Slide 3 of 44
AntiPatterns represent the latest concept in a series of revolutionary changes in computer science and software engineering thinking. As we approach the 50-year mark in developing programmable digital systems, the software industry has yet to resolve some fundamental problems in how humans translate business concepts into software applications.
A survey of hundreds of corporate software development projects indicated that five out of six software projects are considered unsuccessful. About a third of software projects are canceled. The remaining projects delivered software that was typically twice the expected budget and took twice as long to developed as originally planned [Johnson 95]. These repeated failures, or "negative solutions", are highly valuable, however in that they provide us with useful knowledge of what does not work, and through study: why. Such study, in the vernacular of Design Patterns can be classified as the study of AntiPatterns.
Design Patterns provide the most effective form of software guidance yet available, and the whole patterns movement has gone a long way in codifying a concise terminology for conveying sophisticated computer science thinking. AntiPatterns are a natural extension to design patterns, focussed on the wide and ever-growing selection of repeated software failures in an attempt to understand, prevent, and recover from them. AntiPatterns are a new tool that bridge the gap between architectural concepts and real-world implementations.