UML presenta un conjunto de notaciones y diagramas estándarizados para modelar sistemas, y describe la semántica esencial de lo que estos diagramas y símbolos significan. Anteriormente se manejaban diversas notaciones y métodos para el modelado, ahora se cuenta con una única notación. Este estándar ofrece nueve diagramas en los cuales modelar sistemas.
• Diagramas de Casos de Uso para modelar los procesos ’business’.
• Diagramas de Secuencia para modelar el paso de mensajes entre objetos.
• Diagramas de Colaboración para modelar interacciones entre objetos.
• Diagramas de Estado para modelar el comportamiento de los objetos en el sistema.
• Diagramas de Actividad para modelar el comportamiento de los Casos de Uso, objetos u operaciones.
• Diagramas de Clases para modelar la estructura estática de las clases en el sistema.
• Diagramas de Objetos para modelar la estructura estática de los objetos en el sistema.
• Diagramas de Componentes para modelar componentes.
• Diagramas de Implementación para modelar la distribución del sistema.
UML es una de las propuestas más exitosas de una notación estándar para describir los diferentes elementos que componen el software. La utilización de una notación estándar para describir las aplicaciones es de vital importancia en la ingeniería de software, ya que además de dibujar una suerte de "mapa" de las aplicaciones, facilita la colaboración en los equipos de desarrollo, ya que en teoría, dada una buena documentación UML, cualquier desarrollador podría entender rápidamente las interacciones entre los componentes de un sistema, los elementos que lo componen, los flujos de datos, etc.
El UML se puede utilizar para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir, es el lenguaje en el cual está descrito el modelo, es un lenguaje para especificar y no para describir métodos o procesos. 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, pero no especifica en sí mismo qué metodología o proceso usar.
Los principales beneficios de UML son:
- Mejores tiempos totales de desarrollo (de 50 % o más).
- Modelar sistemas (y no sólo de software) utilizando conceptos orientados a objetos.
- Establecer conceptos y artefactos ejecutables.
- Encaminar el desarrollo del escalamiento en sistemas complejos de misión crítica.
- Crear un lenguaje de modelado utilizado tanto por humanos como por máquinas.
- Mejor soporte a la planeación y al control de proyectos.
- Alta reutilización y minimización de costos.
- Produce un aumento en la calidad del desarrollo.
- Permite especificar la estructura y el comportamiento del sistema y comunicarlo a todos los integrantes del proyecto.
- Brinda la posibilidad de obtener un "plano" del sistema.
- Permite dimensionar mejor los riesgos de un proyecto tener un mejor rendimiento antes de construir el sistema.
- Facilita la documentación de las decisiones de la arquitectura del proyecto.
- Ofrece un mejor soporte a la planificación y control del proyecto.
- Ofrece mayor rigurosidad en la especificación.
- Permite realizar una verificación y validación del modelo realizado.
- Se pueden automatizar determinados procesos y permite generar código a partir de los modelos y viceversa.
Motivado a que los diagramas preexistentes no logran adaptarse perfectamente a las particularidades de cada aplicación, parte de la especificación del UML se dedica a definir mecanismos de extensión con miras a incrementar el campo de aplicación del lenguaje.
Entre estos mecanismos, tenemos los llamados Estereotipos los cuales añaden pequeñas etiquetas a los elementos o relaciones de un diagrama otorgándoles un nuevo significado. Es decir, que por medio de los estereotipos vamos a poder aplicar las herramientas UML a nuevas áreas de modelado, presuponiendo que estas áreas trabajan con los conceptos básicos del lenguaje y requieren solo de expresar las ideas propias del sector.
Con los estereotipos, se reducen las limitantes atadas a lo estricto que pudieran resultar los diagramas que conocemos seguidos al pie de la letra con las notaciones formales conocidas. Siendo UML un lenguaje visual, como parte de la definición de un estereotipo podemos incluir una imagen o icono de manera de hacer más atractivos y legibles a nuestros diagramas. De hecho, cuando vemos un diagrama UML con imágenes ocupando el lugar de elementos, lo que estamos viendo es en realidad, elementos estereotipados.
Aunque para Windows disponemos de muchas herramientas que nos facilitarían el trabajo al momento de modelar UML, y al menos se que se puede utilizar StarUML mediante el emulador Wine, para GNU/Linux, se puede encontrar que las mas completas son: ArgoUML, BOUML, Dia y UMBRELLO.
ArgoUML: Es una aplicación de diagramado de UML escrita en Java y publicada bajo la Licencia BSD. Dado que es una aplicación Java, está disponible en cualquier plataforma soportada por Java. Incluye el apoyo a todos los estándares de diagramas UML 1.4.
BOUML: Es una herramienta que permite modelar UML 2 y a su vez especificar y generar código en C++, Java, IDL, PHP y Python. Es multiplataforma pues corre en Unix / Linux / Solaris, MacOS X (Power PC e Intel) y Windows. De acuerdo a la información presentada en su página principal, es muy rápido y no requiere mucha memoria para manejar varios miles de clases. Además permite añadir aplicaciones externas escritas en C++ o Java, siendo una de estas extensiones predefinidas la generación de código y la ingeniería inversa.
Dia: Esta basado en GTK+ bajo la licencia GPL. Se inspira en el programa comercial de Windows ‘Visio’, y puede ser usado para dibujar muchos tipos diferentes de diagramas. Dispone de una serie de extensiones para ayudar en la elaboración de diagramas entidad-interrelación, UML, flujo de datos, diagramas de red, entre otros etc.
UMBRELLO: De acuerdo a muchos artículos, es una de las herramientas más intuitivas para aquellos que están pocos acostumbrados a trabajar con UML. Guarda la estética común a todos los programas desarrollados para y por KDE, aunque también puede funcionar en entornos GNOME. Soporta la generación de código a partir del modelo de elementos y los diagramas para un gran número de lenguajes (Java, PHP, C++, XML, etc.).
También encontramos que UML presenta una serie de debilidades:
- UML no te va a decir cómo pasar del análisis al diseño y de este al código. No son una serie de pasos que te llevan a producir código a partir de unas especificaciones.
- UML al no ser un método de desarrollo es independiente del ciclo de desarrollo que vayas a seguir, puede encajar en un tradicional ciclo en cascada, o en un evolutivo ciclo en espiral o incluso en los métodos ágiles de desarrollo.
- Diversos desarrolladores también dan nota de que UML es algo impreciso dentro de su notación, por ejemplo, al hacer referencias a un diagrama con servidores, no se sabe si los servidores simbolizados se encuentran operativos, restringidos, pasivos…etc. Por eso se le califica de un poco inexacto.
- Otro problema de UML es que no se presta con facilidad al diseño de sistemas distribuidos. En tales sistemas cobran importancia factores como transmisión, serialización, persistencia, etc. UML no cuenta con maneras de describir tales factores. No se puede, por ejemplo, usar UML para señalar que un objeto es persistente o remoto.
- UML siempre ha sido muy criticado por su carencia de una semántica precisa, lo que ha dado lugar a que la interpretación de un modelo UML no pueda ser objetiva
Fuente:


No hay comentarios:
Publicar un comentario