stringtranslate.com

Olor de diseño

En programación informática , un olor de diseño es una estructura en un diseño que indica una violación de los principios fundamentales del diseño y que puede afectar negativamente la calidad del proyecto. [1] El origen del término se remonta al término " olor de código " que apareció en el libro Refactoring: Improving the Design of Existing Code de Martin Fowler . [2]

Detalles

Diferentes autores han definido la palabra “olor” de diferentes maneras:

Los olores de diseño indican la deuda de diseño acumulada (una de las dimensiones más importantes de la deuda técnica ). Los errores o las características no implementadas no se contabilizan como olores de diseño. Los olores de diseño surgen de las malas decisiones de diseño que hacen que el diseño sea frágil y difícil de mantener. Es una buena práctica identificar los olores de diseño en un sistema de software y aplicar la refactorización adecuada para eliminarlos y evitar la acumulación de deuda técnica.

El contexto (caracterizado por diversos factores, como el problema en cuestión, el ecosistema de diseño y la plataforma) desempeña un papel importante a la hora de decidir si una determinada estructura o decisión debe considerarse un error de diseño. En general, es adecuado aceptar errores de diseño debido a las limitaciones impuestas por el contexto. Sin embargo, los errores de diseño deben controlarse y gestionarse como deuda técnica, ya que degradan la calidad general del sistema con el tiempo.

Olores de diseño comunes

Véase también

Referencias

  1. ^ abcdefghijkl Girish Suryanarayana, Ganesh SG, Tushar Sharma (2014). "Refactorización para el diseño de software con malos olores: gestión de la deuda técnica". Morgan Kaufmann. ISBN  978-0128013977
  2. ^ abcde Fowler, Martin (1999). Refactorización. Mejora del diseño del código existente. Addison-Wesley. ISBN 0-201-48567-2
  3. ^ N. Moha, Y. Gueheneuc, L. Duchien y A. Le Meur. "Decor: un método para la especificación y detección de códigos y olores de diseño". IEEE Trans. Softw. Eng., 36(1):20–36, enero de 2010.
  4. ^ RC Martin. Desarrollo de software ágil: principios, patrones y prácticas . Addison-Wesley, 2003.
  5. ^ Trifu A. "Reestructuración automatizada basada en estrategias de código orientado a objetos". En Actas del 7º taller alemán sobre reingeniería de software (WSR); 2005.
  6. ^ Stal M. "Refactorización de la arquitectura de software". Tutorial en la conferencia internacional sobre programación orientada a objetos, sistemas, lenguajes y aplicaciones (OOPSLA); 2007.
  7. ^ Page-Jones M. "Guía práctica para el diseño de sistemas estructurados". 2.ª ed. Prentice Hall; 1988.
  8. ^ Sefika M, Sane A, Campbell RH. "Supervisión de la conformidad de un sistema de software con sus modelos de diseño de alto nivel". En Actas de la 18.ª conferencia internacional sobre ingeniería de software, ICSE '96, Washington, DC; 1996. págs. 387–96.
  9. ^ Budd T. "Introducción a la programación orientada a objetos". 3.ª ed. Addison Wesley; 2001.
  10. ^ Page-Jones M. "Fundamentos del diseño orientado a objetos en UML". Addison-Wesley Professional; 1999.