Niveles de Abstracción
2019-01-05
Una abstracción supone una supresión u ocultamiento intencional de detalles en un proceso o artefacto con la finalidad de destacar más claramente ciertos aspectos detalles u estructuras. Un buen ejemplo consiste en pensar lo que el promedio de la gente entiende por un automóvil: un dispositivo que toma el combustible como entrada y produce un movimiento de rotación como salida. Debido a que el motor gira muy rápidamente, existe un mecanismo llamado transmisión que la reduce y dicha reducción es la que impulsa el vehículo. Si bien esto no es del todo correcto, es suficientemente simple para resultar útil y entendible para la mayoría de la gente [1].
Ilustración 1 - usualmente a una abstracción se la puede considerar un modelo
En el contexto de la ingeniería de software el concepto es bien conocido y utilizado. El mismo se utiliza en distintas etapas del proyecto de desarrollo para destacar elementos importantes sobre los que debe recaer el foco de los distintos actores. En particular, en las prácticas de software de alto nivel de abstracción conducidas por las pruebas (BDD, STDD, ATDD, FTDD etc.) se utilizan cambios de niveles de abstracción deliberadamente para construir software. Se comienza trabajando a un nivel de abstracción alto, cerca del negocio y del problema que el cliente quiere resolver. A este nivel se construyen pruebas para definir el comportamiento de la UI y beneficiarse del feedback rápido del cliente. Luego, cada método que describe un comportamiento de alto nivel de abstracción es automatizado usando TDD. Dicha automatización hace que el nivel de abstracción baje y se acerque un nivel técnico entendible y cómodo para los desarrolladores [2].
[1] T. Budd, An Introduction to Object-Oriented Programming. 2002.
[2] B. Rice, R. Jones, and J. ’Engel, “Behavior Driven Development,” 2014. [Online]. Not available: https://pythonhosted.org/behave/philosophy.html. [Accessed: 17-Aug-2015]. Available at WaybackMachine or from my own archive.
Significant Revisions
Dec 12, 2018: Original publication on dariomac.com