Especificación de los Antipatrones de diseño de Arquitectura de Software

RECU-0820 (Recurso Especificación)

Introducción

Los patrones nos ofrecen una forma de resolver un problema típico, los antipatrones muestran formas de enfrentarse a problemas con consecuencias negativas conocidas. Los antipatrones se basan en la idea de que puede resultar más fácil detectar a priori fallos en el desarrollo del proyecto que elegir el camino correcto o, lo que es lo mismo, descartar las alternativas incorrectas nos puede ayudar a la elección de la mejor alternativa.

El estudio de los antipatrones es muy útil porque sirve para no escoger malos caminos en el desarrollo de sistemas, teniendo para ello una base documental y así evitar usar simplemente la intuición. Además proporciona una denominación común a problemas que facilita la comunicación entre diferentes desarrolladores.

Características

  • Improbability factor ("Factor de improbabilidad" ): Asumir que es improbable que un error conocido cause verdaderos problemas.
  • Golden Hammer ("Martillo de Oro"): Asumir que nuestra solución favorita es universalmente aplicable, haciendo bueno el refrán a un martillo, todo son clavos.
  • Premature optimization ("Optimización prematura"): Realizar optimizaciones sin disponer de la información suficiente para hacerlo con garantías, sacrificando decisiones de diseño.
  • Copy and paste programming (Programación de copiar y pegar): Programar copiando y modificando código existente en lugar de crear soluciones genéricas.
  • Programming by permutation (Programación por permutación): Tratar de aproximarse a una solución modificando el código una y otra vez para ver si acaba por funcionar.
  • Stovepipe enterprise (“Aislamiento en la empresa”): La causa suele estar en una falta de estrategia tecnológica en la empresa, falta de cooperación y comunicación entre departamentos y niveles, deficiencias en el conocimiento de la tecnología, etc.
  • Stovepipe system (“Aislamiento entre sistemas”): Este antipatrón se refiere a 2 posibles circunstancias: Un sistema que no puede interoperar con el resto de los sistemas de una organización; o bien, pequeños sistemas que están tan unidos entre si que no es posible diferenciar cada uno de ellos, imposibilitando su actualización, refactorización, etc.
  • Vendor Lock-In (“Arquitectura dependiente del producto”): Sucede cuando dependemos de una arquitectura, plataforma o tecnología.
  • Architecture by implication (“Arquitectura implícita”): No se especifica la arquitectura del sistema o ignora alguno de sus apartados.
  • Design by comittee (“Navaja Suiza”): Se da cuando el proyecto se diseña a través de las reuniones de un comité demasiado numeroso o inexperto.
  • Reinvent the wheel ("Reinventar la rueda"): Se supone que se debe desarrollar desde cero, falta información y tecnología reusable entre proyectos.

Contenidos relacionados

Pautas
Área: Desarrollo » Patrones de Diseño
Código Título Tipo Carácter
PAUT-0318 Antipatrones de Diseño Pauta Directriz Recomendada