stringtranslate.com

Abstracción con fugas

Una abstracción con fugas en el desarrollo de software se refiere a un defecto de diseño en el que una abstracción , destinada a simplificar y ocultar la complejidad subyacente de un sistema, no logra hacerlo por completo. Esto da como resultado que algunos de los detalles de implementación queden expuestos o se "filtren" a través de la abstracción, lo que obliga a los usuarios a tener conocimiento de estas complejidades subyacentes para usar o solucionar problemas del sistema de manera efectiva. [1]

El concepto fue popularizado por Joel Spolsky , quien acuñó el término Ley de Abstracciones con Fugas que establece: [2]

Todas las abstracciones no triviales, hasta cierto punto, tienen fugas.

Esto significa que incluso las abstracciones bien diseñadas pueden no ocultar por completo su funcionamiento interno y, a medida que los sistemas informáticos se vuelven más complejos, aumenta la probabilidad de que se produzcan dichas filtraciones. Estas filtraciones pueden provocar problemas de rendimiento, comportamientos inesperados y una mayor carga cognitiva para los desarrolladores de software , que se ven obligados a comprender tanto la abstracción como los detalles subyacentes que se suponía que debía ocultar. Esto pone de relieve una causa de los defectos del software: la confianza del desarrollador de software en la infalibilidad de una abstracción. A pesar de sus imperfecciones, las abstracciones son cruciales en el desarrollo de software para gestionar la complejidad, aunque no siempre sean perfectas.

Historia

El término "abstracción con fugas" fue popularizado en 2002 por Joel Spolsky . [2] [3] Un artículo de 1992 de Kiczales describe algunos de los problemas con las abstracciones imperfectas y presenta una posible solución al problema al permitir la personalización de la abstracción misma. [4]

Efecto sobre el desarrollo de software

A medida que los sistemas se vuelven más complejos, los desarrolladores de software deben recurrir a más abstracciones. Cada abstracción intenta ocultar la complejidad, lo que permite al desarrollador escribir software que "maneje" las muchas variaciones de la informática moderna.

Sin embargo, esta ley establece que los desarrolladores de software confiable deben de todas formas aprender los detalles subyacentes de la abstracción.

Ejemplos

El artículo de Spolsky cita muchos ejemplos de abstracciones con fugas que crean problemas para el desarrollo de software:

En 2020, Anish, Jose y Jon, docentes de ciencias de la computación del Instituto Tecnológico de Massachusetts, argumentaron que la interfaz de línea de comandos para Git es una abstracción permeable, en la que es necesario comprender el "hermoso diseño" subyacente del modelo de datos de Git para un uso efectivo de Git. [5]

Véase también

Referencias

  1. ^ Seibel, Peter (1 de noviembre de 2006). Practical Common Lisp. Apress. pág. 96. ISBN 978-1-4302-0017-8.
  2. ^ ab Spolsky, Joel (2002). "La ley de las abstracciones con fugas" . Consultado el 22 de septiembre de 2010 .
  3. ^ arvindpdmn (23 de agosto de 2019). "Abstracciones con fugas". Devopedia . Consultado el 7 de julio de 2020 .
  4. ^ Kiczales, Gregor (1992). "Hacia un nuevo modelo de abstracción en la ingeniería de software" (PDF) . Archivado desde el original (PDF) el 2011-06-04 . Consultado el 2010-02-03 .
  5. ^ "Control de versiones (Git)". El semestre que falta en tu formación en informática . Consultado el 31 de julio de 2020 .