Un antipatrón es cualquier solución común pero contraproducente para alguna clase de problema. [ 1 ] [ 2 ] El término, acuñado en 1995 por Andrew Koenig , se inspiró en el libro Design Patterns , que destaca patrones de diseño de desarrollo de software fiables y eficaces . [ 3 ] Michael Ackroyd describió los antipatrones en un artículo presentado en la Conferencia Object World West de 1996. [ 3 ] El libro AntiPatterns de 1998 popularizó la idea y extendió su alcance más allá del diseño de software para incluir la arquitectura de software y la gestión de proyectos. [ 3 ] Otros autores lo han extendido aún más para abarcar antipatrones ambientales, organizacionales y culturales. [ 4 ]
Un antipatrón se distingue de un mal hábito, una mala práctica o una mala idea por dos características. Primero, los antipatrones son procesos, estructuras o patrones de acción de uso común que inicialmente parecen apropiados y efectivos, pero que tienen más inconvenientes que beneficios. [ 5 ] Segundo, existe otra forma de resolver el problema que está documentada, es repetible y efectiva, a diferencia del antipatrón.
De forma similar a los patrones, se aplica una "regla de tres": para ser un antipatrón, debe haber ocurrido al menos tres veces. [ 6 ]
Documentar los antipatrones puede ayudar a analizar un espacio de problemas y a capturar el conocimiento de los expertos. [ 7 ] Si bien algunas descripciones de antipatrones simplemente documentan las consecuencias del patrón, una buena documentación de antipatrones también proporciona formas alternativas de minimizar el daño. [ 8 ]
Ejemplos
En ingeniería de software
En ingeniería de software, los antipatrones incluyen: [ 8 ]
- Objeto de Dios
- En un programa , una sola clase se encarga de todo el control , en lugar de que este se distribuya entre varias clases.
- Número mágico
- Un valor literal con un significado importante pero aún sin explicación, que podría reemplazarse por una constante con nombre.
- Duende
- Clases de controlador efímeras que solo existen para invocar otros métodos en otras clases.
- Gran bola de barro
- Un sistema de software que carece de una arquitectura perceptible. Si bien no es deseable desde el punto de vista de la ingeniería de software, este tipo de sistemas son comunes en la práctica debido a las presiones comerciales, la rotación de desarrolladores y la entropía del software .
En la gestión de proyectos
Los antipatrones de gestión de proyectos incluidos en el libro Antipatrones incluyen: [ 4 ]
- Jamboree de fanfarrones
- Un exceso de expertos de la industria
- Ingeniería Viewgraph
- Se dedica demasiado tiempo a hacer presentaciones y no el suficiente al software en sí.
- Muerte por planificación
- Dedicar demasiado esfuerzo a la planificación.
- Miedo al éxito
- Temores irracionales cerca de la finalización del proyecto.
- La mazorca de maíz
- Dificultades con la gente.
- Violencia intelectual
- Intimidación mediante el uso de jerga o tecnología arcana.
- Gestión irracional
- Malos hábitos de gestión.
- Humo y espejos
- Uso excesivo de demostraciones y prototipos por parte de los vendedores.
- Tíralo por encima del muro
- Imponer prácticas de ingeniería de software de moda a los desarrolladores sin su consentimiento.
- Simulacro de incendio
- Largos periodos de monotonía interrumpidos por breves crisis.
- La disputa
- Conflictos entre gerentes.
- El correo electrónico es peligroso
- Situaciones derivadas de mensajes de correo electrónico imprudentes.
Véase también
- Modelo de inmadurez de capacidades
- Mal olor del código : característica del código fuente que sugiere un problema de calidad.
- Patrón oscuro : diseños de interfaz de usuario engañosos
- Olor a diseño : término en programación informática.
- ISO/IEC 29110 : Perfiles y directrices del ciclo de vida del software para entidades muy pequeñas (VSE, por sus siglas en inglés)
- Lista de antipatrones de software
- Lista de filosofías de desarrollo de software
- Lista de herramientas para el análisis estático de código
- Principio de Peter del software : término de ingeniería para un proyecto complejo y fallido.
- Deterioro del software : Degradación o pérdida de la funcionalidad del software con el tiempo.
- El dilema del innovador – Libro de Clayton M. Christensen, 1997
Referencias
¿Qué apoya qué?
- ↑ Budgen 2003 , pág. 225.
- ↑ Ambler 1998 , pág. 4.
- ^ Neill , Laplante y DeFranco 2011 , pág . 4.
- ^ Neill , Laplante y DeFranco 2011 , pág. 5.
- ↑ Moha, Naouel; Gueheneuc, Yann-Gael; Duchien, Laurence; Le Meur, Anne-Francoise (2010). "DECOR: Un método para la especificación y detección de olores de código y diseño" . IEEE Transactions on Software Engineering . doi : 10.1109/TSE.2009.50 .
- ^ Neill, Laplante y DeFranco 2011 , pág. 6.
- ↑ Jiménez 2006 .
- 1 2 Demeyer 2008 , pág. 102.
Fuentes
- Neill, Colin J.; Laplante, Philip A.; DeFranco, Joanna F. (2011). Antipatrones: Gestión de organizaciones y personas en el sector del software . Serie de ingeniería de software aplicada (segunda edición). CRC Press. ISBN 9781439862162.
- Budgen, D. (2003). Diseño de software . Harlow, Inglaterra: Addison-Wesley. pág. 225. ISBN 0-201-72219-4Como se describe en Long (2001) ,
los antipatrones de diseño son "soluciones obvias, pero erróneas, a problemas recurrentes".
- Ambler, Scott W. (1998). Patrones de proceso: construcción de sistemas a gran escala mediante tecnología de objetos . Cambridge, Reino Unido: Cambridge University Press. pág. 4. ISBN 0-521-64568-9...
enfoques comunes para resolver problemas recurrentes que resultan ineficaces. Estos enfoques se denominan antipatrones.
- Jiménez, Edward (24 de abril de 2006). "AntiPatrones" . AntiPatrones . Recuperado el 24 de abril de 2006 .
- Demeyer, Serge (2008). "Reingeniería Orientada a Objetos". En Hombres, Tom; Demeyer, Serge (eds.). Evolución del software . Springer Science + Business Media. ISBN 9783540764403.
Lecturas adicionales
- Koenig, Andrew (marzo-abril de 1995). "Patrones y antipatrones". Journal of Object-Oriented Programming . 8 (1): 46– 48.
- Reimpreso posteriormente en: Rising, Linda (1998). The patterns handbook: techniques, strategies, and applications . Cambridge, Reino Unido: Cambridge University Press. pág. 387. ISBN 0-521-64818-1Un antipatrón es igual que un patrón, excepto que en lugar de una solución ,
proporciona algo que superficialmente parece una solución, pero que no lo es.
- Reimpreso posteriormente en: Rising, Linda (1998). The patterns handbook: techniques, strategies, and applications . Cambridge, Reino Unido: Cambridge University Press. pág. 387. ISBN 0-521-64818-1Un antipatrón es igual que un patrón, excepto que en lugar de una solución ,
- Laplante, Phillip A.; Neill, Colin J. (2005). Antipatrones: Identificación, refactorización y gestión . Auerbach Publications. ISBN 0-8493-2994-9.
- Brown, William J.; Malveau, Raphael C.; McCormick, Hays W.; Thomas, Scott W. (2000). Hudson, Theresa Hudson (ed.). Antipatrones en la gestión de proyectos . John Wiley & Sons . ISBN 0-471-36366-9.
- Stamelos, Ioannis (enero de 2010). "Antipatrones de gestión de proyectos de software". Journal of Systems and Software . 83 (1): 52– 59. doi : 10.1016/j.jss.2009.09.016 .
Enlaces externos
Contenido multimedia relacionado con los antipatrones en Wikimedia Commons
- Antipatrón en WikiWikiWeb
- Antipatrones
- Arquitectura de software
- Diseño
- psicología industrial y organizacional
- Comportamiento organizacional
- Comportamiento antisocial
- Lugar de trabajo
- Neologismos de 1995