You are on page 1of 3

Tecnografa

DESARROLLO

El futuro de la ingeniera de software

El diseo de programas a partir de informacin binaria signific un paso sustantivo para la industria desarrolladora de software. Desde ese hallazgo, ocurrido en la dcada de los cincuenta, hasta hoy, el crecimiento de metodologas para su desarrollo ha subido notablemente en complejidad. Sin embargo, los circulos viciosos que acusa hoy la confeccin de programas informticos, impiden conceptualizar el objeto a un nivel superior de abstraccin, tal y como lo exige el avance tecnolgico y los procesos de negocios. El siguiente artculo sondea el futuro de la ingeniera, a la luz de su propia evolucin.

Por Aleksandar Orlic.

a calidad de los sistemas informticos, satisfaccin de sus usuarios y clientes, son temas ampliamente conocidos, recurrentes y de constante preocupacin por parte de los practicantes de la Ingeniera de software. Esta joven y dinmica ingeniera siempre est en busca de mejoras en el desarro-

llo de sistemas, aumento de productividad del ingeniero de software, mayor control del proceso de desarrollo, establecimiento de nuevos mtodos 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 ingeniera, analizar su contexto actual y, finalmente, proyectar hacia dnde se dirige, es el pilar de este artculo.

algo de historia
La evolucin del desarrollo de software ha empezado por las tarjetas perforadas (Fig.
Informtica

35

Tecnografa
1) en la dcada de los cuarenta, cuando los desarrolladores deban conocer detalles de bajo nivel de la mquina que ejecutaba los Fig. 1: Primeros programas computacio- programas. La sonales en formato de tarjeta perforada. lucin desarrollada era para pequeos problemas y muy ligada a la mquina que ejecutaba el programa. En la dcada de los cincuenta se avanz a la confeccin de programas que contenan informacin binaria (Fig. 2). La solucin desarrollada abordaba problemas de mayor magnitud y complejidad. Se logra la primera separacin entre el programador y la mquina. En la dcada de los sesenta hacen su aparicin los lenguajes estructurados (Fig. 3). Los programas se escriban en un lenguaje que se pareca al lenguaje hablado. Las soluciones desarrolladas involucraban principalmente frmulas y clculos matemticos. La separacin entre el programador y la mquina es evidente, quedando sta en un plano inferior al momento de desarrollar una solucin. software creados hoy en da son los llamados sistemas corporativos; es decir, son orientados a formar una parte importante de los negocios de las grandes empresas. Continuando en nuestro contexto, se identifica un nuevo enfoque del problema de desarrollo, el apoyo en la sincronizacin de los procesos de negocio, estructuras complejas de informacin manejada por el negocio, todo esto entrelazado por restricciones dadas por las reglas del negocio. La tecnologa actual, por otro lado, ha alejado ms todava los ingenieros de las mquinas, sistemas operativos, incluso de las tareas de programacin. El enfoque de la mayora de los equipos de desarrollo e ingenieros, participes en proyectos, sigue siendo con un bajo nivel de abstraccin, cerca de la codificacin. Se tiende a pensar en la base de datos a utilizar, establecer la navegacin de las pginas, programar los protocolos de comunicacin, etc. Esto lleva a utilizar las tareas de programacin y de pruebas para validar el entendimiento y cumplimiento de la funcionalidad de los sistemas. Lo anteriormente expuesto muestra un problema metodolgico, consecuencia de un desfase entre el enfoque terico ptimo (anlisis de negocio) y el enfoque prctico real (programacin y pruebas) en los proyectos de hoy. En otras palabras, la metodologa actualmente usada est atrasada con respecto al avance tecnolgico. Desarrollando ms esta idea, se identifican algunos problemas concretos de las metodologas: - Ellas no obligan a sus ejecutores a respetar todas las normas y los procedimientos establecidos, especialmente en las etapas tempranas del proyecto. Es muy fcil y tentador saltar una o ms de estas etapas, uno o ms documentos o modelos, pasando directamente a implementacin, produccin y posterior correccin de los sistemas desarrollados. - Control de calidad del producto final. La codificacin y complejidad del programa, es demasiada para ser revisada y verificada fehacientemente. Por otro lado, los cdigos fuentes y los ejecutables actualmente son los nicos entregables eficientemente verificables. Estos dos problemas al parecer forman una situacin contradictoria: la metodologa tradicional no permite validar eficientemente la calidad de los sistemas antes de llegar al cdigo fuente y, por otro lado, tampoco permite llegar eficientemente a cdigos fuentes de calidad. se propone es bastante natural: analizar la situacin actual de la ingeniera de software en la luz de sus tendencias histricas. 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 slo resuelven los problemas del mundo real, sino que estn fuertemente influenciando el desarrollo del mundo real. El enfoque de los ingenieros, desde hace unos aos, no se ha movido significativamente por el camino del aumento de abstraccin establecido histricamente. Se han hecho ciertos avances en temas puntuales (como arquitecturas de componentes, patrones de diseo, nuevos lenguajes de programacin, etc.), pero conceptualmente, metodolgicamente, la tarea de programacin sigue siendo ejecutada de la misma forma: escribiendo cdigos fuentes en forma de los programas textuales. ste es, justamente, el atraso metodolgico que se mencion. Para disminuir la brecha entre las tendencias histricas, es necesario ajustar la metodologa, en trminos de aumentar la abstraccin del enfoque de los ingenieros de software y acercarlo a la abstraccin del problema. El aumento de la abstraccin del proceso de desarrollo del software hace pensar que la prxima generacin de mtodos de desarrollo se perfila en un conceptualmente nuevo conjunto de herramientas, que permitan aumentar en un mayor grado al actual la abstraccin, escondiendo los detalles de ms bajo nivel.

Fig. 2: Lenguaje de mquina como secuencia de 0s y 1s.

Al analizar la evolucin de la ingeniera de software, se detectan dos tendencias. La primera tiene en cuenta la solucin de problemas a gran magnitud y complejidad, acercndose al mundo real y estableciendo una lejana con mquina. La otra, tiene relacin con el enfoque abstractivo, dejando escondidos los detalles de tecnologas de bajo nivel. Con respecto a la metodologa de desarrollo de software (o proceso de desarrollo), a lo largo del tiempo es notable el crecimiento en su complejidad e importancia. Desde un solo ingeniero que preparaba la tarjeta perforada, la instalaba y la usaba, se lleg a los proyectos de software de varios aos de duracin, con los ejercicios de ingenieros de muchas especialidades realizando distintas tareas. En estas condiciones, la aplicacin de una buena metodologa se hace indispensable.

Fig. 3: Lenguaje estructurado se parece al lenguaje natural.

actualidad
La gran mayora de los sistemas de

futuro
La salida de este crculo vicioso que

Las nuevas herramientas permitirn programar en nivel de anlisis, generando cdigos en un lenguaje de programacin tradicional de forma automtica, tal como hoy los compiladores generan el lenguaje mquina a partir del cdigo fuente. Nuevos lenguajes de programacin naturalmente seran visuales y se pareceran a las especificaciones de software en uno de los lenguajes de modelamiento, por ejemplo UML (Fig. 4). De hecho, hoy en da existe una tendencia que ya est formalizando este paso evolutivo

36 Informtica

Tecnografa
en la ingeniera de software. Se llama MDA (Model Driven Architecture) y es establecida por el OMG (Object Management Group), la institucin duea de UML, el lenguaje estndar de modelamiento de software. Finalmente, cmo estas mejoras influyen en el crculo vicioso? Por un lado, nuevas herramientas obligarn a los ingenieros a prestar mayor atencin a los modelos de ms alto nivel, que al cdigo fuente, y no saltar etapas tempranas del proyecto. Por otro lado, los modelos generados seran perfectamente verificables y no se tendra que esperar la codificacin y las pruebas para identificar errores funcionales.

conclusin
Es muy probable que estemos prximos a ver un nuevo paso evolutivo en la ingeniera de software. Tan grande como el invento de lenguajes de alto nivel o anlisis y diseo orientado a objetos. Una nueva generacin que absorber a la actual, automatizando la mayora de las buenas prcticas usadas actualmente. Una pregunta natural es si una mquina puede llegar a generar programas tan buenos como los hechos por un programador experto. En vez de romper la

cabeza con esta pregunta ahora, quizs sera suficiente recordarse otra vez de la historia. Los primeros compiladores de ninguna generacin 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 tecnolgico, se mejoraban hasta el nivel de superar significativamente las generaciones anteriores. Es poco factible que hoy en da alguien cuestione la calidad de los compiladores de, por ejemplo, Java y la calidad del cdigo de mquina generado por ellos.

Fig. 4: Probable modelo a futuro.

Aleksandar Orlic Aleksandar Orlic es ingeniero de electrotcnica con un postgrado en Arquitectura de Sistemas. En la actualidad, es consultor principal y socio fundador de Craftware Consultores.

Informtica

37

You might also like