La ingeniería del software nace como una disciplina para aplicar los principios técnicas y herramientas para el desarrollo del software, surgió porque todos los desarrolladores en la década de los años 1980, realizaban el software de forma artesanal, es decir utilizando métodos y técnicas adhoc donde la experiencia, basada en el ensayo-error, era el camino a seguir. Este enfoque produjo grandes y exitosos productos de programación pero conforme los proyectos se volvieron más complejos debido al avance del hardware y software y la penetración cada vez mayor de la informática en todos los ámbitos de la sociedad, llevó a que se produjera software sin calidad, se incumplieran los presupuestos y se incrementara dramáticamente los costos de mantenimiento.
La solución propuesta fue aplicar métodos y principios utilizados y probados en el desarrollo de productos software para conseguir de forma inequívoca productos que corran eficientemente y se ejecuten sobre máquinas reales. En la década de los años 1970 surgieron una gran variedad de metodologistas y metodologías entre ellos se destacan Yourdon y Demarco cuyas investigaciones se basaban en los principios de la programación estructurada. En los años 1980 y 1990 el paradigma estructurado evolucionó hacia el paradigma orientado a objetos, en el período de 1989 y 1994 se creó la llamada guerra de métodos dentro de la comunidad orientada a objetos existiendo un incremento de menos de diez a más de cincuenta metodologías, es así que los desarrolladores de software quedaron muy confundidos sin saber cual era la metodología más adecuada para elaborar sus proyectos.
El “lenguaje de modelado unificado” es un lenguaje que permite modelar, construir y documentar los elementos que forman un sistema software orientado a objetos. Se ha convertido en el estándar de facto de la industria, debido a que fue concebido por los autores de los tres métodos más utilizados de la orientación a objetos: Grady Booch, Ivar Jacobson y Jim Rumbaugh. Estos autores fueron contratados por la empresa Rational Software Co. para crear una notación unificada en la que basar la construcción de sus herramientas de ayuda a la ingeniería del software. En el proceso de creación del lenguaje de modelado unificado han participado, no obstante, otras empresas de gran peso en la industria como Microsoft, Hewlett-Packard, Oracle e IBM, así como grupos de analistas y desarrolladores. Esta notación ha sido ampliamente aceptada debido al prestigio de sus creadores y debido a que incorpora las principales ventajas de cada uno de los métodos particulares en los que se basa: Booch, OMT y OOSE. El lenguaje de modelado unificado ha puesto fin a la llamada “guerra de métodos” que se ha mantenido a lo largo de los años 1990, en las que los principales métodos sacaban nuevas versiones que incorporaban las técnicas de los demás. Con el lenguaje de modelado unificado se fusiona la notación de estas técnicas para formar una herramienta compartida entre todos los ingenieros del software que trabajan en el desarrollo orientado a objetos.
El objetivo principal cuando se empezó a gestar el lenguaje de modelado unificado era posibilitar el intercambio de modelos entre las distintas herramientas para ayuda a la ingeniería del software orientada a objetos del mercado. Para ello era necesario definir una notación y semántica común. Se debe tomar en cuenta que el estándar UML no define un proceso de desarrollo específico, tan solo se trata de una notación. Una buena parte de los ingenieros del software se inclinan por utilizar el proceso propuesto por Craig Larman el año 1999 que se ajusta a un ciclo de vida evolutivo e incremental dirigido por casos de uso.
Es importante resaltar que el lenguaje de modelado unificado es un “modelo” para especificar y no para describir métodos o procesos. Se utiliza para definir un sistema de software, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo. Se puede aplicar en una gran variedad de formas para dar soporte a una metodología de desarrollo de software, tal como el Proceso Unificado Racional, pero no especifica en sí mismo qué metodología o proceso utilizar de manera exclusiva. El lenguaje de modelado unificado no puede compararse con la programación estructurada, pues este lenguaje no es un lenguaje de programación, solo diagrama la realidad de un requerimiento. Mientras que, la programación estructurada, es un elemento útil para el diseño de procedimientos o programas como lo es la orientación a objetos, sin embargo, la orientación a objetos viene siendo un complemento perfecto del lenguaje de modelado.
El lenguaje de modelado unificado cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las entidades representadas. En la versión 2.0 del lenguaje de modelado unificado hay 13 tipos diferentes de diagramas. Para comprenderlos de manera concreta, a veces es útil categorizar jerárquicamente, en este entendido los diagramas del lenguaje de modelado unificado se dividen en tres grandes grupos: (1) Los diagramas de estructura, que enfatizan en los elementos que deben existir en el sistema modelado. Estos a su vez comprenden los siguientes diagramas: diagrama de clases, diagrama de componentes, diagrama de objetos, diagrama de estructura compuesta, diagrama de despliegue y diagrama de paquetes. (2) Los diagramas de comportamiento, enfatizan en lo que debe suceder en el sistema modelado, estos comprenden los siguientes diagramas: diagrama de actividades, diagrama de casos de uso y diagrama de estados. (3) Los diagramas de interacción, son un subtipo de diagramas de comportamiento, que enfatiza sobre el flujo de control y de datos entre los elementos del sistema modelado. Estos diagramas comprenden los siguientes diagramas: diagrama de secuencia, diagrama de colaboración, diagrama de tiempos y diagrama de vista de interacción.
Algunos de los programas más populares para el modelado en el lenguaje de modelado unificado, utilizando software libre, son: (1) ArgoUML. Herramienta de modelado escrito en Java. (2) BOUML. Es una herramienta de lenguaje de modelado unificado y genera código en lenguaje C++, Java e IDL. Disponible para Windows, Unix/Linux y Mac OS. (3) Fujaba. No solo sirve para modelar sino que puede generar código Java automáticamente. También es capaz de hacer ingeniería inversa y crear los diagramas a partir de código Java. (4) Dia. Puede ser usado para modelar varios tipos de diagramas del lenguaje de modelado unificado. (5) gModeler. Herramienta para modelado del lenguaje de modelado unificado basada en Flash, utilizable desde el navegador, que permite generar código Action Script 2.0 Compatible (6) MonoUML. Herramienta de ayuda a la ingeniería del software para la plataforma mono. (7) Papyrus. Herramienta gráfica basada en Eclipse para el modelado con el lenguaje de modelado unificado, es de código abierto y se ofrece bajo licencia EPL. (8) StarUML. Herramienta de modelado para Windows desarrollada en Delphi. Bastante estable y utilizable. (9) TCM. Herramienta para crear diversos tipos de diagramas incluidos el lenguaje de modelado unificado. (10) Umbrello. Herramienta para modelar el lenguaje de modelado unificado para el entorno KDE. (11) UMLet. Herramienta para el modelado rápido del lenguaje de modelado unificado, también escrita en Java.
La solución propuesta fue aplicar métodos y principios utilizados y probados en el desarrollo de productos software para conseguir de forma inequívoca productos que corran eficientemente y se ejecuten sobre máquinas reales. En la década de los años 1970 surgieron una gran variedad de metodologistas y metodologías entre ellos se destacan Yourdon y Demarco cuyas investigaciones se basaban en los principios de la programación estructurada. En los años 1980 y 1990 el paradigma estructurado evolucionó hacia el paradigma orientado a objetos, en el período de 1989 y 1994 se creó la llamada guerra de métodos dentro de la comunidad orientada a objetos existiendo un incremento de menos de diez a más de cincuenta metodologías, es así que los desarrolladores de software quedaron muy confundidos sin saber cual era la metodología más adecuada para elaborar sus proyectos.
El “lenguaje de modelado unificado” es un lenguaje que permite modelar, construir y documentar los elementos que forman un sistema software orientado a objetos. Se ha convertido en el estándar de facto de la industria, debido a que fue concebido por los autores de los tres métodos más utilizados de la orientación a objetos: Grady Booch, Ivar Jacobson y Jim Rumbaugh. Estos autores fueron contratados por la empresa Rational Software Co. para crear una notación unificada en la que basar la construcción de sus herramientas de ayuda a la ingeniería del software. En el proceso de creación del lenguaje de modelado unificado han participado, no obstante, otras empresas de gran peso en la industria como Microsoft, Hewlett-Packard, Oracle e IBM, así como grupos de analistas y desarrolladores. Esta notación ha sido ampliamente aceptada debido al prestigio de sus creadores y debido a que incorpora las principales ventajas de cada uno de los métodos particulares en los que se basa: Booch, OMT y OOSE. El lenguaje de modelado unificado ha puesto fin a la llamada “guerra de métodos” que se ha mantenido a lo largo de los años 1990, en las que los principales métodos sacaban nuevas versiones que incorporaban las técnicas de los demás. Con el lenguaje de modelado unificado se fusiona la notación de estas técnicas para formar una herramienta compartida entre todos los ingenieros del software que trabajan en el desarrollo orientado a objetos.
El objetivo principal cuando se empezó a gestar el lenguaje de modelado unificado era posibilitar el intercambio de modelos entre las distintas herramientas para ayuda a la ingeniería del software orientada a objetos del mercado. Para ello era necesario definir una notación y semántica común. Se debe tomar en cuenta que el estándar UML no define un proceso de desarrollo específico, tan solo se trata de una notación. Una buena parte de los ingenieros del software se inclinan por utilizar el proceso propuesto por Craig Larman el año 1999 que se ajusta a un ciclo de vida evolutivo e incremental dirigido por casos de uso.
Es importante resaltar que el lenguaje de modelado unificado es un “modelo” para especificar y no para describir métodos o procesos. Se utiliza para definir un sistema de software, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo. Se puede aplicar en una gran variedad de formas para dar soporte a una metodología de desarrollo de software, tal como el Proceso Unificado Racional, pero no especifica en sí mismo qué metodología o proceso utilizar de manera exclusiva. El lenguaje de modelado unificado no puede compararse con la programación estructurada, pues este lenguaje no es un lenguaje de programación, solo diagrama la realidad de un requerimiento. Mientras que, la programación estructurada, es un elemento útil para el diseño de procedimientos o programas como lo es la orientación a objetos, sin embargo, la orientación a objetos viene siendo un complemento perfecto del lenguaje de modelado.
El lenguaje de modelado unificado cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las entidades representadas. En la versión 2.0 del lenguaje de modelado unificado hay 13 tipos diferentes de diagramas. Para comprenderlos de manera concreta, a veces es útil categorizar jerárquicamente, en este entendido los diagramas del lenguaje de modelado unificado se dividen en tres grandes grupos: (1) Los diagramas de estructura, que enfatizan en los elementos que deben existir en el sistema modelado. Estos a su vez comprenden los siguientes diagramas: diagrama de clases, diagrama de componentes, diagrama de objetos, diagrama de estructura compuesta, diagrama de despliegue y diagrama de paquetes. (2) Los diagramas de comportamiento, enfatizan en lo que debe suceder en el sistema modelado, estos comprenden los siguientes diagramas: diagrama de actividades, diagrama de casos de uso y diagrama de estados. (3) Los diagramas de interacción, son un subtipo de diagramas de comportamiento, que enfatiza sobre el flujo de control y de datos entre los elementos del sistema modelado. Estos diagramas comprenden los siguientes diagramas: diagrama de secuencia, diagrama de colaboración, diagrama de tiempos y diagrama de vista de interacción.
Algunos de los programas más populares para el modelado en el lenguaje de modelado unificado, utilizando software libre, son: (1) ArgoUML. Herramienta de modelado escrito en Java. (2) BOUML. Es una herramienta de lenguaje de modelado unificado y genera código en lenguaje C++, Java e IDL. Disponible para Windows, Unix/Linux y Mac OS. (3) Fujaba. No solo sirve para modelar sino que puede generar código Java automáticamente. También es capaz de hacer ingeniería inversa y crear los diagramas a partir de código Java. (4) Dia. Puede ser usado para modelar varios tipos de diagramas del lenguaje de modelado unificado. (5) gModeler. Herramienta para modelado del lenguaje de modelado unificado basada en Flash, utilizable desde el navegador, que permite generar código Action Script 2.0 Compatible (6) MonoUML. Herramienta de ayuda a la ingeniería del software para la plataforma mono. (7) Papyrus. Herramienta gráfica basada en Eclipse para el modelado con el lenguaje de modelado unificado, es de código abierto y se ofrece bajo licencia EPL. (8) StarUML. Herramienta de modelado para Windows desarrollada en Delphi. Bastante estable y utilizable. (9) TCM. Herramienta para crear diversos tipos de diagramas incluidos el lenguaje de modelado unificado. (10) Umbrello. Herramienta para modelar el lenguaje de modelado unificado para el entorno KDE. (11) UMLet. Herramienta para el modelado rápido del lenguaje de modelado unificado, también escrita en Java.
En su visión general, el lenguaje de modelado unificado, se utiliza para (1) Visualizar. Para muchos programadores, la distancia entre pensar en el diseño de un requerimiento y transformarlo en código es casi cero. Según estos programadores lo que utilizan es “lo piensas, lo codificas”. De hecho, algunas cosas pequeñas se modelan mejor directamente en código, El texto es un medio maravilloso para escribir expresiones y algoritmos de forma concisa y directa. En tales casos, el programador todavía esta haciendo algo de modelado, si bien lo hace en una forma complemente mental. Incluso puede bosquejar algunas ideas sobre una pizarra blanca o sobre una servilleta. Sin embargo, esto plantea bastantes problemas, especialmente cuando los problemas ya no son de juguete. (2) Especificar. En este contexto, especificar significa construir modelos precisos, no ambiguos y completos. En particular, el lenguaje de modelado unificado cubre la especificación de todas las decisiones de análisis, diseño e implementación que deben realizarse al desarrollar y desplegar un sistema con gran cantidad de software. (3) Construir. El lenguaje de modelado unificado no es un lenguaje de programación visual, pero sus modelos pueden conectarse de forma directa a una gran variedad de lenguajes de programación. Las cosas que se expresan mejor gráficamente también se representan gráficamente en el lenguaje de modelado unificado, mientras que las cosas que se expresan mejor textualmente se plasman con un lenguaje de programación. (4) Documentar. Una organización de software que trabaje bien produce toda clase de artefactos, incluida su documentación, además de código ejecutable.
Guillermo Choque Aspiazu
http://www.eldiario.net/
Agosto 25 de 2008