Todas las disciplinas tienen buenos y malos usos, en
este caso “Patrones” y “Antipatrones”. Si un patrón es una buena práctica,
entonces, un antipatrón es una mala práctica.
Existen dos tipos de antipatrones:
- Aquellos que
describen una mala solución a un problema y que da como resultado una mala
situación.
- Aquellos
que describen como salir de una mala situación y convertirla en una buena
solución.
Los antipatrones son
considerados una parte importante del conocimiento, en otras palabras, es muy
importante conocer y entender las buenas soluciones y las malas soluciones.
Los diseñadores intentan evitar los
antipatrones siempre que sea posible, pero para esto se debe poder reconocerlos
e identificarlos lo antes posible. Los antipatrones más útiles son aquellos que
no permiten rehacer un buen diseño a partir de uno malo.
El concepto de antipatrón puede
encontrarse en muchas disciplinas. Pero es ampliamente utilizado en la
ingeniería en general.
Se puede definir entonces a un antipatrón de la siguiente forma:
“Forma literaria que describe una solución comúnmente
dada a un problema que genera consecuencias negativas decididamente”.
Para la ingeniería del software se pueden
clasificar los siguientes tipos de antipatrones
Antipatrones de desarrollo de software:
- The Blob (“Clases gigantes”).
- Lava Flow (“Código muerto”).
- Funcional Fecomposition (“Diseño no orientado a objetos”).
- Poltergeists (“No se sabe bien lo que hacen algunas clases”).
- Golden hammer (“Para un martillo todo son clavos”).
- Spaghetti code (“Muchos if o switch”).
- Cut-and-paste programming (“Cortar y pegar código")
Antipatrones de arquitectura de software:
- Stovepipe enterprise ("isolation in the company").
- Stovepipe system ("isolation between systems").
- Vendor Lock-In ("dependent product architecture").
- Architecture by implication.
- Design by committee ("Swiss army knife").
- Reinvent the Wheel ("reinventing the wheel").
Antipatrones de gestión de proyectos de software:
- Analysis paralysis.
- Death by planning.
- Corncob ("troublemakers").
- Irrational management.
- Project mismanegement.