El sueño de la Ingeniería de Software
"En todo caso, >qué diremos sobre estos dos pequeños asuntos
cuando regresen?
El Mayordomo se detuvo en medio de la
luz sobre el pavimento. Desprendió su brazo de terciopelo del
brazo de hilo del Chef, y abriendo sus manos con el repentino
candor de un par de alas, le propuso lo obvio:
- Pero, amigo mío, por supuesto que les diremos la verdad.
El Chef estuvo a punto de preguntarle cuál verdad entre las múltiples
que el poder maneja. Pero calló para que el Mayordomo se internara en la
maraña de sus elaboraciones."1
Desde hace unos veinte años que se intenta tener una visión ingenieril de la computación, particularmente del desarrollo de Software. Con el tiempo, varias lecciones se han ido aprendiendo, desde el principio KISS (Keep It Simple, Stupid) hasta la utilidad de poder dibujar los sistemas (bajo cualquier convención bien definida).
Sin embargo, cada vez que uno observa con detención los programas fuentes de sistemas grandes de software (desde compiladores hasta sistemas operativos) más parece gasfitería de software. Cuantas veces se reinventa la rueda, se codifica otra vez, y se cometen los mismos errores.
En general, cuando un ingeniero construye un edificio, no se espera que tenga que fabricar el cemento ni los fierros. En computación terminamos fabricando hasta los hoyos para los cimientos. En Estados Unidos, recién ahora se está proponiendo una carrera profesional de Ingeniero de Software. En Chile ya existe, pero es verdad que falta más visión de integración, que permita utilizar herramientas y re-utilizar código lo más posible.
La programación orientada a objetos nos comienza a proveer con algunas herramientas buscadas por largo tiempo: las bibliotecas de clases. Cuantas veces uno implementa la misma función de búsqueda, sólo porque el tipo de datos cambia. Una biblioteca de clases me permite tener funciones de búsqueda, inserción y eliminación que funcionen independientemente del tipo de los datos. El sueño entonces es disponer de una biblioteca con todas las herramientas más importantes de desarrollo, de modo de construir una solución de alto nivel sin preocuparse de cada detalle.
A medida que evolucionemos a C++, pero mucho mejor aún a verdaderos lenguajes orientados a objetos como SmallTalk (C++ sigue siendo un parche sobre C), podemos ir aprovechando de construir nuestras propias herramientas, de modo de ir re-utilizando las lecciones aprendidas. Nuestros ingenieros en computación que están trabajando pero aún no conocen bien los lenguajes orientados a objetos, es el momento de comenzar a estudiarlos. En pocos años más arriesgan su puesto frente a jóvenes mejor formados si continúan ignorantes en la materia.
Cada vez aparecen más bibliotecas comerciales de clases dedicadas a algunos temas, como optimización o diseño de interfaces. Para ir incorporándolos debemos comenzar a entender la filosofía orientada a objetos. Pero más que eso, debemos comenzar a enfrentar el desarrollo de software como un verdadero problema de ingeniería, y no con un alambrito en mano tratar de detener las filtraciones después.
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -no_navigation -t 'Ing Software' -split 0 ooc.tex
The translation was initiated by Jose M. Piquer on 2008-08-16