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
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
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

Mda informatica

  • 1.
    Tecnografía DESARROLLO El futuro dela 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íade 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