viernes, 10 de noviembre de 2017

Regla N°13 de la Ingeniería de Software: Simplifica las cosas


Cuanto te enfrentes a un problema grande, simplifícalo en problemas más pequeños. Si estos problemas siguen siendo demasiado grandes repite el proceso hasta que tengas un problema lo suficientemente pequeño para poderlo resolver.

Lo anterior parece un consejo bastante razonable, no solo para la ingeniería de software, sino para cualquier circunstancia en general. Sin embargo parece que es difícil entenderlo al momento de enfrentar un nuevo desarrollo software.




Es común que caigamos en el error de ver los sistemas como un todo unido de enormes dimensiones, pero como ingenieros debemos ver las partes que componen un sistema, y centrarnos en el diseño y la construcción de dichas partes, de forma unitaria, además de en su correcta interacción.

Para simplificar partimos siempre de un problema grande que es irresoluble en su tamaño actual, e identificamos las partes que lo componen. Lo dividimos en pequeños problemas que son más fáciles de resolver, repitiendo el proceso hasta que podémonos identificar dichos problemas con una solución clara y sencilla, y además que solo sirva para resolver exclusivamente una necesidad.

En la medida que las “mini-soluciones” estén bien diseñadas será más fácil juntarlas, para resolver nuestros problema de origen (Curiosamente cuando más “desacopladas” sean, más fácil será unirlas).


Las ventajas de la simplificación son las siguientes:

  • Nos obliga a ser ordenados y metódicos a la hora de resolver un problema.

  • Con la simplificación es más fácil distribuir el trabajo dentro de un equipo de trabajo con varios recursos.

  • Cuando comenzamos a resolver los problemas identificados, estos, por su tamaño nos permiten concentrar nuestro esfuerzo en un solo “tema” a la vez, y son además lo suficientemente pequeños para ser manejables.

  • Cada solución aportar una funcionalidad concreta y finalizada al sistema.

  • Las soluciones se deberían poder probar de forma individual. Las pruebas unitarias nos garantizan que todo funciona correctamente antes de integrarlo al conjunto global. Igualmente el sistema es modificado nos permite probar los elementos por separado, evitándonos realizar un complicado flujo hasta llegar al punto que deseamos probar.

  • Simplificar nos permite desarrollar un sistema más desacoplado. Un sistema desacoplado permite que se cambien los componentes por otros que agreguen funcionalidad o la mejoren, sin afectar al resto de los componentes. Cuando más desacoplado e un sistema más mantenible es.

No hay comentarios:

Publicar un comentario