martes, 24 de febrero de 2009

El Futuro de la Ingenieria del Software




La calidad de los sistemas informáticos,
satisfacción de sus usuarios y clientes, son temas ampliamente conocidos, recurrentes y de constante preocupación
por parte de los practicantes de la Ingeniería de software.
Esta joven y dinámica ingeniería siempre
está en busca de mejoras en el desarrollo
de sistemas, aumento de productividad del ingeniero de software, mayor control del proceso de desarrollo, establecimiento de nuevos métodos de desarrollo. Estos elementos,
combinados y aplicados de buena forma, logran un buen proceso de desarrollo
y, en definitiva, un buen producto.
Identificar los pasos que ha recorrido esta ingeniería, analizar su contexto actual y, finalmente, proyectar hacia dónde se dirige, es el pilar de este artículo.
La salida de este “círculo vicioso” que se propone es bastante natural: analizar la situación actual de la ingeniería de software en la luz de sus tendencias históricas.
La primera de ellas, relacionada con los problemas que resuelven los sistemas, obviamente presente y muy utilizada en nuestra realidad: los sistemas de hoy no sólo resuelven los problemas del mundo real, sino que están fuertemente influenciando
el desarrollo del mundo real.
El enfoque de los ingenieros, desde hace unos años, no se ha movido significativamente
por el camino del aumento de abstracción establecido históricamente. Se han hecho ciertos avances en temas puntuales
(como arquitecturas de componentes,
patrones de diseño, nuevos lenguajes de programación, etc.), pero conceptualmente,
metodológicamente, la tarea de programación sigue siendo ejecutada de la misma forma: escribiendo códigos fuentes en forma de los programas textuales.
Éste es, justamente, el “atraso” metodológico
que se mencionó. Para disminuir la brecha entre las tendencias históricas, es necesario ajustar la metodología, en términos de aumentar la abstracción del enfoque de los ingenieros de software y acercarlo a la abstracción del problema.
El aumento de la abstracción del proceso de desarrollo del software hace pensar que la próxima generación de métodos de desarrollo se perfila en un conceptualmente nuevo conjunto
de herramientas, que permitan aumentar
en un mayor grado al actual la abstracción, escondiendo los detalles de más bajo nivel.

Es muy probable que estemos próximos
a ver un nuevo paso evolutivo en la ingeniería de software. Tan grande como el invento de lenguajes de alto nivel o análisis y diseño orientado a objetos. Una nueva generación que absorberá a la actual, automatizando la mayoría de las buenas prácticas usadas actualmente.
Una pregunta natural es si una máquina
puede llegar a generar programas tan buenos como los hechos por un programador
experto. En vez de “romper la cabeza” con esta pregunta ahora, quizás sería suficiente recordarse otra vez de la historia. Los primeros compiladores de ninguna generación alcanzaban de inmediato
lo deseable y óptimo. Sin embargo, con el paso del tiempo, apoyados en la experiencia
de los ingenieros y en el avance tecnológico, se mejoraban hasta el nivel de superar significativamente las generaciones
anteriores. Es poco factible que hoy en día alguien cuestione la calidad de los compiladores
de, por ejemplo, Java y la calidad del código de máquina generado por ellos.

No hay comentarios:

Publicar un comentario