Subido por The Little Rock

uml

Anuncio
LENGUAJE UNIFICADO DE MODELADO (UML)
GA2-220501093-AA1-EV01
JUAN MANUEL PEREZ BAUTISTA
ABRIL 2023
Instructor Técnico
Iván Alejandro Veloza P.
Tecnología en análisis y desarrollo de software
SENA
Bogotá, Colombia.
Copyright © 2023 por Juan Manuel Perez. Todos los derechos reservados.

¿QUE ES EL LENGUAJE UNIFICADO DE MODELADO (UML)?
El Lenguaje Unificado de Modelado, también conocido como UML por sus siglas en inglés
(Unified Modeling Language), es un lenguaje visual para la especificación, construcción,
documentación y comunicación de modelos de sistemas de software y de negocios.
UML se basa en una notación gráfica que permite representar diferentes aspectos de un
sistema, como su estructura, comportamiento, procesos y relaciones, a través de una variedad
de diagramas. Además, UML proporciona una serie de conceptos y elementos que permiten
modelar sistemas complejos de manera efectiva, lo que facilita la comprensión y el desarrollo
de sistemas de software.
UML se utiliza ampliamente en el desarrollo de software y en la ingeniería de sistemas, y se ha
convertido en un estándar de facto en la industria del software. UML es una herramienta
poderosa que puede utilizarse en cualquier etapa del ciclo de vida del software, desde la
especificación y el análisis hasta el diseño, la implementación y el mantenimiento.

ORIGEN
El origen de UML se remonta a principios de los años 90, cuando la industria del software
estaba experimentando un rápido crecimiento y los sistemas de software se estaban
volviendo cada vez más complejos. En ese momento, había una gran variedad de lenguajes y
enfoques de modelado diferentes, lo que dificultaba la comunicación y la colaboración entre
los desarrolladores y los equipos de proyectos.
En 1994, Grady Booch, Ivar Jacobson y James Rumbaugh, tres expertos en ingeniería de
software, decidieron unir sus fuerzas y crear un lenguaje de modelado común que pudiera
unificar diferentes enfoques de modelado y ser fácilmente entendido por todos los
desarrolladores. Así nació el Lenguaje Unificado de Modelado (UML).
El objetivo de UML era proporcionar un lenguaje de modelado estandarizado que pudiera
utilizarse en todas las fases del ciclo de vida del software, desde la especificación y el análisis
hasta el diseño, la implementación y el mantenimiento. UML se basó en los enfoques de
modelado existentes, como el Booch Method, el Object Modeling Technique (OMT) y el
Object-Oriented Software Engineering (OOSE), pero agregó elementos y conceptos nuevos
para hacerlo más completo y fácil de usar.
UML se presentó por primera vez al público en 1995 en un libro llamado "The Unified
Modeling Language User Guide" y rápidamente ganó popularidad en la industria del
software. En 1997, UML fue adoptado oficialmente como un estándar de la industria por el
Object Management Group (OMG), una organización sin fines de lucro que promueve la
estandarización de tecnologías de software.
Desde entonces, UML ha evolucionado para adaptarse a las necesidades cambiantes de la
industria del software y ha sido revisado y actualizado en varias ocasiones. En la actualidad,
UML es un estándar ampliamente utilizado en la industria del software y es compatible con
una amplia variedad de plataformas y lenguajes de programación.

VENTAJAS DEL LENGUAJE UNIFICADO DE MODELADO (UML)
UML tiene varias ventajas que lo hacen un lenguaje de modelado muy popular en la industria
del software. Estas son algunas de las principales ventajas de UML:
-
Estándar de la industria: UML es un estándar de la industria reconocido
internacionalmente y está respaldado por el Object Management Group (OMG), una
organización sin fines de lucro que promueve la estandarización de tecnologías de
software. Esto significa que UML es ampliamente utilizado y reconocido en la
industria del software, lo que facilita la colaboración y la comunicación entre los
desarrolladores y los equipos de proyectos.
-
Flexibilidad: UML es un lenguaje muy flexible que se adapta a diferentes necesidades
y contextos de modelado. Ofrece una amplia variedad de elementos y conceptos que
permiten modelar sistemas de software complejos de manera efectiva y fácilmente
entendible.
-
Comunicación efectiva: UML utiliza una notación gráfica intuitiva y fácil de entender,
que facilita la comunicación entre los desarrolladores y los equipos de proyectos. Los
diagramas UML proporcionan una vista visual clara y concisa de los diferentes
aspectos de un sistema de software, lo que ayuda a los desarrolladores a
comprender mejor el sistema y a identificar posibles problemas.
-
Reutilización de código: UML permite modelar sistemas de software de una manera
que facilita la reutilización de código. Al modelar los sistemas utilizando UML, los
desarrolladores pueden identificar y separar las diferentes funcionalidades del
sistema, lo que hace que sea más fácil crear componentes reutilizables.
-
Herramientas de modelado: Existen muchas herramientas de modelado y desarrollo
de software que ofrecen soporte para UML. Estas herramientas permiten a los
desarrolladores crear y mantener modelos UML de manera eficiente y efectiva, lo
que reduce el tiempo y el esfuerzo necesarios para desarrollar sistemas de software
complejos.
-
Orientado a objetos: UML está basado en el paradigma de la orientación a objetos, lo
que permite modelar sistemas de software de una manera más natural y fácilmente
entendible para los desarrolladores. Al utilizar UML, los desarrolladores pueden
modelar sistemas de software en términos de objetos, clases, herencia,
polimorfismo, encapsulamiento, entre otros conceptos de la orientación a objetos.
-
Visión holística: UML ofrece una visión holística de los sistemas de software,
permitiendo modelar diferentes aspectos del sistema en una misma notación gráfica.
UML proporciona una variedad de diagramas para modelar diferentes aspectos del
sistema, incluyendo diagramas de casos de uso, diagramas de clases, diagramas de
secuencia, entre otros.
-
Modelado de procesos de negocio: UML no solo permite modelar sistemas de
software, también puede ser utilizado para modelar procesos de negocio. UML
ofrece un perfil específico para el modelado de procesos de negocio, lo que permite a
los desarrolladores modelar procesos de negocio de manera efectiva y fácilmente
entendible.
-
Retroalimentación constante: UML permite obtener retroalimentación constante del
sistema modelado, lo que facilita la detección temprana de problemas y errores en el
sistema. Al modelar el sistema utilizando UML, los desarrolladores pueden detectar
problemas y errores antes de implementar el sistema, lo que reduce el tiempo y los
costos asociados con la corrección de errores en etapas posteriores del ciclo de vida
del software.
-
Facilita la documentación: UML facilita la documentación del sistema de software, ya
que proporciona una notación gráfica clara y concisa que permite a los
desarrolladores y equipos de proyectos entender el sistema. Los diagramas UML
pueden ser utilizados para documentar el sistema y sus diferentes componentes, lo
que facilita la comprensión y mantenimiento del sistema.
-
Integración con otros lenguajes de modelado: UML puede ser integrado con otros
lenguajes de modelado, lo que permite a los desarrolladores utilizar diferentes
lenguajes de modelado para modelar diferentes aspectos del sistema de software.
Por ejemplo, UML puede ser integrado con SysML para modelar sistemas complejos,
o con BPMN para modelar procesos de negocio.
-
Facilita la implementación: UML facilita la implementación del sistema de software,
ya que proporciona una visión clara y concisa del sistema. Los diagramas UML
pueden ser utilizados para guiar la implementación del sistema y para asegurarse de
que la implementación cumpla con los requisitos especificados en el modelo UML.
-
Facilita la integración de sistemas: UML facilita la integración de diferentes sistemas
de software, ya que proporciona una notación gráfica clara y concisa que permite a
los desarrolladores entender los diferentes sistemas y sus interacciones. Al modelar
los diferentes sistemas utilizando UML, los desarrolladores pueden identificar
posibles problemas de integración y corregirlos antes de implementar el sistema.

DESVENTAJAS DEL LENGUAJE UNIFICADO DE MODELADO (UML)
UML, aunque es una herramienta muy útil y ampliamente utilizada en el desarrollo de
software, también tiene algunas desventajas importantes. Estas son algunas de las
principales desventajas de UML:
-
Complejidad: UML puede resultar demasiado complejo para pequeños proyectos o
equipos de desarrollo con pocos recursos. La gran cantidad de diagramas y
notaciones disponibles en UML pueden ser abrumadores para algunos
desarrolladores.
-
Curva de aprendizaje: UML requiere una curva de aprendizaje significativa, ya que es
una herramienta muy completa y compleja. Los desarrolladores necesitan tiempo y
dedicación para aprender y dominar las diferentes notaciones y diagramas de UML.
-
Requerimientos de hardware y software: UML puede requerir hardware y software
de alto rendimiento, lo que puede ser un problema para algunos equipos de
desarrollo que no cuentan con estos recursos.
-
Costo: Las herramientas y aplicaciones que utilizan UML pueden resultar costosas. El
costo de las herramientas de modelado de UML puede ser un obstáculo para algunos
equipos de desarrollo.
-
Tiempo: UML puede requerir mucho tiempo para crear modelos precisos y
completos. Los equipos de desarrollo deben dedicar tiempo a crear diagramas y
modelos UML, lo que puede retrasar el proceso de desarrollo.
-
Modelos inexactos: Los modelos UML pueden resultar inexactos o no representar de
manera adecuada la realidad del sistema. Esto puede llevar a una implementación
incorrecta o problemas de diseño en el sistema.
-
Requisitos cambiantes: UML puede ser inflexible cuando se trata de cambios de
requisitos. Si los requisitos del sistema cambian durante el proceso de desarrollo,
puede ser difícil adaptar el modelo UML existente para reflejar los cambios.
-
Tamaño de los modelos: Los modelos UML pueden resultar demasiado grandes y
complejos para algunos sistemas, lo que puede dificultar su comprensión y
mantenimiento.
-
Falta de consenso: UML no cuenta con un estándar definido y aceptado por todos los
desarrolladores. Esto puede llevar a diferentes interpretaciones y confusiones en el
modelado de sistemas.
-
Dificultad en la comunicación: UML puede ser difícil de comunicar y entender para
personas que no son expertas en la notación y los diagramas de UML.
-
Falsas expectativas: Algunos desarrolladores pueden tener expectativas exageradas
sobre las capacidades de UML, lo que puede llevar a una decepción cuando se
encuentran con las limitaciones de la herramienta.
-
Sobre-modelado: Los desarrolladores pueden caer en la tentación de crear modelos
UML demasiado detallados y complejos, lo que puede ser contraproducente y
dificultar la comprensión y el mantenimiento del sistema.
-
Problemas de integración: Los modelos UML pueden no ser compatibles o
interoperables con otros sistemas y herramientas de desarrollo.
-
Riesgo de obsolescencia: UML está en constante evolución y actualización, lo que
puede llevar a versiones obsoletas de la herramienta y la notación.
-
Falta de herramientas de apoyo: Las herramientas de apoyo y validación de modelos
UML pueden ser limitadas o insuficientes, lo que puede dificultar la verificación y
validación de los modelos.

CARACTERISTICAS FUNDAMENTALES DEL LENGUAJE UNIFICADO DE MODELADO
(UML)
Es importante reconocer las características de UML porque esto nos permite comprender sus
fortalezas y limitaciones en el contexto del desarrollo de software. Conociendo las
características de UML, podemos elegir si es la herramienta adecuada para nuestro proyecto
y entender cómo aprovechar sus beneficios al máximo. Además, conocer las características
de UML nos permite entender la notación gráfica y el lenguaje utilizado en el modelado de
sistemas de software, lo que facilita la comunicación entre los miembros del equipo de
desarrollo y con los usuarios finales. En general, reconocer las características de UML nos
ayuda a utilizar esta herramienta de manera efectiva y eficiente en el desarrollo de software.
-
Es un lenguaje visual: UML utiliza una notación gráfica para representar modelos de
software.
-
Es completo: UML cubre todos los aspectos del desarrollo de software, desde el
análisis hasta el diseño y la implementación.
-
Es estándar: UML es un estándar de facto en la industria del software, lo que significa
que se utiliza ampliamente y se ha establecido como un lenguaje común.
-
Es flexible: UML puede adaptarse a diferentes metodologías de desarrollo y entornos
de desarrollo de software.
-
Es independiente del lenguaje de programación: UML se puede utilizar con cualquier
lenguaje de programación, lo que significa que los modelos se pueden utilizar para
implementar sistemas en diferentes lenguajes.
-
Es extensible: UML permite la creación de perfiles personalizados, lo que permite la
adaptación de UML a necesidades específicas de un proyecto.
-
Es preciso: UML permite la representación detallada y precisa de los diferentes
aspectos de un sistema de software.
-
Es comunicativo: UML permite una comunicación clara y efectiva entre los miembros
del equipo de desarrollo y otras partes interesadas en el proyecto, como los clientes
y usuarios finales.
-
Es orientado a objetos: UML se basa en la programación orientada a objetos y
permite representar objetos, clases, herencia, polimorfismo, entre otros conceptos.
-
Es un lenguaje de modelado: UML se utiliza para representar modelos de sistemas de
software, lo que permite entender y planificar la arquitectura y el diseño de un
sistema antes de su implementación.
-
Es un lenguaje independiente de plataforma: UML no está diseñado para ninguna
plataforma en particular, por lo que se puede utilizar en diferentes entornos de
desarrollo de software.
-
Es ampliamente aceptado en la industria: UML es un estándar de facto en la industria
del software y es ampliamente utilizado en la planificación, el diseño y la
implementación de sistemas de software.
-
Es escalable: UML puede utilizarse para sistemas pequeños y grandes, desde
aplicaciones de escritorio hasta sistemas empresariales complejos.
-
Es compatible con diferentes metodologías de desarrollo: UML se puede utilizar en
diferentes metodologías de desarrollo de software, incluyendo Agile, Scrum,
Waterfall, entre otras.
-
Permite la generación de código: UML puede utilizarse para generar
automáticamente código fuente en diferentes lenguajes de programación, lo que
puede ahorrar tiempo y reducir errores.
-
Facilita la documentación: UML permite documentar los diferentes aspectos de un
sistema de software, incluyendo los requisitos, el diseño, la implementación y la
prueba.
-
Permite la simulación: UML permite simular el comportamiento de un sistema de
software antes de su implementación, lo que permite probar y depurar el sistema
antes de su entrega al usuario final.
-
Permite el análisis y la optimización: UML permite analizar y optimizar los diferentes
aspectos de un sistema de software, incluyendo su rendimiento, su escalabilidad y su
mantenibilidad.

IMPORTANCIA DE UTILIZAR EL LENGUAJE UNIFICADO DE MODELADO (UML) EN
NUESTRO PROYECTO.
UML es una de las herramientas claves para el desarrollo de nuestro software. Esta nos
permitirá en nuestro proyecto diseñar, modelar y documentar el sistema de manera clara y
precisa, lo que ayuda a garantizar la calidad del software y la adecuación a los requisitos del
cliente y del negocio. Esta radica en que permite una comunicación efectiva y clara entre los
miembros del equipo de desarrollo y los stakeholders, ya que utiliza un lenguaje común y
una notación visual para representar el sistema de software. Además, UML facilita la
identificación de los requisitos del sistema y estos requisitos se traducen en funcionalidades
y comportamientos del software. Otra importancia de UML es que nos va a permitir diseñar
la estructura del sistema de software de manera organizada y estructurada, lo que ayuda a
garantizar que el sistema sea fácil de entender y mantener. UML también nos permitirá
diseñar diferentes niveles de abstracción, desde una vista general del sistema hasta los
detalles más finos de su implementación. Nos ayudara a mejorar la calidad del software al
permitir que nosotros como diseñadores y desarrolladores de software identifiquemos y
resolvamos problemas de diseño antes de la implementación del software. Esto reduce los
errores y los costos de mantenimiento del software. Además, UML nos facilita la reutilización
de código en diferentes partes del sistema, lo que mejora la eficiencia y la calidad del
software. También permite que diferentes equipos trabajen juntos en el diseño del sistema
de software, lo que ayuda a garantizar la coherencia y la consistencia del software en todo el
proyecto. Otra de la importancia que vemos en UML reflejado en nuestro proyecto a
construir, es que permite analizar y definir los requisitos del software de manera sistemática
y precisa. UML permite identificar los casos de uso del software, los escenarios de uso y los
requisitos funcionales y no funcionales, lo que ayuda a garantizar que el software satisfaga
las necesidades y expectativas de los usuarios finales. Nos permite estimar el esfuerzo y los
costos necesarios para desarrollar el software, lo que ayuda a los equipos de desarrollo a
planificar y gestionar el proyecto de manera más efectiva. Además, UML permite
documentar el sistema de software de manera completa y detallada, lo que ayuda a
mantener un registro del diseño del software y facilita su mantenimiento y evolución.
En resumen, la importancia que hemos encontrado para utilizar UML en el desarrollo de
nuestro software radica en que permite una comunicación efectiva y clara entre los
miembros del equipo de desarrollo y los stakeholders, ayuda a garantizar la calidad del
software, facilita la reutilización de código y mejora la documentación y comprensión del
sistema. UML es una herramienta esencial para cualquier proyecto de desarrollo de software
que busca una implementación exitosa y sostenible.

¿CUALES SON LOS DIAGRAMAS QUE PUEDEN REPRESENTARSE CON (UML)?
Existen varios tipos de diagramas que se pueden representar con UML, y cada uno de ellos se
enfoca en un aspecto específico del sistema de software que se está diseñando. A
continuación, se describen los principales diagramas de UML:
-
Diagramas de Casos de Uso: Este tipo de diagrama representa los diferentes
escenarios de uso del sistema por parte de los actores (usuarios, otros sistemas, etc.)
y cómo estos escenarios están relacionados entre sí.
-
Diagramas de Clases: Este diagrama representa las clases y sus relaciones, incluyendo
la herencia, la agregación y la composición. Este diagrama también muestra las
propiedades y métodos de cada clase.
-
Diagramas de Objetos: Este tipo de diagrama representa las instancias de las clases y
cómo están conectadas. Se utiliza para mostrar el estado actual del sistema.
-
Diagramas de Secuencia: Este tipo de diagrama representa la interacción entre los
objetos y las clases en un orden cronológico. Se utiliza para modelar el flujo de
trabajo en un proceso de negocio o en una funcionalidad específica del software.
-
Diagramas de Comunicación: Este tipo de diagrama es similar al diagrama de
secuencia, pero se enfoca en la comunicación entre los objetos y las clases.
-
Diagramas de Actividad: Este tipo de diagrama se utiliza para representar el flujo de
control en un proceso de negocio o en una funcionalidad específica del software.
-
Diagramas de Componentes: Este tipo de diagrama representa los componentes del
sistema y cómo están conectados entre sí. Se utiliza para mostrar la estructura del
sistema y cómo se compone de diferentes partes.
-
Diagramas de Distribución: Este tipo de diagrama representa la distribución física del
sistema en diferentes dispositivos y cómo estos dispositivos están conectados.
-
Diagramas de Tiempos: Este tipo de diagrama se utiliza para representar la evolución
temporal de los objetos y las clases en un sistema.
-
Diagramas de Estados: Este tipo de diagrama representa los diferentes estados de
una clase y cómo éstos cambian en respuesta a los eventos.
Cada uno de estos diagramas es útil para modelar diferentes aspectos del sistema de
software y, en conjunto, proporcionan una vista completa del sistema. La selección de los
diagramas adecuados depende del objetivo específico del diseño y de la fase del ciclo de vida
del software en la que se encuentre el proyecto.

¿QUÉ HERRAMIENTAS DE SOFTWARE EXISTEN EN EL MERCADO PARA UML?
Existen varias herramientas de software en el mercado que se pueden utilizar para trabajar
con UML. Aquí hay una lista de algunas de las herramientas más populares:
- Visual Paradigm
- StarUML
- Lucidchart
- IBM Rational Rose
- MagicDraw
- Enterprise Architect
- Modelio
- GenMyModel
- Astah
- Creately
- ArgoUML
- UMLet
- Violet UML Editor
- PlantUML
- Poseidon for UML
- Papyrus
- Altova UModel
- ModelMaker Tools
- Rational Software Architect
- Visual UML
-
ALGUNAS DEFINICIONES DE ESTAS:

Visual Paradigm: Es una herramienta de modelado UML completa que permite a los
desarrolladores diseñar, modelar, documentar y generar código a partir de sus
modelos.

IBM Rational Rose: Es una herramienta de modelado UML líder en la industria que
ofrece una amplia gama de características y funciones para el diseño de sistemas de
software.

Enterprise Architect: Es una herramienta de modelado y diseño UML que se utiliza
para crear modelos de negocios, software y sistemas en una variedad de sectores,
incluyendo la ingeniería, la salud y el transporte.

StarUML: Es una herramienta de modelado UML de código abierto que permite a los
desarrolladores crear modelos de alta calidad de manera rápida y sencilla.

Lucidchart: Es una herramienta de diagramación en línea que ofrece una variedad de
plantillas de diagramas de UML y otras herramientas de modelado para equipos de
desarrollo y diseñadores.

Astah: Es una herramienta de modelado UML que ofrece una amplia gama de
características para diseñar y modelar sistemas de software y otros sistemas
complejos.

ArgoUML: Es una herramienta de modelado UML de código abierto que se puede
descargar y utilizar de forma gratuita. Permite a los usuarios crear diagramas de
casos de uso, clases, secuencia, actividad y otros diagramas de UML.

Modelio: Es una herramienta de modelado y diseño UML que ofrece funciones de
modelado avanzadas, como la generación de código y la ingeniería inversa. También
cuenta con una interfaz de usuario intuitiva y un gran conjunto de características
para la colaboración y la gestión de proyectos.

Creately: Es una herramienta en línea para la creación de diagramas de UML y otras
herramientas de modelado. Ofrece plantillas y herramientas de arrastrar y soltar
para la creación rápida de diagramas de casos de uso, clases, secuencia, actividad y
otros tipos de diagramas de UML.

GenMyModel: Es una herramienta de modelado UML en línea que permite a los
usuarios crear diagramas de UML en la nube. Ofrece una interfaz de usuario intuitiva
y una amplia gama de plantillas para la creación de diagramas de UML.
En general, estas herramientas de software ofrecen una amplia gama de características y
funciones para crear, editar y compartir diagramas de UML. La elección de la herramienta
adecuada dependerá de las necesidades específicas del proyecto y las preferencias del
equipo de desarrollo.
BIBLIOGRAFIA
-
Larman, C. (2004). UML y Patrones. Prentice Hall.
Fowler, M. (2004). UML Distilled: A Brief Guide to the Standard Object Modeling
Language (3rd Edition). Addison-Wesley Professional.
Booch, G., Rumbaugh, J., & Jacobson, I. (2005). El lenguaje unificado de modelado.
Addison-Wesley.
OMG (Object Management Group). (2017). UML specifications.
https://www.omg.org/spec/UML/
Ambler, S. (2002). The Elements of UML 2.0 Style. Cambridge University Press.
Alhir, S. S. (2003). UML in a Nutshell: A Desktop Quick Reference. O'Reilly Media.
Rosenberg, D. (2000). Use Case Driven Object Modeling with UML: Theory and
Practice. Apress.
Arlow, J., & Neustadt, I. (2005). UML 2 and the Unified Process: Practical ObjectOriented Analysis and Design. Addison-Wesley Professional.
Eriksson, H. E., & Penker, M. (2000). Business modeling with UML: Business patterns
at work. Wiley.
Stevens, P., & Pooley, R. (2006). Using UML: Software Engineering with Objects and
Components (2nd Edition). Addison-Wesley Professional.
Coad, P., & Mayfield, M. (1999). Object-Oriented Programming. Prentice Hall.
Bittner, K., & Spence, I. (2003). Use Case Modeling. Addison-Wesley Professional.
Schmuller, J. (2004). Sams Teach Yourself UML in 24 Hours. Sams Publishing.
Mellor, S. J., & Balcer, M. J. (2002). Executable UML: A Foundation for Model-Driven
Architecture. Addison-Wesley Professional.
Douglass, B. P. (2004). Real-Time UML: Developing Efficient Objects for Embedded
Systems (2nd Edition). Addison-Wesley Professional.
Martin, J. N. (2000). Agile Modeling: Effective Practices for eXtreme Programming
and the Unified Process. Prentice Hall.
Kruchten, P. (2003). The Rational Unified Process: An Introduction (3rd Edition).
Addison-Wesley Professional.
Gottesdiener, E. (2002). Requirements by Collaboration: Workshops for Defining
Needs. Addison-Wesley Professional.
Harel, D., & Gery, E. (2003). Executable UML: A Case Study. IEEE Computer Society.
Weiss, M. A., & Lai, S. K. (2004). Software Product-Line Engineering: A Family-Based
Software Development Process. Addison-Wesley Professional.
Descargar