El documento discute el futuro de la ingeniería de software. Actualmente, los ingenieros se enfocan demasiado en la codificación en lugar de niveles más altos de abstracción, y las metodologías existentes no garantizan la calidad del producto final antes de la codificación. El autor argumenta que el futuro incluirá herramientas que permitan "programar" a niveles más altos de abstracción y generar automáticamente código, superando estos problemas.
1. Tecnografía
DESARROLLO
El futuro de la ingeniería de
software
El diseño de programas a partir de información binaria significó un paso sustantivo para
la industria desarrolladora de software. Desde ese hallazgo, ocurrido en la década de
los cincuenta, hasta hoy, el crecimiento de metodologías para su desarrollo ha subido
notablemente en complejidad. Sin embargo, los circulos viciosos que acusa hoy la con-
fección de programas informáticos, impiden conceptualizar el objeto a un nivel superior
de abstracción, tal y como lo exige el avance tecnológico y los procesos de negocios. El
siguiente artículo sondea el futuro de la ingeniería, a la luz de su propia evolución.
Por Aleksandar Orlic.
L
a calidad de los sistemas informá- llo de sistemas, aumento de productividad esta ingeniería, analizar su contexto actual
ticos, satisfacción de sus usuarios del ingeniero de software, mayor control y, finalmente, proyectar hacia dónde se
y clientes, son temas ampliamente del proceso de desarrollo, establecimiento dirige, es el pilar de este artículo.
conocidos, recurrentes y de constante pre- de nuevos métodos de desarrollo. Estos ele-
ocupación por parte de los practicantes de mentos, combinados y aplicados de buena • algo de historia
la Ingeniería de software. forma, logran un buen proceso de desarro-
Esta joven y dinámica ingeniería siem- llo y, en definitiva, un buen producto. La evolución del desarrollo de software
pre está en busca de mejoras en el desarro- Identificar los pasos que ha recorrido ha empezado por las tarjetas perforadas (Fig.
Informática 35
2. Tecnografía
1) en la década de software creados hoy en día son los lla- se propone es bastante natural: analizar la
los cuarenta, cuan- mados sistemas corporativos; es decir, son situación actual de la ingeniería de software
do los desarrollado- orientados a formar una parte importante en la luz de sus tendencias históricas.
res debían conocer de los negocios de las grandes empresas. La primera de ellas, relacionada con
detalles de bajo Continuando en nuestro contexto, se los problemas que resuelven los sistemas,
nivel de la máquina identifica un nuevo enfoque del problema de obviamente presente y muy utilizada en
que ejecutaba los desarrollo, el apoyo en la sincronización de los nuestra realidad: los sistemas de hoy no
Fig. 1: Primeros programas computacio- programas. La so- procesos de negocio, estructuras complejas sólo resuelven los problemas del mundo
nales en formato de tarjeta perforada. lución desarrollada de información manejada por el negocio, todo real, sino que están fuertemente influen-
era para pequeños esto entrelazado por restricciones dadas por ciando el desarrollo del mundo real.
problemas y muy ligada a la máquina que las reglas del negocio. La tecnología actual, El enfoque de los ingenieros, desde
ejecutaba el programa. por otro lado, ha alejado más todavía los inge- hace unos años, no se ha movido signifi-
En la década de los cincuenta se avanzó a nieros de las máquinas, sistemas operativos, cativamente por el camino del aumento de
la confección de programas que contenían in- incluso de las tareas de programación. abstracción establecido históricamente. Se
formación binaria (Fig. 2). La solución desarro- El enfoque de la mayoría de los equipos han hecho ciertos avances en temas pun-
llada abordaba problemas de mayor magnitud de desarrollo e ingenieros, participes en pro- tuales (como arquitecturas de componen-
y complejidad. Se logra la primera separación yectos, sigue siendo con un bajo nivel de abs- tes, patrones de diseño, nuevos lenguajes
entre el programador y la máquina. tracción, cerca de la codificación. Se tiende a de programación, etc.), pero conceptual-
En la década de los sesenta hacen su apa- pensar en la base de datos a utilizar, establecer mente, metodológicamente, la tarea de
rición los lenguajes estructurados (Fig. 3). Los la navegación de las páginas, programar los programación sigue siendo ejecutada de la
programas se escribían en un lenguaje que se protocolos de comunicación, etc. Esto lleva misma forma: escribiendo códigos fuentes
parecía al lenguaje hablado. Las soluciones a utilizar las tareas de programación y de en forma de los programas textuales.
desarrolladas involucraban principalmente pruebas para validar el entendimiento y cum- Éste es, justamente, el “atraso” meto-
fórmulas y cálculos matemáticos. La sepa- plimiento de la funcionalidad de los sistemas. dológico que se mencionó. Para disminuir
ración entre el programador y la máquina es Lo anteriormente expuesto muestra la brecha entre las tendencias históricas,
evidente, quedando ésta en un plano inferior un problema metodológico, consecuencia es necesario ajustar la metodología, en
al momento de desarrollar una solución. de un desfase entre el enfoque teórico términos de aumentar la abstracción del
óptimo (análisis de negocio) y el enfoque enfoque de los ingenieros de software y
práctico real (programación y pruebas) en acercarlo a la abstracción del problema.
los proyectos de hoy. En otras palabras, la El aumento de la abstracción del proceso
metodología actualmente usada está atra- de desarrollo del software hace pensar que la
sada con respecto al avance tecnológico. próxima generación de métodos de desarrollo
Desarrollando más esta idea, se iden- se perfila en un conceptualmente nuevo con-
tifican algunos problemas concretos de las junto de herramientas, que permitan aumen-
metodologías: tar en un mayor grado al actual la abstracción,
- Ellas no obligan a sus ejecutores a respetar escondiendo los detalles de más bajo nivel.
Fig. 2: Lenguaje de máquina como secuencia todas las normas y los procedimientos esta-
de 0’s y 1’s.
blecidos, especialmente en las etapas tem-
Al analizar la evolución de la ingeniería pranas del proyecto. Es muy fácil y tentador
de software, se detectan dos tendencias. La “saltar” una o más de estas etapas, uno o más
primera tiene en cuenta la solución de pro- documentos o modelos, pasando directamen-
blemas a gran magnitud y complejidad, acer- te a implementación, producción y posterior
cándose al mundo real y estableciendo una corrección de los sistemas desarrollados.
lejanía con máquina. La otra, tiene relación - Control de calidad del producto final. La
con el enfoque abstractivo, dejando escondi- codificación y complejidad del programa,
dos los detalles de tecnologías de bajo nivel. es demasiada para ser revisada y verificada
Con respecto a la metodología de desa- fehacientemente. Por otro lado, los códi-
rrollo de software (o proceso de desarrollo), a gos fuentes y los ejecutables actualmente Fig. 3: Lenguaje estructurado se parece al len-
lo largo del tiempo es notable el crecimiento son los únicos entregables eficientemente guaje natural.
en su complejidad e importancia. Desde un verificables. Las nuevas herramientas permitirán
solo ingeniero que preparaba la tarjeta perfo- Estos dos problemas al parecer forman “programar” en nivel de análisis, generando
rada, la instalaba y la usaba, se llegó a los pro- una situación contradictoria: la metodolo- códigos en un lenguaje de programación tradi-
yectos de software de varios años de duración, gía tradicional no permite validar eficien- cional de forma automática, tal como hoy los
con los ejercicios de ingenieros de muchas temente la calidad de los sistemas antes compiladores generan el lenguaje máquina a
especialidades realizando distintas tareas. En de llegar al código fuente y, por otro lado, partir del código fuente. Nuevos “lenguajes de
estas condiciones, la aplicación de una buena tampoco permite llegar eficientemente a programación” naturalmente serían visuales y
metodología se hace indispensable. códigos fuentes de calidad. se parecerían a las especificaciones de soft-
ware en uno de los lenguajes de modelamien-
• actualidad • futuro to, por ejemplo UML (Fig. 4).
De hecho, hoy en día existe una tendencia
La gran mayoría de los sistemas de La salida de este “círculo vicioso” que que ya está formalizando este paso evolutivo
36 Informática
3. Tecnografía
en la ingeniería de software. Se llama MDA
(Model Driven Architecture) y es establecida
por el OMG (Object Management Group),
la institución dueña de UML, el lenguaje
estándar de modelamiento de software.
Finalmente, ¿cómo estas mejoras in-
fluyen en el “círculo vicioso”? Por un lado,
nuevas herramientas obligarán a los ingenie-
ros a prestar mayor atención a los modelos
de más alto nivel, que al código fuente, y no
“saltar” etapas tempranas del proyecto. Por
otro lado, los modelos generados serían per-
fectamente verificables y no se tendría que
esperar la codificación y las pruebas para
identificar errores funcionales.
• conclusión
cabeza” con esta pregunta ahora, quizás Fig. 4: Probable modelo a futuro.
Es muy probable que estemos próxi- sería suficiente recordarse otra vez de la
mos a ver un nuevo paso evolutivo en la historia. Los primeros compiladores de
ingeniería de software. Tan grande como el ninguna generación alcanzaban de inme-
invento de lenguajes de alto nivel o análisis diato lo deseable y óptimo. Sin embargo,
y diseño orientado a objetos. Una nueva con el paso del tiempo, apoyados en la ex-
generación que absorberá a la actual, periencia de los ingenieros y en el avance Aleksandar Orlic
automatizando la mayoría de las buenas tecnológico, se mejoraban hasta el nivel de
prácticas usadas actualmente. superar significativamente las generacio- Aleksandar Orlic es ingeniero de elec-
Una pregunta natural es si una má- nes anteriores. Es poco factible que hoy en trotécnica con un postgrado en Arqui-
quina puede llegar a generar programas día alguien cuestione la calidad de los com- tectura de Sistemas. En la actualidad,
tan buenos como los hechos por un pro- piladores de, por ejemplo, Java y la calidad es consultor principal y socio funda-
gramador experto. En vez de “romper la del código de máquina generado por ellos. dor de Craftware Consultores.
Informática 37