Antipatrón

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 29 de mayo de 2022; la verificación requiere 1 edición .

Un antipatrón es un  enfoque común para resolver una clase de problemas comunes que son ineficientes, riesgosos o improductivos [1] . A diferencia de un patrón de diseño , la consideración de un antipatrón incluye tanto una solución incorrecta a un problema con sus signos y consecuencias, como una salida a la situación [2] .

El término proviene de la informática , del libro " Design Patterns " de Gang of Four, que establecía ejemplos de buenas prácticas de programación. Los autores han llamado a estas buenas prácticas "patrones" y lo contrario de ellos son "anti-patrones". Parte de una buena práctica de programación es evitar antipatrones. Antes de que apareciera el término, todos los problemas se llamaban trampas ( pitfalls ) . Por lo tanto, los antipatrones son las trampas más comunes, pero no todas las trampas serán antipatrones.

Los antipatrones son conceptualmente similares a los patrones en el sentido de que documentan soluciones repetitivas a problemas comunes. Se les conoce como antipatrones porque su uso (o abuso) tiene consecuencias negativas [3] .

Historia

Con el desarrollo de la industria de TI, la escala de los proyectos de software y el costo de los recursos para ellos crecieron rápidamente, lo que dio lugar a una gran cantidad de problemas que enfrentaron los programadores. La mayoría de estos problemas eran típicos y ocurrieron en casi todos los proyectos importantes. A principios de los años 90, los catálogos de patrones de diseño , "patrones" ( ing.  patrones de diseño ), formas elegantes y probadas de resolver problemas típicos, ganaron una popularidad considerable. Los patrones siguen siendo poderosos y extremadamente populares hoy en día, sin embargo, muchos desarrolladores que utilizan patrones populares en situaciones para las que no estaban destinados crearon más problemas de los que resolvieron. Además, los ingenieros de TI, como los trabajadores de cualquier otro campo de actividad, pueden identificar los errores típicos cometidos debido a una base de conocimientos insuficiente o falta de experiencia, prisa y presión debido a los plazos de los proyectos, restricciones financieras y otros.

Por primera vez, el término "antipatrón" en el sentido de una descripción generalizada de una típica solución fallida fue utilizado en 1996 por Michael Akroyd en la Object World West Conference, dedicada a aspectos de la programación orientada a objetos . [4] En su presentación Anti-Patterns: Preventing Object Misuse, Aykroyd llamó la atención sobre construcciones de programación dañinas pero comunes, en particular aquellas que van en contra de los principios de OOP. Además, para cada diseño de este tipo, ofreció un reemplazo efectivo.

El término en el sentido de "mala idea" apareció antes de Aykroyd, pero no se publicó y no fue particularmente popular. Y, sin embargo, no vale la pena atribuir la autoría a una sola persona. Según William Brown, autor de Antipatterns: Refactoring Applications, Architectures, and Projects, un antipatrón es una etapa en la evolución del concepto de patrón de diseño, una extensión de su modelo.

Clasificación

William Brown distingue los antipatrones desde tres puntos de vista: desarrollador , arquitecto y gestor :

Neil y Laplante dan un cuarto tipo [5] [6] :

Además, se han descrito antipatrones para tecnologías de la información individuales como [6] :

Antipatrones de desarrollo

Problemas técnicos y soluciones a los que se enfrentan los programadores [6] :

Anti-patrones en programación orientada a objetos

Antipatrones al escribir código

Antipatrones metodológicos

Antipatrones de gestión de configuración

Varios

Antipatrones arquitectónicos

Problemas típicos asociados con la estructura del sistema [6] :

Anti-patrones organizacionales

Problemas que enfrentan los gerentes (o grupos de gerentes) [6] :

Neil y LaPlante proporcionan los siguientes antipatrones [5] :

Antipatrones ambientales

Problemas causados ​​por la estructura dominante de la organización y el modelo social, que son el resultado de la política pública en la organización [15] [6] [5] [16] :

Véase también

Notas

  1. Budgen, D. Diseño de software. - Addison-Wesley, 2003. - ISBN 0-201-72219-4 .
  2. Marrón, 1998 , Capítulo 2.
  3. Universidad de Smith, 2000 .
  4. http://c2.com/cgi/wiki?AntiPattern . Cunningham & Cunningham Inc. . Consultado el 15 de febrero de 2006. Archivado desde el original el 3 de abril de 2005.
  5. 1 2 3 Neill, Laplante, 2005 .
  6. 1 2 3 4 5 6 Settas, 2011 .
  7. Miroslav Kis. Antipatrones de seguridad de la información en ingeniería de requisitos de software. En Actas de la 9.ª Conferencia sobre lenguaje de patrones de programas (Plop), 2002.
  8. John Long. Antipatrones de reutilización de software. En ACM SIGSOFT Software Engineering Notes, volumen 26, página 4, julio de 2001.
  9. Paula Kotze, Karen Renaud y Judy van Biljona. No haga esto: trampas en el uso de anti-patrones en la enseñanza de los principios de interacción humano-computadora. Informática y Educación, 50(3):979-1008, abril de 2008
  10. J. Krai y M. Zemlicka. Los antipatrones orientados a servicios más importantes. En actas de la Conferencia Internacional sobre Avances en Ingeniería de Software (ICSEA), 2007.
  11. P. A. Laplante, R. R. Hoffman y G. Klein. Antipatrones en la creación de sistemas inteligentes. Sistemas inteligentes IEEE, 22:91-95, 2007.
  12. ↑ 1 2 Rajiv Ramnath, Cheyney Loffing. Comenzando con la programación de iOS para tontos . — John Wiley & Sons, 2014-04-14. - S. 105. - 470 pág. — ISBN 9781118799277 . Archivado el 23 de julio de 2016 en Wayback Machine .
  13. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 William J. Brown. Antipatrones: refactorización de software, arquitecturas y proyectos en crisis . — Wiley, 1998-04-03. — 156 págs. — ISBN 0-471-19713-0. Archivado el 22 de diciembre de 2015 en Wayback Machine .
  14. Gary McLean Hall. Código adaptativo a través de C#: Codificación ágil con patrones de diseño y principios SOLID. - Microsoft Press, 2014. - S. 267-268. — ISBN 978-0735683204 .
  15. Original: fuerzas sociopolíticas
  16. Phillip Laplante The Burning Bag of Dung—and Other Environmental Antipatterns Archivado el 19 de septiembre de 2015 en Wayback Machine ACM Queue 30 de noviembre de 2004 Volumen 2, número 7

Literatura

Enlaces