SlideShare una empresa de Scribd logo
1 de 90
Descargar para leer sin conexión
MODULO

LENGUAJE UNIFICADO DE MODELADO UML
     ING. HAROLD CABRERA MEZA


 UNIVERSIDAD NACIONAL ABIERTA Y A
            DISTANCIA
      SAN JUAN DE PASTO, 2006



                1
TABLA DE CONTENIDO

INTRODUCCION .................................................................................................... 6

1. INTRODUCCIÓN AL LENGUAJE UNIFICADO DE MODELADO ..................... 7

1.1. QUÉ ES UML?................................................................................................. 7

1.1.2. UML NO ES UN MÉTODO ........................................................................... 8

1.1.3. MODELOS .................................................................................................... 9

1.1.4. ELEMENTOS COMUNES A TODOS LOS DIAGRAMAS .......................... 10

1.2. MODELADO ESTRUCTURADO ................................................................... 11

1.2.1. BLOQUES DE CONSTRUCCIÓN DE UML................................................ 11

1.2.2. CLASES...................................................................................................... 15

1.2.3. OBJETOS ................................................................................................... 17

1.2.4. ASOCIACIONES......................................................................................... 18

1.2.5. DIAGRAMAS .............................................................................................. 20

1.2.6. DIAGRAMAS DE CLASE ........................................................................... 23

1.2.7. CARACTERÍSTICAS AVANZADAS DE LAS CLASES Y RELACIONES . 26

1.2.8. INTERFACES, TIPOS Y ROLES ................................................................ 31

1.2.9 PAQUETES E INSTANCIAS ...................................................................... 35

1.2.10. HERENCIA Y POLIMORFISMO ............................................................... 36

2. CARACTERISTICAS DEL MODELADO UML ................................................. 38

2.1. DIAGRAMAS UTILIZADOS EN UML ............................................................ 38



                                                          2
2.1.1. DIAGRAMAS DE OBJETOS ...................................................................... 38

2.1.2. DIAGRAMAS DE CASOS DE USO............................................................ 40

2.1.3. DIAGRAMAS DE INTERACCIÓN .............................................................. 45

2.1.4. DIAGRAMAS DE ACTIVIDADES ............................................................... 47

2.2. MODELADO DINÁMICO ............................................................................... 51

2.2.1 EVENTOS Y SEÑALES............................................................................... 51

2.3.2 MÁQUINAS DE ESTADO............................................................................ 53

2.4.3 TIEMPO Y ESPACIO ................................................................................... 55

2.4.4 DIAGRAMAS DE ESTADO ......................................................................... 56

2.3. MODELADO ARQUITECTÓNICO................................................................. 57

2.3.1. COMPONENTES, DESPLIEGUE, COLABORACIONES Y PATRONES... 57

2.3.2. DIAGRAMAS DE COMPONENTES ........................................................... 61

2.3.3. DIAGRAMAS DE DESPLIEGUE ................................................................ 62

2.3.4. SISTEMAS Y MODELOS ........................................................................... 63

3. DESARROLLO ORIENTADO A OBJETOS CON UML ................................... 66

3.2. FASE DE PLANIFICACIÓN Y ESPECIFICACIÓN DE REQUISITOS ........... 68

3.2.1 ACTIVIDADES ............................................................................................. 68

3.2.2. REQUISITOS .............................................................................................. 68

3.2.3. CONSTRUCCIÓN DEL MODELO DE CASOS DE USO............................ 74

3.2.4. PLANIFICACIÓN DE CASOS DE USO SEGÚN CICLOS DE



                                                        3
DESARROLLO ..................................................................................................... 75

3.3. DISEÑO DE ALTO NIVEL ............................................................................. 76

3.3.1 ACTIVIDADES ............................................................................................. 77

3.3.2. MODELO CONCEPTUAL........................................................................... 77

3.3.3. DIAGRAMAS DE SECUENCIA DEL SISTEMA ......................................... 79

3.3.4. DIAGRAMAS DE ESTADOS ...................................................................... 81

3.4. DISEÑO DE BAJO NIVEL ............................................................................. 82

3.4.1 ACTIVIDADES ............................................................................................. 82

3.4.2. CASOS DE USO REALES ......................................................................... 82

3.4.3. DIAGRAMAS DE INTERACCIÓN .............................................................. 83

3.4.4. CONSTRUCCIÓN DIAGRAMAS DE DISEÑO ........................................... 88

3.5. FASES DE IMPLEMENTACIÓN Y PRUEBAS .............................................. 90




                                                        4
PRIMERA UNIDAD

INTRODUCCIÓN AL LENGUAJE UNIFICADO DE
             MODELADO




                  5
INTRODUCCION


Unas de las etapas vitales para un diseñador de software, es el análisis y diseño
de sistemas, el análisis de sistemas es el proceso de clasificación e interpretación
de hechos, diagnóstico de problemas y manejo de la información para hacer
mejoras al sistema, siendo el diseño la fase de planificación, reemplazo o
complementación de un sistema organizacional existen. Para estas fases del
desarrollado de software se han desarrollado diferentes modelos con los cuales se
han obtenido resultados satisfactorios, mas no óptimos puesto que se han
sesgado unos con otros.


Es entonces cuando se plantea la necesidad de crear un mismo lenguaje que
permita modelar sistemas, de manera que se pueda en cualquier momento
construir software partiendo de un solo esquema de modelado, tanto estructural
como orientado a objetos


El Lenguaje Unificado de Modelado (Unified Modelin Language UML), es un
lenguaje estándar para escribir planos de software, UML se puede utilizarse para
visualizar, especificar, construir y documentar los artefactos de un sistema que
involucra una gran cantidad de software. UML prescribe un conjunto de notaciones
y diagramas estándar para modelar sistemas orientados a objetos, y describe la
semántica esencial de lo que estos diagramas y símbolos significan.


UML se puede usar para modelar distintos tipos de sistemas: sistemas de
software, sistemas de hardware, y organizaciones del mundo real. UML ofrece
nueve diagramas en los cuales modelar sistemas. Es un lenguaje muy expresivo,
que cubre todas las vistas necesarias para desarrollar y luego desplegar tales
sistemas.


El curso académico denominado Lenguaje de Modelado -UML- Electiva, esta
orientado a hacia el manejo adecuado de las herramientas que ofrece el lenguaje
de modelado orientado a objetos, desde la construcción de los diagramas de
interacción del sistema hasta la aplicación del modelo en un caso real de
desarrollo.




                                         6
1. INTRODUCCIÓN AL LENGUAJE UNIFICADO DE MODELADO


1.1. Qué es Uml?


El Lenguaje Unificado de Modelado (Unifield Modelin Language UML), es un
lenguaje estándar para escribir planos de software, UML se puede utilizarse para
visualizar, especificar, construir y documentar los artefactos de un sistema que
involucra una gran cantidad de software. UML prescribe un conjunto de notaciones
y diagramas estándar para modelar sistemas orientados a objetos, y describe la
semántica esencial de lo que estos diagramas y símbolos significan.


UML se puede usar para modelar distintos tipos de sistemas: sistemas de
software, sistemas de hardware, y organizaciones del mundo real. UML ofrece
nueve diagramas en los cuales modelar sistemas. Es un lenguaje muy expresivo,
que cubre todas las vistas necesarias para desarrollar y luego desplegar tales
sistemas .


UML es sólo un lenguaje y por tanto es tan solo una parte de un método de
desarrollo de software, además, es independiente del proceso, aunque para
utilizar óptimamente se debería usar en procesos que fuese dirigido por los casos
de uso, centrado en la arquitectura, interactivo e incremental


UML es una consolidación de muchas de las notaciones y conceptos más usadas
orientados a objetos. Empezó como una consolidación del trabajo de Grade
Booch, James Rumbaugh, e Ivar Jacobson, creadores de tres de las metodologías
orientadas a objetos más populares, en 1996, el Object Management Group
(OMG), publicó una petición con propósito de un metamodelo orientado a objetos
de semántica y notación estándares. UML, en su versión 1.0, fue propuesto como
una respuesta a esta petición en enero de 1997. Hubo otras cinco propuestas
rivales. Durante el transcurso de 1997, los seis promotores de las propuestas,
unieron su trabajo y presentaron al OMG un documento revisado de UML, llamado
UML versión 1.1. Este documento fue aprobado por el OMG en Noviembre de
1997. El OMG llama a este documento OMG UML versión 1.1. El OMG estaba
actualmente en proceso de mejorar una edición técnica de esta
especificación, prevista su finalización para el 1 de abril de 1999.




                                       7
1.1.2. UML no es un método

Inicialmente los métodos son una técnica para llevar a cabo una acción, Uml es un
compendio de modelos que pueden ser interpretados de forma directa a una gran
variedad de lenguajes de programación como Java, C++ o Visual Basic, e incluso
a tablas en una base de datos relacional o una base de datos orientadas a objetos


UML se construye con modelos estándar sobre análisis y diseño de sistemas
orientados a objetos de las cuales las más populares se incluyen las siguientes:


Catálisis: Un método orientado a objetos que fusiona mucho del trabajo reciente
en métodos orientados a objetos, y además ofrece técnicas especificas para
modelar componentes distribuidos.


Objetory: Un método de Caso de Uso guiado para el desarrollo, creado por Ivar
Jacobson.


Shlaer/Mellor: El método para diseñar sistemas de tiempo real, puesto en marcha
por Sally Shlaer y Steven Mellor en dos libros de 1991, Ciclos de vida de Objetos,
modelando el Mundo en Estados y Ciclos de vida de Objetos, Modelando el
mundo en Datos (Prentice Hall). Shlaer/Mellor continúan actualizando su método
continuamente (la actualización más reciente es el OOA96 report), y
recientemente publicaron una guía sobre como usar la notación UML con
Shlaer/Mellor.


Fusión: Desarrollado en Hewlett Packard a mediados de los noventa como primer
intento de un método de diseño orientado a objetos estándar. Combina OMT y
Booch con tarjetas CRC y métodos formales.
(www.hpl.hp.com/fusion/file/teameps.pdf)


OMT: La Técnica de Modelado de Objetos fue desarrollada por James Rumbaugh
y otros, y publicada en el libro de gran influencia "Diseño y Modelado Orientado a
Objetos" (Prentice Hall, 1991). Un método que propone análisis y diseño
interactivo, más centrado en el lado del análisis.


Booch: Parecido al OMT, y también muy popular, la primera y segunda edición de
"Diseño Orientado a Objetos, con Aplicaciones" (Benjamin Cummings, 1991 y




                                        8
1994),

(Object-Oriented Design, With Applications), detallan un m odo ofreciendo
también diseño y análisis 'iterative', centrándose en el lado del diseño.


1.1.3. Modelos


Un modelo representa a un sistema software desde una perspectiva específica. Al
igual que la planta y el alzado de una figura en dibujo técnico nos muestran la
misma figura vista desde distintos ángulos, cada modelo nos permite fijarnos en
un aspecto distinto del sistema.


Los modelos de UML que se tratan en esta parte son los siguientes:


•Diagramas de clases: muestra un conjunto de clases, interfaces y
colaboraciones, así como sus relaciones, son los más comunes en el modelo
orientado a objetos y cubren las vistas de diseño estático de un sistema.


•Diagramas de Objetos: muestra un conjunto de objetos y sus relaciones,
representan instancias de los elementos encontrados en los diagramas de clases,
representado cubren las vistas de diseño estático de un sistema desde la
perspectiva de casos reales.


•Diagrama de Actividades: es un tipo especial de diagrama de estados que
muestra el flujo de actividades dentro de un sistema, cubren la vista dinámica de
un sistema. Son especialmente importantes al modelar el funcionamiento de un
sistema y resaltan el flujo de control de objetos.


•Diagrama de Componentes: muestra la organización y las dependencias entre
un conjunto de componentes, cubren la vista estática de un sistema.


•Diagrama de Despliegue: muestra la configuración de nodos de procesamiento
en tiempo de ejecución y los componentes que residen en ellos, cubren la vista de
despliegue estática de una arquitectura.




                                       9
Diagrama de Casos de Uso: muestra un conjunto de casos de uso, actores y
relaciones, cubren la vista de casos de uso estática de un sistema.


•Diagrama de Secuencia: es un diagrama de interacción que resalta la
ordenación temporal de los mensajes.


•Diagrama de Colaboración: es un diagrama de interacción que resalta la
organización estructural de los objetos que envían y reciben mensaje.


•Diagrama de Estados: Muestra una máquina de estados, que consta de
estados, transiciones, eventos y actividades, cubren la vista dinámica de un
sistema, resaltan el comportamiento dirigido por eventos de un objeto.


1.1.4. Elementos comunes a todos los diagramas


Notas


Una nota sirve para añadir cualquier tipo de comentario a un diagrama o a un
elemento de un diagrama. Es un modo de indicar información en un formato libre,
cuando la notación del diagrama en cuestión no nos permite expresar dicha
información de manera adecuada. Una nota se representa como un rectángulo
con una esquina doblada con texto en su interior. Puede aparecer en un diagrama
tanto sola como unida a un elemento por medio de una línea discontinua. Puede
contener restricciones, comentarios, el cuerpo de un procedimiento, etc.




                                   Figura 1.




                                      10
Dependencias


La relación de dependencia entre dos elementos de un diagrama significa que un
cambio en el elemento destino puede implicar un cambio en el elemento origen
(por tanto, si cambia el elemento destino habría que revisar el elemento origen).
Una dependencia se representa por medio de una línea de trazo discontinuo entre
los dos elementos con una flecha en su extremo. El elemento dependiente es el
origen de la flecha y el elemento del que depende es el destino (junto a él está la
flecha).


1.2. Modelado Estructurado


Para comprender UML, se necesita adquirir un modelo conceptual del lenguaje y
esto requiere aprender tres elementos principales: los bloques básicos de
construcción de UML, las reglas que dictan cómo se pueden combinar estos
bloques básicos y algunos mecanismos comunes que se aplican a través de UML,
Una ves comprendida estas ideas, se pueden leer modelos UML y crear algunos
modelos básicos.



1.2.1. Bloques de Construcción de UML

El vocabulario de UML incluye tres clases de bloques de construcción

Elementos en UML

Hay 4 tipos de elementos en UML, elementos estructurales, elementos de
comportamiento, elementos de agrupación y elementos de anotación:
  .




                                      Figura 2.



                                        11
Elementos Estructurales
Nombre       Descripción                                    Símbolo
Interfaz       • Es una colección de operaciones que
                  especifica un servicio de una clase o
                  componente,          representa        el
                  comportamiento completo de una clase
                  o componente
Colaboración   • Se definen como una interacción y es
                  una sociedad de roles y otros
                  elementos      que     colaboran     para
                  proporcionar     un      comportamiento
                  cooperativo mayor que la suma de los
                  comportamientos de sus elementos
               • las     colaboración     representan    la
                  implementación de patrones que
                  forman un sistema
Caso de Uso    • Es una descripción de secuencias de
                  acciones que un sistema ejecuta y que
                  produce un resultado observable de
                  interés para un actor particular
               • Se      utiliza  para     estructurar   el
                  comportamiento en un modelo
Clase Activa   • Es un clase objetos tienen uno o mas
                  procesos o hilos de ejecución y por lo
                  tanto pueden dar origen a actividades
                  de control
               • Son iguales a las clases excepto en
                  que sus objetos representan elementos
                  cuyos comportamiento es concurrente
                  con otros elementos
Componente     • Es una parte física y reemplazable de
                  un sistema que conforma con un
                  conjunto de interfaces y proporciona la
                  implementación de dicho conjunto
               • Representa           típicamente         e
                  empaquetamiento físico de diferentes
                  elementos lógicos, como clases
                  interfaces y colaboraciones
Nodo           • Es un elemento físico que existe en
                                                                  Nodo1
                  tiempo de ejecución y representa un
                  rescursos computacional que dispone
                  de memoria y con frecuencia
                  capacidad de procesamiento




                                          12
Estos siete elementos (clases, interfaces, colaboraciones, casos de uso, clases
activas, componentes y nodos) son los elementos estructurales básicos que se
pueden incluir en el modelo UML. También existen variaciones de estos siete
elementos, tales como actores, señales, procesos e hilos, y aplicaciones,
documentos, archivos, bibliotecas, páginas y tablas.


Los elementos de comportamiento son las partes dinámicas de los modelos
UML. Estos son los verbos de un modelo y representan comportamiento en el
tiempo y en el espacio.

    •   Interacción: Es un comportamiento que comprende un conjunto de
        mensajes intercambiados entre un conjunto de objetos, dentro de un
        contexto particular para alcanzar un propósito especifico

    •   Máquina de Estados: Es un comportamiento que especifica las secuencias
        de estados por las que pasa un objeto o una interacción durante su vida en
        respuesta a eventos


Estos dos elemento (interacciones y máquinas de estado) son los elementos de
comportamiento que se pueden incluir de un modelo UML, estos elementos están
conectados normalmente a diversos elementos estructurales, principalmente
clases, colaboraciones y objetos.


Los Elementos de agrupación son las partes organizativas de los modelos UML.
Estos son las cajas en las que pueden descomponerse un modelo

Paquete


•   Es un mecanismo de propósito general para organizar elementos en grupos.
•   En los paquetes se pueden agrupar los elementos estructurales, de
    comportamiento e incluso otros elementos de agrupación

Los paquetes son los elementos de agrupación básicos con los cuales se puede
organizar un modelo UML. También hay variaciones, tales como los framework,
los modelos y los subsistemas




                                        13
Relaciones


Existen cuatro tipos de la relaciones en UML

  • Dependencias
  • Asociaciones
  • Generalizaciones
  • Realización



Estas relaciones son los bloques básicos de construcción para las relaciones de
UML.


Relaciones en UML


Dependencia: Es una relación semántica entre dos elementos, en la cual un
cambio a un elemento pude afectar la semántica de otro elemento

Asociaciones: Es una relación estructural que describe un conjunto de enlaces,
los cuales son conexiones entre objeto y representa una relación estructural entre
un todo y sus partes


Diagramas


Un diagrama es la representación gráfica de un conjunto de elementos,
visualizando la mayoría de las veces como un grafo conexo de nodos (elementos)
y arcos (relaciones). Los diagramas se dibujan para visualizar un sistema desde
diferentes perspectivas, de forma que un diagrama es una proyección de un
sistema, un diagrama representa una vista resumida de los elementos que
constituyen un sistema. (Los tipos de diagramas que utiliza UML se mencionan en
el Numeral 1.1.2. de este módulo).




                                       14
1.2.2. Clases


Una clase es una descripción de un conjunto de objetos que comparten los
mismos atributos, operaciones, relaciones y semántica, las clases pueden
representar cosas que sean hardware, software o completamente conceptuales.
Las clases forman parte de una distribución equilibrada de responsabilidades en el
sistema

UML representa una representación gráfica de las clases como se muestra en la
figura ex,



            Nombre                    Figura

                                      Origen                atributos

                                     Mover()
                                    Visualizar()           operaciones

                                    Figura 3.

Componentes de las Clases



Una clase es un descripción de un conjunto de objetos que comparten los mimos
atributo, operaciones, relaciones y semántica, gráficamente una clase se
representa como un rectángulo, en el cual se describen las características de los
objetos que representa, entre ellos tenemos


1. Nombre: una clase a de contener un nombre que la identifique, compuesto por
   cualquier numero de letras y números exceptuado los dos puntos pues estos se
   utilizan para separar el nombre de una clase y el paquete que lo contiene.

2. Atributos: es una propiedad de una clase identificada con un nombre, que
   describe un rango de valores que pueden tomar las instancias de la propiedad.
   Un atributo representa alguna propiedad del elemento que se está modelando
   que es compartida por todos los objetos de esa clase, además, una clase puede
   o no contener atributos. Por ejemplo un atributo de la clase estudiante es el
   nombre, apellido, fecha Nacimiento, etc.




                                        15
Estudiante

                                       nombre
                                       apellido              atributos
                                  fecha Nacimiento


                                     Figura 4.


3. Operaciones: Es una abstracción de de algo que se puede haber a un objeto y
   que es compartido por todos los objetos de la clase, las clases pueden tener o
   no operaciones. Ejemplo en la clase estudiante se puede a los objetos
   generados por ella, matricular, evaluar, aprobar y estas operaciones son
   comunes a todos los objetos que se describen a través de la clase estudiante.

                                      Estudiante

                                      Nombre
                                      Apellido
                                  Fecha nacimiento

                                     Matricular()
                                      Evaluar()               Operaciones
                                      Aprobar()

                                     Figura 5.

4. Responsabilidades: Es una obligación de las clases, al crear una clase, se esta
   expresando que todos los objetos de esa clase tienen el mismo tipo de estado y
   el mismo tipo de comportamiento, de forma mas general los atributos y
   operaciones son las características por medio de la cuales se llevan a cabo las
   responsabilidades de la clase. Gráficamente las responsabilidades se pueden
   expresar en un comportamiento separado al final del icono de la clase.

                                     Estudiante

                                       nombre
                                      apellido
                                  fecha Nacimiento

                                     matricular()
                                      evaluar()
                                      aprobar()

                                  Responsabilidades
                                     Respetar el
                                     Reglamento             Responsabilidades
                                     Estudiantil

                                     Figura 6.




                                          16
Usos Comunes de las Clases


Las clases se utilizan para modelar y representar el conjunto de elementos de un
sistema de manera general (abstracciones), para determinar los problemas que se
intenta resolver y así implementar una solución.


Para definir las clases que intervienen dentro de un sistema se recomienda como
puntos de partida las siguientes consideraciones:

•   Identificar aquellas cosas que utilizan los usuarios o programadores para
    describir el problema o la solución
•   Identificar las responsabilidades de cada clase y asegurarse que cada clase
    existe
•   Identificar los atributos y operaciones necesarios para cumplir sus
    responsabilidades
•   Hacer del conjunto de clases y sus responsabilidades un modelo equilibrado
    donde no existan clase demasiado grandes ni pequeñas
•   Cuando se dibuje una clase hay que mostrar solo aquellas propiedades de la
    clase que sean importantes, como también sus atributos y operaciones


1.2.3. Objetos


Un objeto se representa de la misma forma que una clase. En el compartimiento
superior aparecen el nombre del objeto junto con el nombre de la clase
subrayados, según la siguiente sintaxis: nombre_del_objeto:nombre_de_la_clase
Puede representarse un objeto sin un nombre específico, entonces sólo aparece el
nombre de la clase.




                                   Figura 7.



                                      17
1.2.4. Asociaciones


Es una relación estructural que especifica que los objetos de un elemento están
conectados con los objetos de otro. Dada una asociación entre dos clases, se
puede navegar desde un objeto de una clase hasta el objeto de otra clase, y
viceversa. Una asociación que conecta dos clases se dice binaria, sí conecta más
de dos clases se denomina asociación n-arias, las asociaciones se utilizarán
cuando se quieren representar relaciones estructurales.


Características de las Asociaciones y operaciones

Nombre de la Asociación y Dirección


El nombre de la asociación se utiliza para describir la naturaleza de la relación, es
opcional y se muestra como un texto que está próximo a la línea. Se puede añadir
un pequeño triángulo negro sólido que indique la dirección en la cual leer el
nombre de la asociación. En el ejemplo se puede leer la asociación como “Director
manda sobre Empleado”.




                                     Figura 8.


Los nombres de las asociaciones normalmente se incluyen en los modelos para
aumentar la legibilidad. Sin embargo, en ocasiones pueden hacer demasiado
abundante la información que se presenta, con el consiguiente riesgo de
saturación. En ese caso se puede suprimir el nombre de las asociaciones
consideradas como suficientemente conocidas. En las asociaciones de tipo
agregación y de herencia no se suele poner el nombre.




                                         18
Multiplicidad


La multiplicidad es una restricción que se pone a una asociación, que limita el
número de instancias de una clase que pueden tener esa asociación con una
instancia de la otra clase. Puede expresarse de las siguientes formas:

• Con un número fijo: 1.
• Con un intervalo de valores: 2.5.
• Con un rango en el cual uno de los extremos es un asterisco Significa que es
  un intervalo abierto. Por ejemplo, 2..* significa 2 o más.
• Con una combinación de elementos como los anteriores separados por comas:
  1, 3..5, 7, 15..*.
• Con un asterisco: * . En este caso indica que puede tomar cualquier valor (cero
  o más).


Roles

Un rol es simplemente la cara que la clase de un extremo de la asociación
presenta a la clase del otro extremo.




                                    Figura 9.




                                       19
Para indicar el papel que juega una clase en una asociación se puede especificar
un nombre de rol. Se representa en el extremo de la asociación junto a la clase
que desempeña dicho rol.


Agregación


El símbolo de agregación es un diamante colocado en el extremo en el que está la
clase que representa el “todo”.




                                    Figura 10.


1.2.5. Diagramas

Un diagrama es una presentación gráfica de un conjunto de elementos, que la
mayoría de la veces se dibuja como un conjunto de elementos relacionados, los
diagramas se utilizan para representar un sistema desde diferentes perspectivas,
por esto UML a definido varios diagramas que permiten centrarse en diferentes
aspectos del sistema independientemente.


Un diagrama es una proyección gráfica de los elementos que configuran un
sistema. Por ejemplo, se podría tener cientos de clases en el diseño de un sistema
de recursos humanos de un empresa, pero no se podría ver la estructura o el
comportamiento de ese sistema observando un gran diagrama con todas sus
clases y relaciones, es entonces preferible realizar varios diagramas que
especifiquen las vistas relevantes solamente a ese subsistema definido, este tipo
de manejo de diagramas representativos por clases permite realizar agrupaciones
que muestran el funcionamiento general del sistema de forma particular pero
denotando el funcionamiento general del sistema con todos sus elementos
constitutivos.




                                       20
Con el modelado de sistemas se obtienen deferentes tipos de vistas, las vistas
estáticas de los sistemas en UML se representan con 4 tipos de diagramas que se
describen a continuación


Diagramas Estructurales


los cuales comprenden los siguientes diagramas

•   Diagramas de Clases

Representa un conjunto de clases, interfaces y colaboraciones, y las relaciones
entre ellas. Los diagramas de clases los diagramas más comunes en el modelado
de sistemas orientados a objetos. Estos diagramas se utilizan para describir las
vista de diseño estática de un sistema, incluyen clases activas se utilizan para
cubrir la vista de procesos estática de un sistema


•   Diagramas de Objetos

Representa un conjunto de objetos y sus relaciones. Se utiliza para describir
estructuras de datos y las instancias de los elementos encontrados en los
diagramas de clases. Cubren la vista de diseño estática o la vista de proceso
estática de un sistema al igual que los diagramas de clases. Pero desde la
perspectiva de casos reales prototipos.


•   Diagramas de Componentes

Muestra un conjunto de componentes y relaciones, se utilizan para describir la
vista de implementación estática de un sistema, se relacionan con los diagramas
de clases en que un componente normalmente se corresponde con una más
clases. Interfaces o colaboraciones


•   Diagramas de despliegue

Muestra un conjunto de nodos y sus relaciones, se utilizan para describir la vista
de despliegue estática de una arquitectura, se relacionan con los diagramas de
componentes en que un nodo normalmente incluye uno o más componentes.




                                       21
Diagramas de Comportamiento

Los cuales están compuestos por los siguientes diagramas


Diagramas de casos de uso

En el modelado orientado a objetos los diagramas de casos de uso son los que
representan en general el funcionamiento del sistema siendo estos los mas
utilizados como base del desarrollo de un modelo real, representa casos de uso,
actores y relaciones, se utilizan especialmente para organizar y modelar el
comportamiento de un sistema.


Diagramas de Secuencia

Es un diagrama de interacción que resalta la ordenación temporal de los
mensajes, este presenta un conjunto de objetos y los mensajes enviados por ellos.
Los objetos suelen ser instancias con nombre, pueden representar instancias de
otros elementos, tales como colaboraciones, componentes y nodos, se utilizan
para describir las vista dinámica de un sistema.


Diagramas de colaboración

Es un diagrama de interacción que resalta la organización estructural de los
objetos que envían y reciben mensajes, pueden representar instancias de otros
elementos como colaboraciones, componentes y nodos. Se utilizan para describir
la vista dinámica de un sistema.


Diagramas de estado

Representa una máquina de estados constituida por estados, transacciones,
eventos y actividades, se utilizan para representar la vista dinámica de un sistema
son especialmente importantes para modelar el comportamiento de una interfaz,
clase o una colaboración, resaltan en comportamiento dirigido por eventos de un
objeto.


Diagrama de Actividades


Muestra el flujo de actividades en un sistema, muestra el flujo secuencial o
ramificado de actividades y los objetos en los que actúa, son importantes para



                                        22
modelar la función de un sistema así como para resaltar el flujo de control entre
objetos



1.2.6. Diagramas de Clase


Un diagrama de clases de uso muestra un conjunto de interfaces, colaboraciones
y sus relaciones. Gráficamente, un diagrama de clases es una colección de nodos
y arcos.

Los diagramas de clases contienen normalmente los siguientes elementos, clases,
interfaces, colaboraciones, relaciones de dependencia, generalización y
asociación. Los diagramas pueden también notas, restricciones, paquetes o
subsistemas, los cuales se usan para agrupar los elementos de un modelo en
partes más grandes.


Usos de los diagramas de clases


Se utilizan para modelar la vista estática de un sistema, muestra principalmente
los requisitos funcionales de un sistema y los servicios que el sistema debe
proporcionar a sus usuarios finales


Los diagramas de clases se utilizan cuado se modela la vista de diseño de un
sistema de la siguiente forma:


• Para modelar el vocabulario de un sistema

El modelado del vocabulario de un sistema implica tomar decisiones sobre que
abstracciones son parte del sistema en consideración y cuales caen fuera de sus
límites. Los diagramas de clases se utilizan para especificar estas abstracciones y
sus responsabilidades


• Para modelar colaboraciones simples

Una colaboración es una sociedad de clases, interfaces y otros elementos que
colaboran para proporcionar un comportamiento cooperativo mayor que la suma
de todos los elementos.




                                        23
Cuando se crea un diagrama de clases, se esta modelando una parte de los
elementos y las relaciones que configuran la vista de diseño del sistema, por esta
razón cada diagrama de clases debe centrarse en una colaboración cada vez.
Para modelar una colaboración se debe tener en cuenta:

•   Identificar los mecanismos que se quiere modelar, un mecanismo representa
    una función o comportamiento de la parte del sistema que se está modelando
    que resulta de la interacción de una sociedad de clases, interfaces y otros
    elementos.

•   Identificar las clases, interfaces y otras colaboraciones que participan en esta
    colaboración identificando las relaciones entre estos elementos.

•   Usar escenarios para recorrer la interacción entre estos elementos.

•   Identificar las responsabilidades y hacer un reparto equilibrada de ellas en los
    elementos que componen el sistema

Por ejemplo la siguiente figura muestra un conjunto de clases que muestran el
sistema de facturación y control de ventas de una empresa, las clases se centran
en la forma como se maneja la facturación de inmuebles y productos de consumo,
aparece una clase abstracta llamada factura que muestra a su vez 2 hijos
facturacomestibles y facturainmuebles a su vez las dos clases se muestran como
partes de otra clase denominada vendedor. La clase ventas tiene una asociación
uno a uno con vendedor y una asociación uno a muchos con controlvendedor no
se muestran atributos ni operaciones para la clase ventas pero sí se muestran sus
responsabilidades.
                            1               *
             Ventas                                   controlventas

                            1           1
         Responsabilidad                                 vendedor
         Ventas promedio
          Buscar clientes
                                   1                                                1

                                facturacomestibles                    facturainmuebles


                                                           Factura


                                                       Registrar venta()
                                                     Registrar proveedor()
                                                      Registrar cliente()
                                                          Informes()

                                        Figura 11.



                                                24
• Para modelar un esquema lógico de base de datos


Este esquema representa el plano que permite el diseño conceptual de la base de
datos sea para una base de datos relacional o una base de datos orientada a
objetos. Para modelar un esquema tenemos en cuenta:

•   Identificar las clases que van a ser persistentes en el diseño general de la
    bases de datos.
•   Crear un diagrama de clases que contenga estas clases y marcarlas como
    persistentes.
•   Expandir los detalles estructurales de estas clases, es decir, especificar los
    detalles de sus atributos y centrar su atención en la asociaciones que
    estructuran estas clases.
•   Identificar las relaciones de las bases de datos sea uno a uno, uno a varios y
    sus asociaciones.
•   Definir de manera clara las reglas de negocio relativas a la manipulación de
    datos dentro de la base de datos

La figura muestra un conjunto de clases extraídas de un sistema de información
que determina las relaciones entre los estudiantes, el profesor y el curso que el
estudiante va a estudiar

         Universidad

       Nombre: texto                                     Departamento           0..1
       Dirección: texto
      Telefono: número               tiene              Nombre: texto
                                                        añadirProfesor()
       añadirEstudiante()        1           1..*       quitarProfesor ()
       quitarEstudiante()                              obtenerProfesor ()
                                                                                        1..*
      obtenerEstudiante()
     añadirDepartamento()                                 1..*
     quitarDepartamento()
    obtenerDepartamento()

                                                                                        Asignado a

                                                                                                                   0..1
                                                                                                                   director

           Estudiante                                       Curso                                       Profesor
                             * asiste          *                                       enseña
         Nombre: texto                                 Nombre: texto                                  Nombre: texto
      idEstudiante: número                            idCurso: número
                                                                            *                  1..*



                                                    Figura 12.



                                                       25
El anterior diagrama muestra en detalle cada una de las clases con sus
respectivos atributos, los cuales permiten construir la base de datos física,
comenzando por la parte inferior izquierda se encuentra las clases estudiantes,
curso y profesores, hay una asociación


Las clases se han marcado como persistentes, es decir, sus instancias se han
concebido para almacenar en una base de datos u otra forma de almacenamiento
persistente.



1.2.7. Características Avanzadas de las Clases y relaciones

El tipo más importante de clasificador en UML es la clase, una clase es una
descripción de un conjunto de objetos que comparten los mismos atributos,
operaciones, relaciones y semántica. Sin embargo las clases no son el único tipo
de clasificador, existen otros tipos de clasificadores que ayudan a modelar:


•   Interfaz: es una colección de operaciones que especifican un servicio de una
    clase o componente




                                       Figura 13.


•   Tipos de datos: un tipo cuyos valores no tienen identidad, incluyendo los tipos
    primitivos predefinidos.



                                        <<type>>

                           int (valores entre -32000 y 320000)


                                       Figura 14.




                                            26
•   Señal: la especificación de un estímulo asíncrono enviado entre instancias


                                     <<signal>>
                                    DisparoAlarma



                                     Figura 15.


•   Componente: una parte física y reemplazable de un sistema que conforma y
    proporciona la realización de un conjunto de interfaces.



                                        Kernell32



                                     Figura 16.


•   Nodo: un elemento físico que existe en tiempo de ejecución y representa un
    recurso computacional, generalmente con alguna memoria y a menudo
    capacidad de almacenamiento.




                                     Figura 17.

•   Caso de uso: descripción de una secuencia de acciones, incluye variantes, que
    se ejecuta un sistema y produce un resultado observable para un actor
    particular




                                     Figura 18.




                                          27
•   Subsistema: agrupación de elementos, algunos de los cuales constituyen una
    especificación del comportamiento de los otros elementos contenidos




                                     <<subsystem>>
                                 subsistema de servicio al
                                          cliente



                                     Figura 19.

Los clasificadores descritos anteriormente proporcionan al modelado de sistemas
una vista general de comportamiento del sistema mostrándolo en detalle en sus
atributos y operaciones



Generalidades de las clases


Es necesario saber que para el modelado de sistemas con Uml, las clases
muestran en la definición de sus atributos ciertos tipos de símbolos, los cuales
determinan si los elementos asociados a cada clase son públicos o privados por
ejemplo:

Si la marca de elemento es un +, indica que este elemento es de acceso público y
por lo tanto se pueden operar desde cualquier instancia del sistema. Por lo
contrario si el signo es -, indica que este elemento solo es de uso exclusivo de la
clase que lo contiene. Otro caso en los cuales los elementos de la clase son por
decirlo de alguna semi privados, solo se relacionan con las clases que han sido
descendientes de la clase padre se marcan con el símbolo #.


Cuando se usa una clase, es probable que se desee características de otras
clases y también permitir que otras clases más específicas hereden características
de ella. También se puede especificar que una clase no puede tener hijos, a este
elemento se le llama hoja y se especifica escribiendo la propiedad leaf bajo el
nombre de la clase. Otra característica de las clases es cuando esta no tiene
padres, este tipo de clases se denomina raíz y se denota escribiendo debajo del
nombre de la clase root.

Podemos observar el siguiente ejemplo de notación:




                                           28
Factura(root)

                                                  Registrar venta()
                                                Registrar proveedor()
Clase padre principal                            Registrar cliente()
                                                     Informes()




                           Facturacomestibles                             Facturainmuebles
Clases hijos
                            Mostrarusuario()                            Mostrarusuario() (leaf)



                                                                    Clases hoja, no puede
                                                                       tener mas hijos
                                     Figura 20.


Las clases tienen muchas operaciones entre sí, las que se “heredan” entre clases
se denominan polimórficas esto ocurre cuando los objetos han ejecutado una
operación que esta definida en la clase que los contiene pero con la diferencia de
que la operación cambia de significado dependiendo del contexto donde se este
ejecutado.


Generalidades de las relaciones


Al modelar los elementos que constituyen el vocabulario de un sistema, también
hay que modelar cómo se relacionan entre sí estos elementos, las relaciones de
dependencia, las generalizaciones y las asociaciones son los tres bloques de
construcción de relaciones más importantes de UML. Observemos el
comportamiento de estas relaciones.


Relaciones de Dependencia:

Una dependencia es una relación de uso, la cual especifica que un cambio en la
especificación de un elemento puede afectar a otro elemento que lo utiliza, pero
no necesariamente a la inversa. Gráficamente, una dependencia se representa



                                          29
como una línea continua dirigida hacia el elemento del que se depende. Las
dependencias se deben aplicar cuando se quiera representar que un elemento
utiliza a otro

Relaciones de Generalización

Una generalización es una relación entre un elemento (superclase o padre) y un
tipo mas efectivo de ese elemento (subclase o hijo). Por ejemplo, se puede
encontrar la clase general ventana junto a un tipo mas especifico ventaconmarco,
con una relación de generalización del hijo al padre, el hijo ventaconmarco
heredará la estructura y comportamiento del padre ventana, en una generalización
la instancia del hijo pueden usarse donde quiera que se puedan usar las
instancias del padre.


La generalización se manifiesta en la herencia simple que a veces es suficiente en
a mayoría de las veces, aunque, la herencia múltiple es mas adecuada,
gráficamente se muestra de la siguiente forma:




                                    Figura 21.

En la figura anterior se muestra la clase activo con tres hijos: CuentaBancaria,
inmueble y valor dos de estos hijos (CuentaBancaria, Inmueble) tienen sus
propios hijos por ejemplo Accion y Bono son ambos hijos de valor


Dos de estos hijos (CuentaBancaria, Inmueble) heredan de varios padres
inmueble por ejemplo, es un tipo de activo, así como un tipo de Elemento-
Asegurable y CuentaBancaria, es un tipo de activo así como un
ElementoConInteres y un ElementoAsegurable




                                       30
Relaciones de Asociación


Una asociación es una relación estructural que especifica que los objetos de un
elemento se conectan a los objetos de otro, por ejemplo, una clase biblioteca
podría tener una asociación uno a muchos con clase libro, indicando que cada
instanci de libro pertenece a una instancia de biblioteca, además, dado un libro, se
puede encontrar su biblioteca, y dando una biblioteca se puede navegar hacia
todos los libros, gráficamente, un asociaciones se representa con una línea
continua entre la misma o diferentes clases. Las relaciones se utilizan para
mostrar relaciones estructurales.


En la siguiente asociación simple se muestra como se hace la navegación entre
objetos por ejemplo al modelar una asociación entre 2 objetos como Usuario y
Clave se tiene que un dado un Usuario se puede encontrar las correspondientes
Claves, pero dada una Clave no se podría identificar al Usuario correspondiente.

                               1                 *
                Usuario                                    Clave



            La línea representa una asociación y la fecha indica la
            dirección del recorrido
                                      Figura 22.



1.2.8. Interfaces, Tipos y roles

Interfaz

El manejo de las interfaces dentro del UML es importante ya que proporcionan al
modelador un registro exacto de las fronteras existentes entre los diferentes
procesos del sistema, con lo cual se pretende observar al sistema en sus
componentes integrales para así determinar que procesos se pueden afectar sin
que se afecten los otros.

La construcción de interfaces permite también el manejo de librerías estándar
reutilizables sin tener que construirlas nuevamente, permitiendo reemplazos sin
necesidad de afectar el funcionamiento general del sistema. Se entiendo como
interfaz como una colección de operaciones que sirven para especificar un servicio
de una clase o un componente.




                                           31
Cada interfaz ha de tener un nombre que la distingue de otras interfaces, el
nombre de la interfaz puede ser simple o de camino cuando en este se indica el
nombre de la interfaz y el paquete en el que se encuentre



           Nombre elemental
                                  IOrtografía


                                                     Nombre de camino
                                  Red::IRouter
                                   Figura 23.

Operaciones de las Interfaces


Al contrario de las clases y los tipos, las interfaces no especifican ninguna
estructura, las interfaces no incluyen atributos ni métodos, pero estas pueden
contener cualquier número de operaciones. La siguiente notación hace referencia
a una interfaz donde se manifiesta de manera gráfica su nombre y operaciones a
diferencia de la notación del círculo presentada anteriormente.

Proporciona un mecanismo para modelar la conformidad estática y dinámica de
una abstracción con una interfaz en un contexto específico



   Nombre de la interfaz       <<interface>>
                                FlujoURL

                              Abrirconexion()
                              EstablecerURL()        Operaciones de la interfaz


                                   Figura 24.

Notese en la representación el nombre <<interface>> como identificador de la
interfase definida.




                                       32
Las relaciones entre interfaces se realizan de la misma manera como se
relacionan con las clases puesto que las relaciones son del mismo tipo, para
recordar: relaciones de generalización, relaciones de asociación y relaciones de
dependencia.

Como se mostró anteriormente las interfaces se pueden denotar mostrándose
como un círculo o con sus operaciones, dentro de un diagrama de interacción
entre clases los resultados para mostrar las relaciones entre las clases a través de
las interfaces se expresa de la siguiente manera:




                                    Figura 25.

La primera forma es la sencilla en la cual se muestra la conexión de dos clases a
través de un circulo que representa la interfaz con la cual se comunican dichas
clases, la segunda forma muestra de manera mas detallada las operaciones con
las cuales interactúan las clases definidas antes y después de la interfase, nótese
como se representan las relaciones de dependencia de la misma forma como se
mostró en las relaciones entre clases.




                                        33
Tipos y roles

Un rol representa un comportamiento de una entidad que participa en un contexto
particular, por ejemplo consideremos una instancia de una clase denominada
profesor, este profesor puede ser de matemáticas, sociales, informática, física, etc,
para cada rol generado de clase profesor, se deduce que las propiedades cada
rol son exclusivas y en ningún momento pueden tomar propiedades de un rol que
no le corresponda.

Para representar el rol que representa un objeto dentro de una relación de clases
en notación UML se tiene por ejemplo:




                                     Figura 26.




                                     Figura 27.


La figura anterior representa una asociación de clases con una interfaz especifica,
como se ve existe una asociación de entre las clases persona y empresa en cuyp
contexto persona juega un rol llamado e, cuyo tipo es empleado




                                         34
1.2.9 Paquetes e Instancias


Un paquete es un mecanismo de próposito general para organizar elementos en
grupos, graficamente un paquete se representa como una carpeta. Cada paquete
a de contener un nombre que lo distingue de los demás.




            cliente                                        Nombre del Paquete
            +FormualarioDePedido
            +FormularioDeSeguimiento
            -Pedido




                                                    Elementos contenidos en el
                                                    paquete
                                              Figura 28.

Un paquete puede contener otros elementos incluyendo clases, interfaces,
componentes, nodos, colaboraciones, casos de uso, diagramas en incluso otros
paquetes. Sí el paquete se destruye el elemento contenido en él es destruido,
pues cada elemento cada elemento pertenece exclusivamente a un único paquete.


Una instancia es una manifestación concreta de una abstracción a la que se
puede aplicar un conjunto de operaciones y que posee un estado que almacena el
efecto de las operaciones. gráficamente una instancia se representa subrayando
su nombre


                      teclasPulsadas: Colas                   Instancia con nombre


                             : Marco                          Instancia anónima


                             agente:                          Instancia huérfana
                                              Figura 29.




                                                  35
Las instancias no aparecen aisladas, casi siempre están ligadas a una
abstracción. La mayoría de las instancias que se modelan en UML serán
instancias de clases (llamadas objetos), aunque se pueden tener instancias de
otros elementos, como componentes, nodos, casos de usos y asociaciones.


En sentido general, un objeto es algo que ocupa espacio en el mundo real o
conceptual y al que se le pueden hacer cosas. Por ejemplo, una instancia de un
nodo es normalmente un computador que se encuentra físicamente en una
habitación; una instancia de un componente ocupa algo de espacio en el sistema
de archivos; una instancia de un registro de un cliente consume algo de memoria
física, análogamente, una instancia de un billete de avión es algo sobre lo que se
pueden hacer cálculos.


1.2.10. Herencia y polimorfismo


Polimorfismo


Una de las características fundamentales de la OOP es el polimorfísmo, que no es
otra cosa que la posibilidad de construir varios métodos con el mismo nombre,
pero con relación a la clase a la que pertenece cada uno, con comportamientos
diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de
clases diferentes. Estos objetos recibirían el mismo mensaje global pero
responderían a él de formas diferentes; por ejemplo, un mensaje "+" a un objeto
ENTERO significaría suma, mientras que para un objeto STRING significaría
concatenación ("pegar" strings uno seguido al otro)


Herencia


En programación orientada a objetos, la herencia es un mecanismo que hace
posible que una clase herede todo el comportamiento y atributos de otra clase; a
través de la herencia, una clase tiene inmediatamente toda la funcionalidad de una
clase existente, debido a esto, las nuevas clases se pueden crear indicando
únicamente en que se diferencian de la clase existente, es decir, que toma la
definición previa de la cual es subclase, y que solo se le agrega características
especiales que la difieren de la clase de la cual procede. La relación de herencia
se representa mediante un triángulo en el extremo de la relación que corresponde
a la clase más general o clase “padre”.




                                       36
SEGUNDA UNIDAD

CARACTERISTICAS DEL MODELADO UML




               37
2. CARACTERISTICAS DEL MODELADO UML



2.1. Diagramas Utilizados en UML


2.1.1. Diagramas de Objetos


Los diagramas de objetos modelan las instancias de elementos contenidos en los
diagramas de clases. Un diagrama de objetos muestra un conjunto de objetos y
sus relaciones en un momento concreto. En UML, los diagramas de clase se
utilizan para visualizar los aspectos estáticos del sistema y los diagramas de
interacción se utilizan para ver los aspectos dinámicos del sistemas, y constan de
instancias de los elementos del diagrama de clases y mensajes enviados entre
ellos. En un punto intermedio podemos situar los diagramas de objetos, que
contiene un conjunto de instancias de los elementos encontrados en el diagrama
de clases, representando sólo la parte estática de una interacción, consistiendo en
los objetos que colaboraran pero sin ninguno de los mensajes intercambiados
entre ellos.


Los diagramas de objetos se emplean para modelar la vista de diseño estática o la
vista de procesos estática de un sistema al igual que se hace con los diagramas
de clases, pero desde la perspectiva de instancias reales o prototípicas. Esta vista
sustenta principalmente los requisitos funcionales de un sistema. Los diagramas
de objetos permiten modelar estructuras de datos estáticas,


En general los diagramas de objetos se utilizan para modelar estructuras de
objetos, lo que implica tomar una instantánea de los objetos de un sistema en un
cierto momento. Un diagrama de objetos representa una escena estática dentro de
la historia representada por un diagrama de interacción. Los diagramas de objetos
se utilizan para visualizar, especificar, construir y documentar la existencia de
ciertas instancias en el sistema, junto a las relaciones entre ellas.




                                        38
Figura 30.

En la figura anterior se representa un conjunto de objetos extraídos de la
implementación de un robot. Como indica la figura, un objeto representa al propio
robot, (r es una instancia de Robot), y r se encuentra actualmente en estado
movimiento. Este objeto tiene un enlace con m, una instancia de Mundo, que
representa una abstracción del modelo del mundo del robot. Este objeto tiene un
enlace con un multiobjeto, un conjunto de instancias de Elemento, que
representan entidades que el robot ha identificado, pero aún no ha asignado en su
vista del mundo.


En este instante, m está enlazado a dos instancias de Area. Una de ellas (a2)se
muestra con sus propios enlaces a tres objetos Pared y un objeto Puerta. Cada
una de estas paredes está etiquetada con su anchura actual, y cada una se
muestra enlazada a sus paredes vecinas. Como sugiere este diagrama de objetos,
el robot ha reconocido el área que lo contiene, que tiene paredes en tres lados y
una puerta en el cuarto.


Como vemos los diagramas de objetos son especialmente útiles para modelar
estructuras de datos complejas. Evidentemente puede existir una multitud de
posibles instancias de una clase particular, y para un conjunto de clases con t
relaciones entre ellas, pueden existir muchas más configuraciones posibles de




                                       39
estos objetos. Por lo tanto, al utilizar diagramas de objetos sólo se pueden mostrar
significativamente conjuntos interesantes de objetos concretos o prototípicos.



2.1.2. Diagramas de Casos de Uso

El diagrama de casos de uso representa la forma en como un Cliente (Actor)
opera con el sistema en desarrollo, además de la forma, tipo y orden en como los
elementos interactúan (operaciones o casos de uso). Un diagrama de casos de
uso consta de los siguientes elementos:

   •     Actor.
   •     Casos de Uso.
   •     Relaciones de Uso, Herencia y Comunicación.


Elementos



Actor:




                                    Figura 31.

Una definición previa, es que un Actor es un rol que un usuario juega con
respecto al sistema. Es importante destacar el uso de la palabra rol, pues con esto
se especifica que un Actor no necesariamente representa a una persona en
particular, sino más bien la labor que realiza frente al sistema.


Como ejemplo a la definición anterior, tenemos el caso de un sistema de ventas
en que el rol de Vendedor con respecto al sistema puede ser realizado por un
Vendedor o bien por el Jefe de Local.




                                        40
Caso de Uso:




                                    Figura 32.

Es una operación o tarea específica que se realiza tras una orden de algún agente
externo, sea desde una petición de un actor o bien desde la invocación desde otro
caso de uso.



Relaciones:


Las relaciones se explicaron de manera especifica en el apartado 1.2.4 de este
modulo, ahora se explica de manera sencilla para observar su uso dentro de los
diagramas de casos de uso.


• Asociación

Es el tipo de relación más básica que indica la invocación desde un actor o caso
de uso a otra operación (caso de uso). Dicha relación se denota con una flecha
simple.

• Dependencia o Instanciación

Es una forma muy particular de relación entre clases, en la cual una clase
depende de otra, es decir, se instancia (se crea). Dicha relación se denota con una
flecha punteada.




                                        41
Generalización

Este tipo de relación es uno de los más utilizados, cumple una doble función
dependiendo de su estereotipo, que puede ser de Uso (<<uses>>) o de Herencia
(<<extends>>).

Este tipo de relación esta orientado exclusivamente para casos de uso (y no para
actores).

extends: Se recomienda utilizar cuando un caso de uso es similar a otro
(características).

uses: Se recomienda utilizar cuando se tiene un conjunto de características que
son similares en más de un caso de uso y no se desea mantener copiada la
descripción de la característica.

De lo anterior cabe mencionar que tiene el mismo paradigma en diseño y
modelamiento de clases, en donde esta la duda clásica de usar o heredar.

Ejemplo:

Como ejemplo esta el caso de una Máquina Recicladora:

Sistema que controla una máquina de reciclamiento de botellas, tarros y jabas. El
sistema debe controlar y/o aceptar lo siguiente:

   •   Registrar el número de ítemes ingresados.
   •   Imprimir un recibo cuando el usuario lo solicita:
           a. Describe lo depositado
           b. El valor de cada item
           c. Total
   •   El usuario/cliente presiona el botón de comienzo
   •   Existe un operador que desea saber lo siguiente:
           a. Cuantos ítemes han sido retornados en el día.
           b. Al final de cada día el operador solicita un resumen de todo lo
              depositado en el día.
   •   El operador debe además poder cambiar:
           a. Información asociada a ítemes.
           b. Dar una alarma en el caso de que:
                  • Item se atora.
                  • No hay más papel.




                                       42
Como una primera aproximación identificamos a los actores que interactúan con el
sistema:




                                   Figura 33.

Luego, tenemos que un Cliente puede Depositar Itemes y un Operador puede
cambiar la información de un Item o bien puede Imprimir un informe:




                                   Figura 34.

Además podemos notar que un item puede ser una Botella, un Tarro o una Jaba.




                                   Figura 35.




                                      43
Otro aspecto es la impresión de comprobantes, que puede ser realizada después
de depositar algún item por un cliente o bien puede ser realizada a petición de un
operador.




                                    Figura 36.

Entonces, el diseño completo del diagrama casos de uso es:




                                    Figura 37.




                                       44
2.1.3. Diagramas de Interacción

Los diagramas de interacción se utilizan para modelar los aspectos dinámicos de
un sistema, lo que conlleva modelar instancias concretas o prototípicas de clases
interfaces, componentes y nodos, junto con los mensajes enviados entre ellos,
todo en el contexto de un escenario que ilustra un comportamiento. En el contexto
de las clases describen la forma en que grupos de objetos colaboran para proveer
un comportamiento.

En los diagramas de interacción se muestra un patrón de interacción entre objetos.
Hay dos tipos de diagrama de interacción, ambos basados en la misma
información, pero cada uno enfatizando un aspecto particular: Diagramas de
Secuencia y Diagramas de Colaboración.


Diagrama de Secuencia

Un diagrama de Secuencia muestra una interacción ordenada según la secuencia
temporal de eventos. En particular, muestra los objetos participantes en la
interacción y los mensajes que intercambian ordenados según su secuencia en el
tiempo. El eje vertical representa el tiempo, y en el eje horizontal se colocan los
objetos y actores participantes en la interacción, sin un orden prefijado. Cada
objeto o actor tiene una línea vertical, y los mensajes se representan mediante
flechas entre los distintos objetos. El tiempo fluye de arriba abajo. Se pueden
colocar etiquetas (como restricciones de tiempo, descripciones de acciones, etc.)
bien en el margen izquierdo o bien junto a las transiciones o activaciones a las que
se refieren.
                                                  Objetos


               c : Cliente                                                    p : ProxyODBC


                       <<create>>
                                           :Transacción

                      establecerAcciones(a,d,o)     establecerValores(d,3,4)
   Tiempo


                                                    establecerValores(a,”CO”)

                                éxito
                                                                                              Línea de vida
                             <<destroy>>
                                                            Foco de control
                                              Figura 38.




                                                  45
Los diagramas de secuencia tienen 2 características que los distinguen de los
diagramas de colaboración, en primer lugar está la línea de vida de un objeto que
es la línea discontinua vertical que representa la existencia de un objeto a lo largo
de un periodo de tiempo. La mayoría de los objetos que aparecen en un diagrama
de secuencia existirán mientras dure la interacción, los objetos se colocan en la
parte superior del diagrama con sus líneas de vida dibujadas de arriba hasta
abajo. Pueden crearse objetos durante la interacción, sus líneas de vida
comienzan con la recepción de mensajes estereotipado como create. Los objetos
pueden destruirse durante la interacción, sus líneas de vida acaban con la
recepción del mensaje estereotipado como destroy, además, se muestra la señal
visual de una gran X que marca el final de sus vidas.


Diagrama de Colaboración


Un diagrama de colaboración destaca la organización de los objetos que
participan en una interacción, un diagrama de colaboración se construye
colocando en primer lugar los objetos que participan en la colaboración como
nodos de un grafo. A continuación se representa los enlaces que conectan esos
objetos como arcos de grafo, por último, estos enlaces se adorna con los
mensajes que envían y reciben los objetos, esto da la lector una señal visual clara
del flujo de control en el contexto de la organización estructural de los objetos que
colaboran

                         c : Cliente                                        Objeto


                                   1: <<create>>
                                   2: establecerAcciones(a,d,o)
          enlace                   3: <<destroy>>

                   <<local>>
                                        mensaje
                                                         <<global>>
                        :Transacción                                        P : ProxyODBC
                                           2.1:establecerValores(d,3,4)
                                           2.2: establecerValores(a,”Co”)


                                          Figura 39.

Los diagramas colaboración tienen dos características que los distinguen de los
diagramas de secuencia, el primero para indicar cómo se enlaza un objeto a otro,
se puede asociar un objeto al extremo mas lejano de un enlace con la palabra
local que indica que el objeto designado es local al emisor. En segundo lugar esta
el numero de secuencia, para indicar la ordenación temporal de los mensajes, se



                                                46
precede de un numero iniciando con el numeral 1, que se incrementa
secuencialmente por cada nuevo mensaje en el flujo de control


2.1.4. Diagramas de Actividades


Un diagrama de actividades muestra el flujo de actividades, siendo un actividad
una ejecución general entre los objetos que se esta ejecutando en un momento
dado dentro de una máquina de estados, el resultado de un actividad es una
acción que producen un cambio en el estado del sistema o la devolución de un
valor. Las acciones incluyen llamadas a otras operaciones, envío de señales,
creación o destrucción de objetos o simples cálculos. Gráficamente un diagrama
de actividades será un conjunto de arcos y nodos. Desde un punto de vista
conceptual, el diagrama de actividades muestra cómo fluye el control de unas
clases a otras con la finalidad de culminar con un flujo de control total que se
corresponde con la consecución de un proceso más complejo. Por este motivo, en
un diagrama de actividades aparecerán acciones y actividades correspondientes a
distintas clases. Colaborando todas ellas para conseguir un mismo fin. Ejemplo:
Hacer un pedido.


Contenido del diagrama de actividades


Básicamente un diagrama de actividades contiene:

• Estados de actividad
• Estados de acción
• Transiciones
• Objetos


Estados de actividad y estados de acción


La representación de ambos es un rectángulo con las puntas redondeadas, en
cuyo interior se representa bien una actividad o bien una acción. La forma de
expresar tanto una actividad como una acción, no queda impuesta por UML, se
podría utilizar lenguaje natural, una especificación formal de expresiones, un
metalenguaje, etc. La idea central es la siguiente: “Un estado que represente una
acción es atómico, lo que significa que su ejecución se puede considerar
instantánea y no puede ser interrumpida” En la siguiente figura, podemos ver
ejemplos de estados de acción.




                                       47
Figura 40.


En cambio un estado de actividad, sí puede descomponerse en más sub-
actividades representadas a través de otros diagramas de actividades. Además
estos estados sí pueden ser interrumpidos y tardan un cierto tiempo en
completarse. En los estados de actividad podemos encontrar otros elementos
adicionales como son: acciones de entrada (entry) y de salida (exit) del estado en
cuestión, así como definición de submáquinas, como podemos ver en la figura
siguiente

                                ProcesarFactura(Fact)
                          Entry / SacarPrimeraFactura(Fact)


                                       Figura 41.

Transiciones


Las transiciones reflejan el paso de un estado a otro, bien sea de actividad o de
acción. Esta transición se produce como resultado de la finalización del estado del
que parte el arco dirigido que marca la transición. Como todo flujo de control debe
empezar y terminar en algún momento, podemos indicar esto utilizando dos
disparadores de inicio y fin tal y como queda reflejado en el ejemplo siguiente


Figura 41.




       Estado de Acción




                                           48
Bifurcaciones


Un flujo de control no tiene porqué ser siempre secuencial, puede presentar
caminos alternativos. Para poder representar dichos caminos alternativos o
bifurcación se utilizará como símbolo el rombo. Dicha bifurcación tendrá una
transición de entrada y dos o más de salida. En cada transición de salida se
colocará una expresión booleana que será evaluada una vez al llegar a la
bifurcación, las guardas de la bifurcación han de ser excluyentes y contemplar
todos los casos ya que de otro modo la ejecución del flujo de control quedaría
interrumpida. Para poder cubrir todas las posibilidades se puede utilizar la palabra
ELSE, para indicar una transición obligada a un determinado estado cuando el
resto de guardas han fallado. Veamos un ejemplo de bifurcación.

Bifurcación secuencial




                                    Figura 42.

División y unión


No sólo existe el flujo secuencial y la bifurcación, también hay algunos casos en
los que se requieren tareas concurrentes. UML representa gráficamente el
proceso de división, que representa la concurrencia, y el momento de la unión de
nuevo al flujo de control secuencial, por una línea horizontal ancha. Podemos ver
cómo se representa gráficamente.


Figura 43.




                                        49
Calles

Cuando se modelan flujos de trabajo de organizaciones, es especialmente útil
dividir los estados de actividades en grupos, cada grupo tiene un nombre concreto
y se denominan calles. Cada calle representa a la parte de la organización
responsable de las actividades que aparecen en esa calle. Gráficamente quedaría
como se muestra a continuación



                  clientes                      ventas     almacén
                       Solic Producto




                                         Procesar Pedido
                                                            Extraer Pedido



                                                            Enviar Pedido




                  Recibir Pedido         Fact. Cliente




                  Pagar Factura

                                        Cerrar Pedido




                                          Figura 44.




                                                50
2.2. Modelado dinámico


2.2.1 Eventos y señales


Un evento es la especificación de un acontecimiento significativo que ocupa    un
lugar en el tiempo y en el espacio. En el contexto de la máquinas de estado,   un
evento es la aparición de un estímulo que puede disparar una transición        de
estado. Un señal es un tipo de evento que representa la especificación de      un
estímulo asíncrono que es transmitido entre instancias.

Señales


Una señal representa un objeto con nombre que es enviado (lanzado)
asíncronamente por un objeto y recibido(capturado) por otro. El tipo más común
de señal interna que se presenta dentro de los lenguajes de programación son las
excepciones.


Una señal puede enviarse como la acción de una transición de estado en una
máquina de estados, o como el envío de un mensaje en una interacción.. En UML,
la relación entre una operación y los eventos que puede enviar se modela con
realcion de dependencia, estereotipada como send.


Las señales y las excepciones se modelan como clases estereotipadas, se puede
utilizar una dependencia, estereotipada como send para indicar que la operación
envía una señal particular.


          Señal                                   AgenteDeMovimiento
                                                  Posición
                                                  Velocidad
             <<signal>>            <<send>>
               colisión                           moverA()
            fuerza : Float




          parámetros               Figura 44.




                                       51
Eventos


Un evento de llamada representa una invocación de una operación, un evento
puede disparar una transición de estado de una máquina de estados. Cuando un
objeto invoca una operación sobre otro objeto que tiene una máquina de estados,
el control pasa del emisor al receptor, el evento dispara la transición, la operación
acaba, el receptor pasa a un nuevo estado y el control regresa al emisor.
Gráficamente se muestra al evento con sus parámetros, como el disparador de
una transición de estado.
                                         evento


                          iniciarpilotoAutomático(normal)
            Manual                                                Automático


                                                  parámetro
                                        Figura 45.

Un evento de tiempo es un evento que representa el paso del tiempo, en UML se
modela un evento de tiempo con la palabra alter seguida de alguna expresión que
se evalúa para producir algún periodo de tiempo.


Un evento de cambio es un evento que representa un cambio en el estado o e
cumplimiento de alguna condición, se modela con la palabra when seguida de
alguna expresión booleana.



               when (11:49 PM) /AutoTest()


                                             alter (2 Segundos)
                         Inactivo            /cortarConexión()         Activo



      Evento de cambio
                                                    Evento de tiempo


                                        Figura 46.




                                             52
2.3.2 Máquinas de Estado


Una máquina de estados es un comportamiento que especifica las secuencias de
estados por las que pasa un objeto a lo largo de su vida en respuesta a eventos.
Un Estado es una condición o situación en la vida de un objeto durante la cual
satisface alguna condición, realiza una actividad o espera algún evento. Un evento
es la especificación de un aconecimietno significativo que ocupa un lugar en el
tiempo y el espacio, es la estimulación que puede disparar una transición de
estados


Un transición es una relación entre dos estados que indica que un objeto que esté
en el primer estado realizará ciertas acciones y entrará el segundo estado cuando
ocurra un evento específico y se satisfagan unas condiciones específicas y una
actividad es una ejecución no atómica en curso, dentro de una máquina de
estados.


Estados


Un estado es una condcion o situación enla vida de un objeto durante la cual
satisface alguna condición, realiza una actividad o espera un evento. Un objeto
puede estar en cualquier estado durante una cantidad de tiempo determinado, por
ejemplo un calentador de agua puede estar en cualquiera de los cuatro estados:
inactivo, en preparación (esperando alcanzar la temperatura adecuada),
activo(cuando el calentador alcanza la temperatura ideal para calentar el agua), y
pagado. Un estado tiene varias partes, nombre, acciones de entrada salida,
transiciones internas, subastados y eventos diferidos. Como se muestra a
continuación un estado se representa con un rectángulo con las esquinas
redondeadas.


                                                        apagar           Estado final
  Estado inicial

                   Inactivo        teclaPulsada      Funcionando

                                    Terminado



      nombre
                                                                     nombre
Figura 47.                           estado




                                         53
Como se observa en la grafica anterior en la máquina de estados de un objeto se
pueden definir dos estados especiales, en primer lugar e punto inicial que indica el
puno de comienzo por defecto para la máquina de estados o el subestado. En
segundo lugar, el estado final, que indica la ejecución de la máquina de estado o
del estado que lo contiene ha finalizado


Transiciones


Una transición es una relación entre dos estados que indica que un objeto que
esté en el primer lugar estado realizará ciertas acciones y entrará en el segundo
estado cuando ocurra un evento específico y se satisfagan unas condiciones
específicas, cuando se produce este cambio de estado, se dice que la transición
se ha disparado, hasta que se dispara la transición se dice que el objeto está en
el estado origen, después de dispararse se dice que esta en el estado destino.

 Evento de tiempo         Envío de señal
                                                   Evento de disparo


                                                                       Transición sin disparador

     alter (2 Segundos) /send c.estaActivo
                            autotransición

                                     ruido
             Inactivo                                 Inactivo                              Inactivo



 objetoEn(p)[representaAmenaza]/
 t.añadirObjeto(p)
                                                                         contactar
                                                      Inactivo                              Inactivo



                           Evento de disparo con parámetros
   acción                  condicion de gurda
                                                 Figura 48.


Una transición tiene cinco partes, estado origen, evento disparado, condición de
guarda, acción y estado de destino; una transición se representa con una línea
continua dirigida desde el estado origen hacia el destino y una autotransición es
una transición cuyos estados origen y destino son los mimos




                                                       54
2.4.3 Tiempo y Espacio


Una marca de tiempo denota el instante en el que ocurre un evento, gráficamente,
una marca de tiempo es una expresión obtenida a partir del nombre dado al
mensaje; una expresión de tiempo es una expresión que al evaluarse genera un
valor de tiempo absoluto o relativo. Una restricción de tiempo se representa como
cualquiera otra restricción, es decir, una cadena de texto entre llaves y
normalmente conectada a un electo mediante una relación de dependencia. La
localización es la asignación de un componente de un nodo. Gráficamente, la
localización se representa como un valor etiquetado, es decir, una cadena de texto
entra llaves colocada debajo del nombre del elemento, o mediante la inclusión de
componentes dentro de nodos.
                                                   Restricción de tiempo

                         {cada 1ms}
                         c1 : notasDePrueva

   c : ControladorMIDI                        : ColecciónDeNotas                                         Restricción de tiempo

                                                              {executeTime <10 ms}
                                                              c2 : notasDePrueba()

                                                    n: Nota

                                                              c3 : a ñadir(k)


                                              b: BufferDeEventosMIDI                             t : TransmisionMIDI
Figura 49.                                                                      t1 : quitar()
                                                                                {cada 1 ms}




                                                                          Restricción de tiempo




En el gráfico anterior se observa la manera como se representa el tiempo y el
siguiente gráfico se muestra la localización


Figura 50.




          Localización por inclusión



                                                         55
                                               t : TransmisionMIDI                          Valor etiquetado de localización
                                               {location=Enrutador}
2.4.4 Diagramas de Estado


Es un tipo especial de diagrama y comparte las propiedades comunes al resto de
los diagramas, lo que distingue a un diagrama de estados de los otros tipos de
diagramas es su contenido, normalmente los diagramas de estados contienen:

• Estados simples y compuestos
• Transiciones, incluyendo eventos y acciones

Observemos un diagrama de estados a continuación con todos sus componentes



     Estado inicial




                                sonando
            Inactivo                                                    cabeceraOK
                          Transición sin                 Conectando                   Procesando
                            disparador
enviarFax
                                     colgar                                            verificaciónOK

                       evento                                                                           evento
                                              entry/descolgar
     Transmisión                                                      Limpiando
                        error/imprimirError   exit/desconectar


  estado
                                     acción                           acción
                                                                                     Estado compuesto




                                                    Figura 51.




                                                           56
2.3. Modelado Arquitectónico


2.3.1. Componentes, despliegue, colaboraciones y patrones

Componentes

Un componente es una parte física y reemplazable de un sistema que conforma
un conjunto de interfaces. Gráficamente, un componente se representa como un
rectángulo con pestañas, un componente debe tener un nombre que lo distinga del
resto de componentes. El nombre de un componente puede ser simple o de
camino que consta del nombre del componente precedido del nombre del paquete
en el que se encuentra, usualmente un componente se dibuja solamente con su
nombre pero se pueden adornar con valores, etiquetas o con algún
comportamiento que indique sus detalles. Como se muestra en la siguiente figura

                                    Agentefraudes.dll      Componente con nombre
                                                                  simple




        agenteFraudes                 PoliticaFraudes     BusquedaDePatrones




                                         clases


                                         Figura 52.

                                          Interfaz

              Imagen.java                                     Imagen.java

                                     ObservadorDeImagen



                                         Figura 53.

                    Relación de dependencia
                                                          realización



                                              57
Despliegue


Un nodo es un elemento físico que existe en tiempo de ejecución y representa un
recurso computacional que generalmente tiene alguna memoria y a menudo
capacidad de procesamiento, gráficamente un nodo se representa como un cubo. .
El nombre de un componente puede ser simple o de camino que consta del
nombre del componente precedido del nombre del paquete en el que se
encuentra, usualmente un nodo se dibuja solamente con su nombre pero se
pueden adornar con valores, etiquetas o con algún comportamiento que indique
sus detalles. Como se muestra en la siguiente figura

                                                         nodo con nombre
                                                              simple
                                   ventas




                   pos.exe                      Contactos.exe




                                 componentes



                                   Figura 54.

Colaboraciones


Una colaboración es una sociedad de clases, interfaces y otros elementos que
colaboran para proporcionar un comportamiento cooperativo mayor que la suma
de los comportamientos de sus elementos. Una colaboración es también la
especificación de cómo un elemento tal como un clasificador o un operación, es
realizado mediante un conjunto de clasificadores y asociaciones que juegan roles
específicos utilizados de una forma específica, gráficamente, una colaboración se
representa como una elipse con borde discontinua. El nombre de una colaboración
puede ser simple o de camino que consta del nombre de la colaboración
precedido del nombre del paquete en el que se encuentra, usualmente un nodo se
dibuja solamente con su nombre pero se pueden adornar con valores, etiquetas o
con algún comportamiento que indique sus detalles. Como se muestra en la



                                       58
siguiente figura



                      Nombre


                                        Paso de mensajes
                                          entre nodos


                                    Figura 55.

Patrones


Un patrón es una solución común a un problema común en un contexto dado. Los
patrones ayudan a visualizar, especificar, construir y documentar los artefactos de
un sistema con gran cantidad de software. Hay dos tipos de patrones, patrones de
diseño(Mecanismos) y frameworks.


Mecanismos


Un mecanismo simplemente muestra un conjunto de abstracciones que colaboran
entre si par llevar a cabo algún comportamiento común, estos mecanismo se
muestran como colaboraciones simples, ya que solamente dan el nombre a una
sociedad de clases.



       frameworks             <<framework>>
                            recepción de pedidos



                                   facturación



                                                 comprobación


Figura 56.

                                             mecanismos
                                        59
Los mecanismos pueden nombrar una plantilla formada por un conjunto de de
abstracciones que colaboran entre sí para llevar a cabo algún comportamiento
común, se representan como colaboraciones parametrizadas que se muestran de
forma parecida a las clases plantilla, observe la siguiente figura


                                          rol                         platilla



             ColaTares          Sujeto                  Sujeto
                                                      Observador

                ligadura                        Observador

        BarraDesplazamiento
                                Observador

                                                                   colaboraciones

                                              rol

                                    Figura 57.


Frameworks


Un frameworks es un patrón arquitectónico que proporciona una plantilla
extensible para aplicaciones dentro de un dominio.

La siguiente figura ilustra un frameworks, llamado AdministradorCiclo entre otras
cosas, este frameworks incluye una colaboración EventosComunes que contiene
un conjunto de clases evento, junto con un mecanismo GestorDeEventos para
procesar estos eventos de forma cíclica. Un cliente que utilice este frameworks tal
como un Marcapasos podría construir sobre las abtracciones en EventosComunes
creando subclases y también podría emplear una instancia del mecanismo
GestorDeEventos




                                         60
frameworks
                                             ligaduras       Pacificador

                   <<frameworks>>
                  AdministradorCiclico

                                   Cliente
                                   Gestor

                      GestorDeEvento
                             s

                                                  EventosComunes




                                  colaboraciones
                                       Figura 58.


2.3.2. Diagramas de Componentes

Lo que distingue a un diagrama de componentes de otros tipos de diagramas es
su contenido. Normalmente contienen componentes, interfaces y relaciones entre
ellos. Y como todos los diagramas, también puede contener paquetes utilizados
para agrupar elementos del modelo.


Un diagrama de componentes muestra las organizaciones y dependencias lógicas
entre componentes software, sean éstos componentes de código fuente, binarios
o ejecutables. Desde el punto de vista del diagrama de componentes se tienen en
consideración los requisitos relacionados con la facilidad de desarrollo, la gestión
del software, la reutilización, y las restricciones impuestas por los lenguajes de
programación y las herramientas utilizadas en el desarrollo. Los elementos de
modelado dentro de un diagrama de componentes serán componentes y
paquetes.


Dado que los diagramas de componentes muestran los componentes software que
constituyen una parte reusable, sus interfaces, y su interrelaciones, en muchos
aspectos se puede considerar que un diagrama de componentes es un diagrama




                                             61
de clases a gran escala. Cada componente en el diagrama debe ser documentado
con un diagrama de componentes más detallado, un diagrama de clases, o un
diagrama de casos de uso.


Un paquete en un diagrama de componentes representa un división física del
sistema. Los paquetes se organizan en una jerarquía de capas donde cada capa
tiene una interfaz bien definida. Un ejemplo típico de una jerarquía en capas de
este tipo es: Interfaz de usuario; Paquetes específicos de la aplicación; Paquetes
reusables; Mecanismos claves; y Paquetes hardware y del sistema operativo.


Un diagrama de componentes se representa como un grafo de componentes
software unidos por medio de relaciones de dependencia (generalmente de
compilación). Puede mostrar también que un componente software contiene una
interfaz, es decir, la soporta. Un ejemplo se muestra a continuación



                       find.html
         página
                                                    find.exe




                                                  nateng.dll
                      componente


                                                                   biblioteca
                                    Figura 60.



2.3.3. Diagramas de Despliegue


Cuando se trata de hardware y el software del sistema, se utiliza los diagramas de
despliegue para razonar sobre la tipología de procesadores y dispositivos sobre
los que reejecuta el software. Los diagramas de despliegue se utilizan para
visualizar los aspectos estáticos de estos nodo físicos y sus relaciones y para
especificar sus detalles para la construcción, como se muestra a continuación



                                       62
nodo

                                             modem




                       <<procesadorr>>                    <<procesadorr>>                     nodo

                        servidor cache                     servidor cache

     conexión




<<procesadorr>>        <<procesadorr>>           <<procesadorr>>            <<procesadorr>>

servidor principal         servidor                 servidor                   servidor




                                         Figura 61.

   Un diagrama de despliegue es un diagrama que muestra la configuración de los
   nodos que participan en la ejecución y de los componentes que residen en ellos,
   gráficamente, un diagrama de despliegue es una colección de nodos y arcos.



   2.3.4. Sistemas y modelos


   UML proporciona una representación gráfica de los sistemas y los subsistemas,
   esta notación permite visualizar la descompensación de un sistema en
   subsistemas más pequeños, gráficamente, un sistema y un subsistema se
   representa con el símbolo de un paquete estereotipado. Observemos su
   representación a continuación




                                            63
<<system>>
                                 sistema de
                                   ventas




           <<subsystem>>        <<subsystem>>        <<subsystem>>
            subsistema de        subsistema de        subsistema de
              servicio al          gestión de           gestión de
                cliente             almacén            producción



                                  Figura 62.

Un sistema posiblemente descompuesto en una colección de subsistemas, es un
conjunto de elementos organizados para lograr un propósito y descrito por un
conjunto de modelos. Un subsistema es una agrupación de elementos, algunos de
los cuales constituyen una especificación del comportamiento ofrecido por otros
elementos.




                                       64
TERCERA UNIDAD

DESARROLLO ORIENTADO A OBJETOS CON UML




                  65
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609
200609

Más contenido relacionado

La actualidad más candente

La actualidad más candente (17)

UML. Un análisis comparativo para la diagramación de software
UML. Un análisis comparativo para la diagramación de softwareUML. Un análisis comparativo para la diagramación de software
UML. Un análisis comparativo para la diagramación de software
 
¿Que es uml ? ACTVIDAD No 4 Jennifer Garcia Montiel 2 "D"
¿Que es uml ? ACTVIDAD No 4  Jennifer Garcia Montiel 2 "D"¿Que es uml ? ACTVIDAD No 4  Jennifer Garcia Montiel 2 "D"
¿Que es uml ? ACTVIDAD No 4 Jennifer Garcia Montiel 2 "D"
 
Modelo dinamico
Modelo dinamicoModelo dinamico
Modelo dinamico
 
UML
UMLUML
UML
 
Gestion informatica i
Gestion informatica iGestion informatica i
Gestion informatica i
 
Uml
UmlUml
Uml
 
Uml
UmlUml
Uml
 
Diagramas de uml generacion de codigos
Diagramas de uml generacion de codigosDiagramas de uml generacion de codigos
Diagramas de uml generacion de codigos
 
Informatica
Informatica Informatica
Informatica
 
Semanas01y02
Semanas01y02Semanas01y02
Semanas01y02
 
índices automáticos en Microsoft Office Word para investigaciones y tesis
índices automáticos en Microsoft Office Word para investigaciones y tesisíndices automáticos en Microsoft Office Word para investigaciones y tesis
índices automáticos en Microsoft Office Word para investigaciones y tesis
 
Informe Proyecto Final
Informe Proyecto FinalInforme Proyecto Final
Informe Proyecto Final
 
Curso Uml 1 Introduccion
Curso Uml   1 IntroduccionCurso Uml   1 Introduccion
Curso Uml 1 Introduccion
 
Manual microsoft power point 2007
Manual   microsoft power point 2007Manual   microsoft power point 2007
Manual microsoft power point 2007
 
MODELAMIENTO VISUAL Y UML
MODELAMIENTO VISUAL Y UMLMODELAMIENTO VISUAL Y UML
MODELAMIENTO VISUAL Y UML
 
Manual Simulación con Arena.
Manual Simulación con Arena.Manual Simulación con Arena.
Manual Simulación con Arena.
 
Manual c++
Manual c++Manual c++
Manual c++
 

Similar a 200609 (20)

Uml
UmlUml
Uml
 
Uml
UmlUml
Uml
 
Modelado, Ingenieria de Software
Modelado, Ingenieria de SoftwareModelado, Ingenieria de Software
Modelado, Ingenieria de Software
 
Modelado Unificado (UML)
Modelado Unificado (UML)Modelado Unificado (UML)
Modelado Unificado (UML)
 
Informe Proyecto Final
Informe Proyecto FinalInforme Proyecto Final
Informe Proyecto Final
 
Nesii
NesiiNesii
Nesii
 
UML - Analisis de Sistemas
UML - Analisis de SistemasUML - Analisis de Sistemas
UML - Analisis de Sistemas
 
Estanislao contreras object-oriented_y_uml
Estanislao contreras object-oriented_y_umlEstanislao contreras object-oriented_y_uml
Estanislao contreras object-oriented_y_uml
 
Uml tutorial-visual-paradigm
Uml tutorial-visual-paradigmUml tutorial-visual-paradigm
Uml tutorial-visual-paradigm
 
Ha2 nv50 rodriguez montiel moises-staruml
Ha2 nv50 rodriguez montiel moises-starumlHa2 nv50 rodriguez montiel moises-staruml
Ha2 nv50 rodriguez montiel moises-staruml
 
.Act4 gomez cruz_diego_adolfo.
.Act4 gomez cruz_diego_adolfo..Act4 gomez cruz_diego_adolfo.
.Act4 gomez cruz_diego_adolfo.
 
HA2NV50 EQ8-StarUML
HA2NV50 EQ8-StarUMLHA2NV50 EQ8-StarUML
HA2NV50 EQ8-StarUML
 
Uml
UmlUml
Uml
 
UML-Casos de Uso.pdf
UML-Casos de Uso.pdfUML-Casos de Uso.pdf
UML-Casos de Uso.pdf
 
Curso de modelado uml(1)
Curso de modelado uml(1)Curso de modelado uml(1)
Curso de modelado uml(1)
 
Camtasia Getting Started Guide
Camtasia Getting Started GuideCamtasia Getting Started Guide
Camtasia Getting Started Guide
 
MODELADO RUP UML
MODELADO RUP UMLMODELADO RUP UML
MODELADO RUP UML
 
Entornos de Desarrollo - UML - Angel Mancebo Guerrero
Entornos de Desarrollo - UML - Angel Mancebo GuerreroEntornos de Desarrollo - UML - Angel Mancebo Guerrero
Entornos de Desarrollo - UML - Angel Mancebo Guerrero
 
Curso Uml 1 Introduccion
Curso Uml   1 IntroduccionCurso Uml   1 Introduccion
Curso Uml 1 Introduccion
 
Desarrollo de uml
Desarrollo de umlDesarrollo de uml
Desarrollo de uml
 

Más de cgviviana

Más de cgviviana (20)

Polinomios juego
Polinomios juegoPolinomios juego
Polinomios juego
 
Resumen limites
Resumen limitesResumen limites
Resumen limites
 
Act en moodle
Act en moodleAct en moodle
Act en moodle
 
Act en moodle
Act en moodleAct en moodle
Act en moodle
 
Ct
CtCt
Ct
 
Matema
MatemaMatema
Matema
 
Matema
MatemaMatema
Matema
 
Log
LogLog
Log
 
Log2
Log2Log2
Log2
 
72116073 fundamentos-de-ingenieria-economica
72116073 fundamentos-de-ingenieria-economica72116073 fundamentos-de-ingenieria-economica
72116073 fundamentos-de-ingenieria-economica
 
Trabrecnot
TrabrecnotTrabrecnot
Trabrecnot
 
1 cal cder
1 cal cder1 cal cder
1 cal cder
 
1 cal cder
1 cal cder1 cal cder
1 cal cder
 
Dioses
DiosesDioses
Dioses
 
2 limites
2 limites2 limites
2 limites
 
1. funciones
1. funciones1. funciones
1. funciones
 
1. funciones
1. funciones1. funciones
1. funciones
 
Fis vectores
Fis vectores Fis vectores
Fis vectores
 
Fisica
FisicaFisica
Fisica
 
so
soso
so
 

200609

  • 1. MODULO LENGUAJE UNIFICADO DE MODELADO UML ING. HAROLD CABRERA MEZA UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA SAN JUAN DE PASTO, 2006 1
  • 2. TABLA DE CONTENIDO INTRODUCCION .................................................................................................... 6 1. INTRODUCCIÓN AL LENGUAJE UNIFICADO DE MODELADO ..................... 7 1.1. QUÉ ES UML?................................................................................................. 7 1.1.2. UML NO ES UN MÉTODO ........................................................................... 8 1.1.3. MODELOS .................................................................................................... 9 1.1.4. ELEMENTOS COMUNES A TODOS LOS DIAGRAMAS .......................... 10 1.2. MODELADO ESTRUCTURADO ................................................................... 11 1.2.1. BLOQUES DE CONSTRUCCIÓN DE UML................................................ 11 1.2.2. CLASES...................................................................................................... 15 1.2.3. OBJETOS ................................................................................................... 17 1.2.4. ASOCIACIONES......................................................................................... 18 1.2.5. DIAGRAMAS .............................................................................................. 20 1.2.6. DIAGRAMAS DE CLASE ........................................................................... 23 1.2.7. CARACTERÍSTICAS AVANZADAS DE LAS CLASES Y RELACIONES . 26 1.2.8. INTERFACES, TIPOS Y ROLES ................................................................ 31 1.2.9 PAQUETES E INSTANCIAS ...................................................................... 35 1.2.10. HERENCIA Y POLIMORFISMO ............................................................... 36 2. CARACTERISTICAS DEL MODELADO UML ................................................. 38 2.1. DIAGRAMAS UTILIZADOS EN UML ............................................................ 38 2
  • 3. 2.1.1. DIAGRAMAS DE OBJETOS ...................................................................... 38 2.1.2. DIAGRAMAS DE CASOS DE USO............................................................ 40 2.1.3. DIAGRAMAS DE INTERACCIÓN .............................................................. 45 2.1.4. DIAGRAMAS DE ACTIVIDADES ............................................................... 47 2.2. MODELADO DINÁMICO ............................................................................... 51 2.2.1 EVENTOS Y SEÑALES............................................................................... 51 2.3.2 MÁQUINAS DE ESTADO............................................................................ 53 2.4.3 TIEMPO Y ESPACIO ................................................................................... 55 2.4.4 DIAGRAMAS DE ESTADO ......................................................................... 56 2.3. MODELADO ARQUITECTÓNICO................................................................. 57 2.3.1. COMPONENTES, DESPLIEGUE, COLABORACIONES Y PATRONES... 57 2.3.2. DIAGRAMAS DE COMPONENTES ........................................................... 61 2.3.3. DIAGRAMAS DE DESPLIEGUE ................................................................ 62 2.3.4. SISTEMAS Y MODELOS ........................................................................... 63 3. DESARROLLO ORIENTADO A OBJETOS CON UML ................................... 66 3.2. FASE DE PLANIFICACIÓN Y ESPECIFICACIÓN DE REQUISITOS ........... 68 3.2.1 ACTIVIDADES ............................................................................................. 68 3.2.2. REQUISITOS .............................................................................................. 68 3.2.3. CONSTRUCCIÓN DEL MODELO DE CASOS DE USO............................ 74 3.2.4. PLANIFICACIÓN DE CASOS DE USO SEGÚN CICLOS DE 3
  • 4. DESARROLLO ..................................................................................................... 75 3.3. DISEÑO DE ALTO NIVEL ............................................................................. 76 3.3.1 ACTIVIDADES ............................................................................................. 77 3.3.2. MODELO CONCEPTUAL........................................................................... 77 3.3.3. DIAGRAMAS DE SECUENCIA DEL SISTEMA ......................................... 79 3.3.4. DIAGRAMAS DE ESTADOS ...................................................................... 81 3.4. DISEÑO DE BAJO NIVEL ............................................................................. 82 3.4.1 ACTIVIDADES ............................................................................................. 82 3.4.2. CASOS DE USO REALES ......................................................................... 82 3.4.3. DIAGRAMAS DE INTERACCIÓN .............................................................. 83 3.4.4. CONSTRUCCIÓN DIAGRAMAS DE DISEÑO ........................................... 88 3.5. FASES DE IMPLEMENTACIÓN Y PRUEBAS .............................................. 90 4
  • 5. PRIMERA UNIDAD INTRODUCCIÓN AL LENGUAJE UNIFICADO DE MODELADO 5
  • 6. INTRODUCCION Unas de las etapas vitales para un diseñador de software, es el análisis y diseño de sistemas, el análisis de sistemas es el proceso de clasificación e interpretación de hechos, diagnóstico de problemas y manejo de la información para hacer mejoras al sistema, siendo el diseño la fase de planificación, reemplazo o complementación de un sistema organizacional existen. Para estas fases del desarrollado de software se han desarrollado diferentes modelos con los cuales se han obtenido resultados satisfactorios, mas no óptimos puesto que se han sesgado unos con otros. Es entonces cuando se plantea la necesidad de crear un mismo lenguaje que permita modelar sistemas, de manera que se pueda en cualquier momento construir software partiendo de un solo esquema de modelado, tanto estructural como orientado a objetos El Lenguaje Unificado de Modelado (Unified Modelin Language UML), es un lenguaje estándar para escribir planos de software, UML se puede utilizarse para visualizar, especificar, construir y documentar los artefactos de un sistema que involucra una gran cantidad de software. UML prescribe un conjunto de notaciones y diagramas estándar para modelar sistemas orientados a objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML se puede usar para modelar distintos tipos de sistemas: sistemas de software, sistemas de hardware, y organizaciones del mundo real. UML ofrece nueve diagramas en los cuales modelar sistemas. Es un lenguaje muy expresivo, que cubre todas las vistas necesarias para desarrollar y luego desplegar tales sistemas. El curso académico denominado Lenguaje de Modelado -UML- Electiva, esta orientado a hacia el manejo adecuado de las herramientas que ofrece el lenguaje de modelado orientado a objetos, desde la construcción de los diagramas de interacción del sistema hasta la aplicación del modelo en un caso real de desarrollo. 6
  • 7. 1. INTRODUCCIÓN AL LENGUAJE UNIFICADO DE MODELADO 1.1. Qué es Uml? El Lenguaje Unificado de Modelado (Unifield Modelin Language UML), es un lenguaje estándar para escribir planos de software, UML se puede utilizarse para visualizar, especificar, construir y documentar los artefactos de un sistema que involucra una gran cantidad de software. UML prescribe un conjunto de notaciones y diagramas estándar para modelar sistemas orientados a objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML se puede usar para modelar distintos tipos de sistemas: sistemas de software, sistemas de hardware, y organizaciones del mundo real. UML ofrece nueve diagramas en los cuales modelar sistemas. Es un lenguaje muy expresivo, que cubre todas las vistas necesarias para desarrollar y luego desplegar tales sistemas . UML es sólo un lenguaje y por tanto es tan solo una parte de un método de desarrollo de software, además, es independiente del proceso, aunque para utilizar óptimamente se debería usar en procesos que fuese dirigido por los casos de uso, centrado en la arquitectura, interactivo e incremental UML es una consolidación de muchas de las notaciones y conceptos más usadas orientados a objetos. Empezó como una consolidación del trabajo de Grade Booch, James Rumbaugh, e Ivar Jacobson, creadores de tres de las metodologías orientadas a objetos más populares, en 1996, el Object Management Group (OMG), publicó una petición con propósito de un metamodelo orientado a objetos de semántica y notación estándares. UML, en su versión 1.0, fue propuesto como una respuesta a esta petición en enero de 1997. Hubo otras cinco propuestas rivales. Durante el transcurso de 1997, los seis promotores de las propuestas, unieron su trabajo y presentaron al OMG un documento revisado de UML, llamado UML versión 1.1. Este documento fue aprobado por el OMG en Noviembre de 1997. El OMG llama a este documento OMG UML versión 1.1. El OMG estaba actualmente en proceso de mejorar una edición técnica de esta especificación, prevista su finalización para el 1 de abril de 1999. 7
  • 8. 1.1.2. UML no es un método Inicialmente los métodos son una técnica para llevar a cabo una acción, Uml es un compendio de modelos que pueden ser interpretados de forma directa a una gran variedad de lenguajes de programación como Java, C++ o Visual Basic, e incluso a tablas en una base de datos relacional o una base de datos orientadas a objetos UML se construye con modelos estándar sobre análisis y diseño de sistemas orientados a objetos de las cuales las más populares se incluyen las siguientes: Catálisis: Un método orientado a objetos que fusiona mucho del trabajo reciente en métodos orientados a objetos, y además ofrece técnicas especificas para modelar componentes distribuidos. Objetory: Un método de Caso de Uso guiado para el desarrollo, creado por Ivar Jacobson. Shlaer/Mellor: El método para diseñar sistemas de tiempo real, puesto en marcha por Sally Shlaer y Steven Mellor en dos libros de 1991, Ciclos de vida de Objetos, modelando el Mundo en Estados y Ciclos de vida de Objetos, Modelando el mundo en Datos (Prentice Hall). Shlaer/Mellor continúan actualizando su método continuamente (la actualización más reciente es el OOA96 report), y recientemente publicaron una guía sobre como usar la notación UML con Shlaer/Mellor. Fusión: Desarrollado en Hewlett Packard a mediados de los noventa como primer intento de un método de diseño orientado a objetos estándar. Combina OMT y Booch con tarjetas CRC y métodos formales. (www.hpl.hp.com/fusion/file/teameps.pdf) OMT: La Técnica de Modelado de Objetos fue desarrollada por James Rumbaugh y otros, y publicada en el libro de gran influencia "Diseño y Modelado Orientado a Objetos" (Prentice Hall, 1991). Un método que propone análisis y diseño interactivo, más centrado en el lado del análisis. Booch: Parecido al OMT, y también muy popular, la primera y segunda edición de "Diseño Orientado a Objetos, con Aplicaciones" (Benjamin Cummings, 1991 y 8
  • 9. 1994), (Object-Oriented Design, With Applications), detallan un m odo ofreciendo también diseño y análisis 'iterative', centrándose en el lado del diseño. 1.1.3. Modelos Un modelo representa a un sistema software desde una perspectiva específica. Al igual que la planta y el alzado de una figura en dibujo técnico nos muestran la misma figura vista desde distintos ángulos, cada modelo nos permite fijarnos en un aspecto distinto del sistema. Los modelos de UML que se tratan en esta parte son los siguientes: •Diagramas de clases: muestra un conjunto de clases, interfaces y colaboraciones, así como sus relaciones, son los más comunes en el modelo orientado a objetos y cubren las vistas de diseño estático de un sistema. •Diagramas de Objetos: muestra un conjunto de objetos y sus relaciones, representan instancias de los elementos encontrados en los diagramas de clases, representado cubren las vistas de diseño estático de un sistema desde la perspectiva de casos reales. •Diagrama de Actividades: es un tipo especial de diagrama de estados que muestra el flujo de actividades dentro de un sistema, cubren la vista dinámica de un sistema. Son especialmente importantes al modelar el funcionamiento de un sistema y resaltan el flujo de control de objetos. •Diagrama de Componentes: muestra la organización y las dependencias entre un conjunto de componentes, cubren la vista estática de un sistema. •Diagrama de Despliegue: muestra la configuración de nodos de procesamiento en tiempo de ejecución y los componentes que residen en ellos, cubren la vista de despliegue estática de una arquitectura. 9
  • 10. Diagrama de Casos de Uso: muestra un conjunto de casos de uso, actores y relaciones, cubren la vista de casos de uso estática de un sistema. •Diagrama de Secuencia: es un diagrama de interacción que resalta la ordenación temporal de los mensajes. •Diagrama de Colaboración: es un diagrama de interacción que resalta la organización estructural de los objetos que envían y reciben mensaje. •Diagrama de Estados: Muestra una máquina de estados, que consta de estados, transiciones, eventos y actividades, cubren la vista dinámica de un sistema, resaltan el comportamiento dirigido por eventos de un objeto. 1.1.4. Elementos comunes a todos los diagramas Notas Una nota sirve para añadir cualquier tipo de comentario a un diagrama o a un elemento de un diagrama. Es un modo de indicar información en un formato libre, cuando la notación del diagrama en cuestión no nos permite expresar dicha información de manera adecuada. Una nota se representa como un rectángulo con una esquina doblada con texto en su interior. Puede aparecer en un diagrama tanto sola como unida a un elemento por medio de una línea discontinua. Puede contener restricciones, comentarios, el cuerpo de un procedimiento, etc. Figura 1. 10
  • 11. Dependencias La relación de dependencia entre dos elementos de un diagrama significa que un cambio en el elemento destino puede implicar un cambio en el elemento origen (por tanto, si cambia el elemento destino habría que revisar el elemento origen). Una dependencia se representa por medio de una línea de trazo discontinuo entre los dos elementos con una flecha en su extremo. El elemento dependiente es el origen de la flecha y el elemento del que depende es el destino (junto a él está la flecha). 1.2. Modelado Estructurado Para comprender UML, se necesita adquirir un modelo conceptual del lenguaje y esto requiere aprender tres elementos principales: los bloques básicos de construcción de UML, las reglas que dictan cómo se pueden combinar estos bloques básicos y algunos mecanismos comunes que se aplican a través de UML, Una ves comprendida estas ideas, se pueden leer modelos UML y crear algunos modelos básicos. 1.2.1. Bloques de Construcción de UML El vocabulario de UML incluye tres clases de bloques de construcción Elementos en UML Hay 4 tipos de elementos en UML, elementos estructurales, elementos de comportamiento, elementos de agrupación y elementos de anotación: . Figura 2. 11
  • 12. Elementos Estructurales Nombre Descripción Símbolo Interfaz • Es una colección de operaciones que especifica un servicio de una clase o componente, representa el comportamiento completo de una clase o componente Colaboración • Se definen como una interacción y es una sociedad de roles y otros elementos que colaboran para proporcionar un comportamiento cooperativo mayor que la suma de los comportamientos de sus elementos • las colaboración representan la implementación de patrones que forman un sistema Caso de Uso • Es una descripción de secuencias de acciones que un sistema ejecuta y que produce un resultado observable de interés para un actor particular • Se utiliza para estructurar el comportamiento en un modelo Clase Activa • Es un clase objetos tienen uno o mas procesos o hilos de ejecución y por lo tanto pueden dar origen a actividades de control • Son iguales a las clases excepto en que sus objetos representan elementos cuyos comportamiento es concurrente con otros elementos Componente • Es una parte física y reemplazable de un sistema que conforma con un conjunto de interfaces y proporciona la implementación de dicho conjunto • Representa típicamente e empaquetamiento físico de diferentes elementos lógicos, como clases interfaces y colaboraciones Nodo • Es un elemento físico que existe en Nodo1 tiempo de ejecución y representa un rescursos computacional que dispone de memoria y con frecuencia capacidad de procesamiento 12
  • 13. Estos siete elementos (clases, interfaces, colaboraciones, casos de uso, clases activas, componentes y nodos) son los elementos estructurales básicos que se pueden incluir en el modelo UML. También existen variaciones de estos siete elementos, tales como actores, señales, procesos e hilos, y aplicaciones, documentos, archivos, bibliotecas, páginas y tablas. Los elementos de comportamiento son las partes dinámicas de los modelos UML. Estos son los verbos de un modelo y representan comportamiento en el tiempo y en el espacio. • Interacción: Es un comportamiento que comprende un conjunto de mensajes intercambiados entre un conjunto de objetos, dentro de un contexto particular para alcanzar un propósito especifico • Máquina de Estados: Es un comportamiento que especifica las secuencias de estados por las que pasa un objeto o una interacción durante su vida en respuesta a eventos Estos dos elemento (interacciones y máquinas de estado) son los elementos de comportamiento que se pueden incluir de un modelo UML, estos elementos están conectados normalmente a diversos elementos estructurales, principalmente clases, colaboraciones y objetos. Los Elementos de agrupación son las partes organizativas de los modelos UML. Estos son las cajas en las que pueden descomponerse un modelo Paquete • Es un mecanismo de propósito general para organizar elementos en grupos. • En los paquetes se pueden agrupar los elementos estructurales, de comportamiento e incluso otros elementos de agrupación Los paquetes son los elementos de agrupación básicos con los cuales se puede organizar un modelo UML. También hay variaciones, tales como los framework, los modelos y los subsistemas 13
  • 14. Relaciones Existen cuatro tipos de la relaciones en UML • Dependencias • Asociaciones • Generalizaciones • Realización Estas relaciones son los bloques básicos de construcción para las relaciones de UML. Relaciones en UML Dependencia: Es una relación semántica entre dos elementos, en la cual un cambio a un elemento pude afectar la semántica de otro elemento Asociaciones: Es una relación estructural que describe un conjunto de enlaces, los cuales son conexiones entre objeto y representa una relación estructural entre un todo y sus partes Diagramas Un diagrama es la representación gráfica de un conjunto de elementos, visualizando la mayoría de las veces como un grafo conexo de nodos (elementos) y arcos (relaciones). Los diagramas se dibujan para visualizar un sistema desde diferentes perspectivas, de forma que un diagrama es una proyección de un sistema, un diagrama representa una vista resumida de los elementos que constituyen un sistema. (Los tipos de diagramas que utiliza UML se mencionan en el Numeral 1.1.2. de este módulo). 14
  • 15. 1.2.2. Clases Una clase es una descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica, las clases pueden representar cosas que sean hardware, software o completamente conceptuales. Las clases forman parte de una distribución equilibrada de responsabilidades en el sistema UML representa una representación gráfica de las clases como se muestra en la figura ex, Nombre Figura Origen atributos Mover() Visualizar() operaciones Figura 3. Componentes de las Clases Una clase es un descripción de un conjunto de objetos que comparten los mimos atributo, operaciones, relaciones y semántica, gráficamente una clase se representa como un rectángulo, en el cual se describen las características de los objetos que representa, entre ellos tenemos 1. Nombre: una clase a de contener un nombre que la identifique, compuesto por cualquier numero de letras y números exceptuado los dos puntos pues estos se utilizan para separar el nombre de una clase y el paquete que lo contiene. 2. Atributos: es una propiedad de una clase identificada con un nombre, que describe un rango de valores que pueden tomar las instancias de la propiedad. Un atributo representa alguna propiedad del elemento que se está modelando que es compartida por todos los objetos de esa clase, además, una clase puede o no contener atributos. Por ejemplo un atributo de la clase estudiante es el nombre, apellido, fecha Nacimiento, etc. 15
  • 16. Estudiante nombre apellido atributos fecha Nacimiento Figura 4. 3. Operaciones: Es una abstracción de de algo que se puede haber a un objeto y que es compartido por todos los objetos de la clase, las clases pueden tener o no operaciones. Ejemplo en la clase estudiante se puede a los objetos generados por ella, matricular, evaluar, aprobar y estas operaciones son comunes a todos los objetos que se describen a través de la clase estudiante. Estudiante Nombre Apellido Fecha nacimiento Matricular() Evaluar() Operaciones Aprobar() Figura 5. 4. Responsabilidades: Es una obligación de las clases, al crear una clase, se esta expresando que todos los objetos de esa clase tienen el mismo tipo de estado y el mismo tipo de comportamiento, de forma mas general los atributos y operaciones son las características por medio de la cuales se llevan a cabo las responsabilidades de la clase. Gráficamente las responsabilidades se pueden expresar en un comportamiento separado al final del icono de la clase. Estudiante nombre apellido fecha Nacimiento matricular() evaluar() aprobar() Responsabilidades Respetar el Reglamento Responsabilidades Estudiantil Figura 6. 16
  • 17. Usos Comunes de las Clases Las clases se utilizan para modelar y representar el conjunto de elementos de un sistema de manera general (abstracciones), para determinar los problemas que se intenta resolver y así implementar una solución. Para definir las clases que intervienen dentro de un sistema se recomienda como puntos de partida las siguientes consideraciones: • Identificar aquellas cosas que utilizan los usuarios o programadores para describir el problema o la solución • Identificar las responsabilidades de cada clase y asegurarse que cada clase existe • Identificar los atributos y operaciones necesarios para cumplir sus responsabilidades • Hacer del conjunto de clases y sus responsabilidades un modelo equilibrado donde no existan clase demasiado grandes ni pequeñas • Cuando se dibuje una clase hay que mostrar solo aquellas propiedades de la clase que sean importantes, como también sus atributos y operaciones 1.2.3. Objetos Un objeto se representa de la misma forma que una clase. En el compartimiento superior aparecen el nombre del objeto junto con el nombre de la clase subrayados, según la siguiente sintaxis: nombre_del_objeto:nombre_de_la_clase Puede representarse un objeto sin un nombre específico, entonces sólo aparece el nombre de la clase. Figura 7. 17
  • 18. 1.2.4. Asociaciones Es una relación estructural que especifica que los objetos de un elemento están conectados con los objetos de otro. Dada una asociación entre dos clases, se puede navegar desde un objeto de una clase hasta el objeto de otra clase, y viceversa. Una asociación que conecta dos clases se dice binaria, sí conecta más de dos clases se denomina asociación n-arias, las asociaciones se utilizarán cuando se quieren representar relaciones estructurales. Características de las Asociaciones y operaciones Nombre de la Asociación y Dirección El nombre de la asociación se utiliza para describir la naturaleza de la relación, es opcional y se muestra como un texto que está próximo a la línea. Se puede añadir un pequeño triángulo negro sólido que indique la dirección en la cual leer el nombre de la asociación. En el ejemplo se puede leer la asociación como “Director manda sobre Empleado”. Figura 8. Los nombres de las asociaciones normalmente se incluyen en los modelos para aumentar la legibilidad. Sin embargo, en ocasiones pueden hacer demasiado abundante la información que se presenta, con el consiguiente riesgo de saturación. En ese caso se puede suprimir el nombre de las asociaciones consideradas como suficientemente conocidas. En las asociaciones de tipo agregación y de herencia no se suele poner el nombre. 18
  • 19. Multiplicidad La multiplicidad es una restricción que se pone a una asociación, que limita el número de instancias de una clase que pueden tener esa asociación con una instancia de la otra clase. Puede expresarse de las siguientes formas: • Con un número fijo: 1. • Con un intervalo de valores: 2.5. • Con un rango en el cual uno de los extremos es un asterisco Significa que es un intervalo abierto. Por ejemplo, 2..* significa 2 o más. • Con una combinación de elementos como los anteriores separados por comas: 1, 3..5, 7, 15..*. • Con un asterisco: * . En este caso indica que puede tomar cualquier valor (cero o más). Roles Un rol es simplemente la cara que la clase de un extremo de la asociación presenta a la clase del otro extremo. Figura 9. 19
  • 20. Para indicar el papel que juega una clase en una asociación se puede especificar un nombre de rol. Se representa en el extremo de la asociación junto a la clase que desempeña dicho rol. Agregación El símbolo de agregación es un diamante colocado en el extremo en el que está la clase que representa el “todo”. Figura 10. 1.2.5. Diagramas Un diagrama es una presentación gráfica de un conjunto de elementos, que la mayoría de la veces se dibuja como un conjunto de elementos relacionados, los diagramas se utilizan para representar un sistema desde diferentes perspectivas, por esto UML a definido varios diagramas que permiten centrarse en diferentes aspectos del sistema independientemente. Un diagrama es una proyección gráfica de los elementos que configuran un sistema. Por ejemplo, se podría tener cientos de clases en el diseño de un sistema de recursos humanos de un empresa, pero no se podría ver la estructura o el comportamiento de ese sistema observando un gran diagrama con todas sus clases y relaciones, es entonces preferible realizar varios diagramas que especifiquen las vistas relevantes solamente a ese subsistema definido, este tipo de manejo de diagramas representativos por clases permite realizar agrupaciones que muestran el funcionamiento general del sistema de forma particular pero denotando el funcionamiento general del sistema con todos sus elementos constitutivos. 20
  • 21. Con el modelado de sistemas se obtienen deferentes tipos de vistas, las vistas estáticas de los sistemas en UML se representan con 4 tipos de diagramas que se describen a continuación Diagramas Estructurales los cuales comprenden los siguientes diagramas • Diagramas de Clases Representa un conjunto de clases, interfaces y colaboraciones, y las relaciones entre ellas. Los diagramas de clases los diagramas más comunes en el modelado de sistemas orientados a objetos. Estos diagramas se utilizan para describir las vista de diseño estática de un sistema, incluyen clases activas se utilizan para cubrir la vista de procesos estática de un sistema • Diagramas de Objetos Representa un conjunto de objetos y sus relaciones. Se utiliza para describir estructuras de datos y las instancias de los elementos encontrados en los diagramas de clases. Cubren la vista de diseño estática o la vista de proceso estática de un sistema al igual que los diagramas de clases. Pero desde la perspectiva de casos reales prototipos. • Diagramas de Componentes Muestra un conjunto de componentes y relaciones, se utilizan para describir la vista de implementación estática de un sistema, se relacionan con los diagramas de clases en que un componente normalmente se corresponde con una más clases. Interfaces o colaboraciones • Diagramas de despliegue Muestra un conjunto de nodos y sus relaciones, se utilizan para describir la vista de despliegue estática de una arquitectura, se relacionan con los diagramas de componentes en que un nodo normalmente incluye uno o más componentes. 21
  • 22. Diagramas de Comportamiento Los cuales están compuestos por los siguientes diagramas Diagramas de casos de uso En el modelado orientado a objetos los diagramas de casos de uso son los que representan en general el funcionamiento del sistema siendo estos los mas utilizados como base del desarrollo de un modelo real, representa casos de uso, actores y relaciones, se utilizan especialmente para organizar y modelar el comportamiento de un sistema. Diagramas de Secuencia Es un diagrama de interacción que resalta la ordenación temporal de los mensajes, este presenta un conjunto de objetos y los mensajes enviados por ellos. Los objetos suelen ser instancias con nombre, pueden representar instancias de otros elementos, tales como colaboraciones, componentes y nodos, se utilizan para describir las vista dinámica de un sistema. Diagramas de colaboración Es un diagrama de interacción que resalta la organización estructural de los objetos que envían y reciben mensajes, pueden representar instancias de otros elementos como colaboraciones, componentes y nodos. Se utilizan para describir la vista dinámica de un sistema. Diagramas de estado Representa una máquina de estados constituida por estados, transacciones, eventos y actividades, se utilizan para representar la vista dinámica de un sistema son especialmente importantes para modelar el comportamiento de una interfaz, clase o una colaboración, resaltan en comportamiento dirigido por eventos de un objeto. Diagrama de Actividades Muestra el flujo de actividades en un sistema, muestra el flujo secuencial o ramificado de actividades y los objetos en los que actúa, son importantes para 22
  • 23. modelar la función de un sistema así como para resaltar el flujo de control entre objetos 1.2.6. Diagramas de Clase Un diagrama de clases de uso muestra un conjunto de interfaces, colaboraciones y sus relaciones. Gráficamente, un diagrama de clases es una colección de nodos y arcos. Los diagramas de clases contienen normalmente los siguientes elementos, clases, interfaces, colaboraciones, relaciones de dependencia, generalización y asociación. Los diagramas pueden también notas, restricciones, paquetes o subsistemas, los cuales se usan para agrupar los elementos de un modelo en partes más grandes. Usos de los diagramas de clases Se utilizan para modelar la vista estática de un sistema, muestra principalmente los requisitos funcionales de un sistema y los servicios que el sistema debe proporcionar a sus usuarios finales Los diagramas de clases se utilizan cuado se modela la vista de diseño de un sistema de la siguiente forma: • Para modelar el vocabulario de un sistema El modelado del vocabulario de un sistema implica tomar decisiones sobre que abstracciones son parte del sistema en consideración y cuales caen fuera de sus límites. Los diagramas de clases se utilizan para especificar estas abstracciones y sus responsabilidades • Para modelar colaboraciones simples Una colaboración es una sociedad de clases, interfaces y otros elementos que colaboran para proporcionar un comportamiento cooperativo mayor que la suma de todos los elementos. 23
  • 24. Cuando se crea un diagrama de clases, se esta modelando una parte de los elementos y las relaciones que configuran la vista de diseño del sistema, por esta razón cada diagrama de clases debe centrarse en una colaboración cada vez. Para modelar una colaboración se debe tener en cuenta: • Identificar los mecanismos que se quiere modelar, un mecanismo representa una función o comportamiento de la parte del sistema que se está modelando que resulta de la interacción de una sociedad de clases, interfaces y otros elementos. • Identificar las clases, interfaces y otras colaboraciones que participan en esta colaboración identificando las relaciones entre estos elementos. • Usar escenarios para recorrer la interacción entre estos elementos. • Identificar las responsabilidades y hacer un reparto equilibrada de ellas en los elementos que componen el sistema Por ejemplo la siguiente figura muestra un conjunto de clases que muestran el sistema de facturación y control de ventas de una empresa, las clases se centran en la forma como se maneja la facturación de inmuebles y productos de consumo, aparece una clase abstracta llamada factura que muestra a su vez 2 hijos facturacomestibles y facturainmuebles a su vez las dos clases se muestran como partes de otra clase denominada vendedor. La clase ventas tiene una asociación uno a uno con vendedor y una asociación uno a muchos con controlvendedor no se muestran atributos ni operaciones para la clase ventas pero sí se muestran sus responsabilidades. 1 * Ventas controlventas 1 1 Responsabilidad vendedor Ventas promedio Buscar clientes 1 1 facturacomestibles facturainmuebles Factura Registrar venta() Registrar proveedor() Registrar cliente() Informes() Figura 11. 24
  • 25. • Para modelar un esquema lógico de base de datos Este esquema representa el plano que permite el diseño conceptual de la base de datos sea para una base de datos relacional o una base de datos orientada a objetos. Para modelar un esquema tenemos en cuenta: • Identificar las clases que van a ser persistentes en el diseño general de la bases de datos. • Crear un diagrama de clases que contenga estas clases y marcarlas como persistentes. • Expandir los detalles estructurales de estas clases, es decir, especificar los detalles de sus atributos y centrar su atención en la asociaciones que estructuran estas clases. • Identificar las relaciones de las bases de datos sea uno a uno, uno a varios y sus asociaciones. • Definir de manera clara las reglas de negocio relativas a la manipulación de datos dentro de la base de datos La figura muestra un conjunto de clases extraídas de un sistema de información que determina las relaciones entre los estudiantes, el profesor y el curso que el estudiante va a estudiar Universidad Nombre: texto Departamento 0..1 Dirección: texto Telefono: número tiene Nombre: texto añadirProfesor() añadirEstudiante() 1 1..* quitarProfesor () quitarEstudiante() obtenerProfesor () 1..* obtenerEstudiante() añadirDepartamento() 1..* quitarDepartamento() obtenerDepartamento() Asignado a 0..1 director Estudiante Curso Profesor * asiste * enseña Nombre: texto Nombre: texto Nombre: texto idEstudiante: número idCurso: número * 1..* Figura 12. 25
  • 26. El anterior diagrama muestra en detalle cada una de las clases con sus respectivos atributos, los cuales permiten construir la base de datos física, comenzando por la parte inferior izquierda se encuentra las clases estudiantes, curso y profesores, hay una asociación Las clases se han marcado como persistentes, es decir, sus instancias se han concebido para almacenar en una base de datos u otra forma de almacenamiento persistente. 1.2.7. Características Avanzadas de las Clases y relaciones El tipo más importante de clasificador en UML es la clase, una clase es una descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica. Sin embargo las clases no son el único tipo de clasificador, existen otros tipos de clasificadores que ayudan a modelar: • Interfaz: es una colección de operaciones que especifican un servicio de una clase o componente Figura 13. • Tipos de datos: un tipo cuyos valores no tienen identidad, incluyendo los tipos primitivos predefinidos. <<type>> int (valores entre -32000 y 320000) Figura 14. 26
  • 27. Señal: la especificación de un estímulo asíncrono enviado entre instancias <<signal>> DisparoAlarma Figura 15. • Componente: una parte física y reemplazable de un sistema que conforma y proporciona la realización de un conjunto de interfaces. Kernell32 Figura 16. • Nodo: un elemento físico que existe en tiempo de ejecución y representa un recurso computacional, generalmente con alguna memoria y a menudo capacidad de almacenamiento. Figura 17. • Caso de uso: descripción de una secuencia de acciones, incluye variantes, que se ejecuta un sistema y produce un resultado observable para un actor particular Figura 18. 27
  • 28. Subsistema: agrupación de elementos, algunos de los cuales constituyen una especificación del comportamiento de los otros elementos contenidos <<subsystem>> subsistema de servicio al cliente Figura 19. Los clasificadores descritos anteriormente proporcionan al modelado de sistemas una vista general de comportamiento del sistema mostrándolo en detalle en sus atributos y operaciones Generalidades de las clases Es necesario saber que para el modelado de sistemas con Uml, las clases muestran en la definición de sus atributos ciertos tipos de símbolos, los cuales determinan si los elementos asociados a cada clase son públicos o privados por ejemplo: Si la marca de elemento es un +, indica que este elemento es de acceso público y por lo tanto se pueden operar desde cualquier instancia del sistema. Por lo contrario si el signo es -, indica que este elemento solo es de uso exclusivo de la clase que lo contiene. Otro caso en los cuales los elementos de la clase son por decirlo de alguna semi privados, solo se relacionan con las clases que han sido descendientes de la clase padre se marcan con el símbolo #. Cuando se usa una clase, es probable que se desee características de otras clases y también permitir que otras clases más específicas hereden características de ella. También se puede especificar que una clase no puede tener hijos, a este elemento se le llama hoja y se especifica escribiendo la propiedad leaf bajo el nombre de la clase. Otra característica de las clases es cuando esta no tiene padres, este tipo de clases se denomina raíz y se denota escribiendo debajo del nombre de la clase root. Podemos observar el siguiente ejemplo de notación: 28
  • 29. Factura(root) Registrar venta() Registrar proveedor() Clase padre principal Registrar cliente() Informes() Facturacomestibles Facturainmuebles Clases hijos Mostrarusuario() Mostrarusuario() (leaf) Clases hoja, no puede tener mas hijos Figura 20. Las clases tienen muchas operaciones entre sí, las que se “heredan” entre clases se denominan polimórficas esto ocurre cuando los objetos han ejecutado una operación que esta definida en la clase que los contiene pero con la diferencia de que la operación cambia de significado dependiendo del contexto donde se este ejecutado. Generalidades de las relaciones Al modelar los elementos que constituyen el vocabulario de un sistema, también hay que modelar cómo se relacionan entre sí estos elementos, las relaciones de dependencia, las generalizaciones y las asociaciones son los tres bloques de construcción de relaciones más importantes de UML. Observemos el comportamiento de estas relaciones. Relaciones de Dependencia: Una dependencia es una relación de uso, la cual especifica que un cambio en la especificación de un elemento puede afectar a otro elemento que lo utiliza, pero no necesariamente a la inversa. Gráficamente, una dependencia se representa 29
  • 30. como una línea continua dirigida hacia el elemento del que se depende. Las dependencias se deben aplicar cuando se quiera representar que un elemento utiliza a otro Relaciones de Generalización Una generalización es una relación entre un elemento (superclase o padre) y un tipo mas efectivo de ese elemento (subclase o hijo). Por ejemplo, se puede encontrar la clase general ventana junto a un tipo mas especifico ventaconmarco, con una relación de generalización del hijo al padre, el hijo ventaconmarco heredará la estructura y comportamiento del padre ventana, en una generalización la instancia del hijo pueden usarse donde quiera que se puedan usar las instancias del padre. La generalización se manifiesta en la herencia simple que a veces es suficiente en a mayoría de las veces, aunque, la herencia múltiple es mas adecuada, gráficamente se muestra de la siguiente forma: Figura 21. En la figura anterior se muestra la clase activo con tres hijos: CuentaBancaria, inmueble y valor dos de estos hijos (CuentaBancaria, Inmueble) tienen sus propios hijos por ejemplo Accion y Bono son ambos hijos de valor Dos de estos hijos (CuentaBancaria, Inmueble) heredan de varios padres inmueble por ejemplo, es un tipo de activo, así como un tipo de Elemento- Asegurable y CuentaBancaria, es un tipo de activo así como un ElementoConInteres y un ElementoAsegurable 30
  • 31. Relaciones de Asociación Una asociación es una relación estructural que especifica que los objetos de un elemento se conectan a los objetos de otro, por ejemplo, una clase biblioteca podría tener una asociación uno a muchos con clase libro, indicando que cada instanci de libro pertenece a una instancia de biblioteca, además, dado un libro, se puede encontrar su biblioteca, y dando una biblioteca se puede navegar hacia todos los libros, gráficamente, un asociaciones se representa con una línea continua entre la misma o diferentes clases. Las relaciones se utilizan para mostrar relaciones estructurales. En la siguiente asociación simple se muestra como se hace la navegación entre objetos por ejemplo al modelar una asociación entre 2 objetos como Usuario y Clave se tiene que un dado un Usuario se puede encontrar las correspondientes Claves, pero dada una Clave no se podría identificar al Usuario correspondiente. 1 * Usuario Clave La línea representa una asociación y la fecha indica la dirección del recorrido Figura 22. 1.2.8. Interfaces, Tipos y roles Interfaz El manejo de las interfaces dentro del UML es importante ya que proporcionan al modelador un registro exacto de las fronteras existentes entre los diferentes procesos del sistema, con lo cual se pretende observar al sistema en sus componentes integrales para así determinar que procesos se pueden afectar sin que se afecten los otros. La construcción de interfaces permite también el manejo de librerías estándar reutilizables sin tener que construirlas nuevamente, permitiendo reemplazos sin necesidad de afectar el funcionamiento general del sistema. Se entiendo como interfaz como una colección de operaciones que sirven para especificar un servicio de una clase o un componente. 31
  • 32. Cada interfaz ha de tener un nombre que la distingue de otras interfaces, el nombre de la interfaz puede ser simple o de camino cuando en este se indica el nombre de la interfaz y el paquete en el que se encuentre Nombre elemental IOrtografía Nombre de camino Red::IRouter Figura 23. Operaciones de las Interfaces Al contrario de las clases y los tipos, las interfaces no especifican ninguna estructura, las interfaces no incluyen atributos ni métodos, pero estas pueden contener cualquier número de operaciones. La siguiente notación hace referencia a una interfaz donde se manifiesta de manera gráfica su nombre y operaciones a diferencia de la notación del círculo presentada anteriormente. Proporciona un mecanismo para modelar la conformidad estática y dinámica de una abstracción con una interfaz en un contexto específico Nombre de la interfaz <<interface>> FlujoURL Abrirconexion() EstablecerURL() Operaciones de la interfaz Figura 24. Notese en la representación el nombre <<interface>> como identificador de la interfase definida. 32
  • 33. Las relaciones entre interfaces se realizan de la misma manera como se relacionan con las clases puesto que las relaciones son del mismo tipo, para recordar: relaciones de generalización, relaciones de asociación y relaciones de dependencia. Como se mostró anteriormente las interfaces se pueden denotar mostrándose como un círculo o con sus operaciones, dentro de un diagrama de interacción entre clases los resultados para mostrar las relaciones entre las clases a través de las interfaces se expresa de la siguiente manera: Figura 25. La primera forma es la sencilla en la cual se muestra la conexión de dos clases a través de un circulo que representa la interfaz con la cual se comunican dichas clases, la segunda forma muestra de manera mas detallada las operaciones con las cuales interactúan las clases definidas antes y después de la interfase, nótese como se representan las relaciones de dependencia de la misma forma como se mostró en las relaciones entre clases. 33
  • 34. Tipos y roles Un rol representa un comportamiento de una entidad que participa en un contexto particular, por ejemplo consideremos una instancia de una clase denominada profesor, este profesor puede ser de matemáticas, sociales, informática, física, etc, para cada rol generado de clase profesor, se deduce que las propiedades cada rol son exclusivas y en ningún momento pueden tomar propiedades de un rol que no le corresponda. Para representar el rol que representa un objeto dentro de una relación de clases en notación UML se tiene por ejemplo: Figura 26. Figura 27. La figura anterior representa una asociación de clases con una interfaz especifica, como se ve existe una asociación de entre las clases persona y empresa en cuyp contexto persona juega un rol llamado e, cuyo tipo es empleado 34
  • 35. 1.2.9 Paquetes e Instancias Un paquete es un mecanismo de próposito general para organizar elementos en grupos, graficamente un paquete se representa como una carpeta. Cada paquete a de contener un nombre que lo distingue de los demás. cliente Nombre del Paquete +FormualarioDePedido +FormularioDeSeguimiento -Pedido Elementos contenidos en el paquete Figura 28. Un paquete puede contener otros elementos incluyendo clases, interfaces, componentes, nodos, colaboraciones, casos de uso, diagramas en incluso otros paquetes. Sí el paquete se destruye el elemento contenido en él es destruido, pues cada elemento cada elemento pertenece exclusivamente a un único paquete. Una instancia es una manifestación concreta de una abstracción a la que se puede aplicar un conjunto de operaciones y que posee un estado que almacena el efecto de las operaciones. gráficamente una instancia se representa subrayando su nombre teclasPulsadas: Colas Instancia con nombre : Marco Instancia anónima agente: Instancia huérfana Figura 29. 35
  • 36. Las instancias no aparecen aisladas, casi siempre están ligadas a una abstracción. La mayoría de las instancias que se modelan en UML serán instancias de clases (llamadas objetos), aunque se pueden tener instancias de otros elementos, como componentes, nodos, casos de usos y asociaciones. En sentido general, un objeto es algo que ocupa espacio en el mundo real o conceptual y al que se le pueden hacer cosas. Por ejemplo, una instancia de un nodo es normalmente un computador que se encuentra físicamente en una habitación; una instancia de un componente ocupa algo de espacio en el sistema de archivos; una instancia de un registro de un cliente consume algo de memoria física, análogamente, una instancia de un billete de avión es algo sobre lo que se pueden hacer cálculos. 1.2.10. Herencia y polimorfismo Polimorfismo Una de las características fundamentales de la OOP es el polimorfísmo, que no es otra cosa que la posibilidad de construir varios métodos con el mismo nombre, pero con relación a la clase a la que pertenece cada uno, con comportamientos diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de clases diferentes. Estos objetos recibirían el mismo mensaje global pero responderían a él de formas diferentes; por ejemplo, un mensaje "+" a un objeto ENTERO significaría suma, mientras que para un objeto STRING significaría concatenación ("pegar" strings uno seguido al otro) Herencia En programación orientada a objetos, la herencia es un mecanismo que hace posible que una clase herede todo el comportamiento y atributos de otra clase; a través de la herencia, una clase tiene inmediatamente toda la funcionalidad de una clase existente, debido a esto, las nuevas clases se pueden crear indicando únicamente en que se diferencian de la clase existente, es decir, que toma la definición previa de la cual es subclase, y que solo se le agrega características especiales que la difieren de la clase de la cual procede. La relación de herencia se representa mediante un triángulo en el extremo de la relación que corresponde a la clase más general o clase “padre”. 36
  • 38. 2. CARACTERISTICAS DEL MODELADO UML 2.1. Diagramas Utilizados en UML 2.1.1. Diagramas de Objetos Los diagramas de objetos modelan las instancias de elementos contenidos en los diagramas de clases. Un diagrama de objetos muestra un conjunto de objetos y sus relaciones en un momento concreto. En UML, los diagramas de clase se utilizan para visualizar los aspectos estáticos del sistema y los diagramas de interacción se utilizan para ver los aspectos dinámicos del sistemas, y constan de instancias de los elementos del diagrama de clases y mensajes enviados entre ellos. En un punto intermedio podemos situar los diagramas de objetos, que contiene un conjunto de instancias de los elementos encontrados en el diagrama de clases, representando sólo la parte estática de una interacción, consistiendo en los objetos que colaboraran pero sin ninguno de los mensajes intercambiados entre ellos. Los diagramas de objetos se emplean para modelar la vista de diseño estática o la vista de procesos estática de un sistema al igual que se hace con los diagramas de clases, pero desde la perspectiva de instancias reales o prototípicas. Esta vista sustenta principalmente los requisitos funcionales de un sistema. Los diagramas de objetos permiten modelar estructuras de datos estáticas, En general los diagramas de objetos se utilizan para modelar estructuras de objetos, lo que implica tomar una instantánea de los objetos de un sistema en un cierto momento. Un diagrama de objetos representa una escena estática dentro de la historia representada por un diagrama de interacción. Los diagramas de objetos se utilizan para visualizar, especificar, construir y documentar la existencia de ciertas instancias en el sistema, junto a las relaciones entre ellas. 38
  • 39. Figura 30. En la figura anterior se representa un conjunto de objetos extraídos de la implementación de un robot. Como indica la figura, un objeto representa al propio robot, (r es una instancia de Robot), y r se encuentra actualmente en estado movimiento. Este objeto tiene un enlace con m, una instancia de Mundo, que representa una abstracción del modelo del mundo del robot. Este objeto tiene un enlace con un multiobjeto, un conjunto de instancias de Elemento, que representan entidades que el robot ha identificado, pero aún no ha asignado en su vista del mundo. En este instante, m está enlazado a dos instancias de Area. Una de ellas (a2)se muestra con sus propios enlaces a tres objetos Pared y un objeto Puerta. Cada una de estas paredes está etiquetada con su anchura actual, y cada una se muestra enlazada a sus paredes vecinas. Como sugiere este diagrama de objetos, el robot ha reconocido el área que lo contiene, que tiene paredes en tres lados y una puerta en el cuarto. Como vemos los diagramas de objetos son especialmente útiles para modelar estructuras de datos complejas. Evidentemente puede existir una multitud de posibles instancias de una clase particular, y para un conjunto de clases con t relaciones entre ellas, pueden existir muchas más configuraciones posibles de 39
  • 40. estos objetos. Por lo tanto, al utilizar diagramas de objetos sólo se pueden mostrar significativamente conjuntos interesantes de objetos concretos o prototípicos. 2.1.2. Diagramas de Casos de Uso El diagrama de casos de uso representa la forma en como un Cliente (Actor) opera con el sistema en desarrollo, además de la forma, tipo y orden en como los elementos interactúan (operaciones o casos de uso). Un diagrama de casos de uso consta de los siguientes elementos: • Actor. • Casos de Uso. • Relaciones de Uso, Herencia y Comunicación. Elementos Actor: Figura 31. Una definición previa, es que un Actor es un rol que un usuario juega con respecto al sistema. Es importante destacar el uso de la palabra rol, pues con esto se especifica que un Actor no necesariamente representa a una persona en particular, sino más bien la labor que realiza frente al sistema. Como ejemplo a la definición anterior, tenemos el caso de un sistema de ventas en que el rol de Vendedor con respecto al sistema puede ser realizado por un Vendedor o bien por el Jefe de Local. 40
  • 41. Caso de Uso: Figura 32. Es una operación o tarea específica que se realiza tras una orden de algún agente externo, sea desde una petición de un actor o bien desde la invocación desde otro caso de uso. Relaciones: Las relaciones se explicaron de manera especifica en el apartado 1.2.4 de este modulo, ahora se explica de manera sencilla para observar su uso dentro de los diagramas de casos de uso. • Asociación Es el tipo de relación más básica que indica la invocación desde un actor o caso de uso a otra operación (caso de uso). Dicha relación se denota con una flecha simple. • Dependencia o Instanciación Es una forma muy particular de relación entre clases, en la cual una clase depende de otra, es decir, se instancia (se crea). Dicha relación se denota con una flecha punteada. 41
  • 42. Generalización Este tipo de relación es uno de los más utilizados, cumple una doble función dependiendo de su estereotipo, que puede ser de Uso (<<uses>>) o de Herencia (<<extends>>). Este tipo de relación esta orientado exclusivamente para casos de uso (y no para actores). extends: Se recomienda utilizar cuando un caso de uso es similar a otro (características). uses: Se recomienda utilizar cuando se tiene un conjunto de características que son similares en más de un caso de uso y no se desea mantener copiada la descripción de la característica. De lo anterior cabe mencionar que tiene el mismo paradigma en diseño y modelamiento de clases, en donde esta la duda clásica de usar o heredar. Ejemplo: Como ejemplo esta el caso de una Máquina Recicladora: Sistema que controla una máquina de reciclamiento de botellas, tarros y jabas. El sistema debe controlar y/o aceptar lo siguiente: • Registrar el número de ítemes ingresados. • Imprimir un recibo cuando el usuario lo solicita: a. Describe lo depositado b. El valor de cada item c. Total • El usuario/cliente presiona el botón de comienzo • Existe un operador que desea saber lo siguiente: a. Cuantos ítemes han sido retornados en el día. b. Al final de cada día el operador solicita un resumen de todo lo depositado en el día. • El operador debe además poder cambiar: a. Información asociada a ítemes. b. Dar una alarma en el caso de que: • Item se atora. • No hay más papel. 42
  • 43. Como una primera aproximación identificamos a los actores que interactúan con el sistema: Figura 33. Luego, tenemos que un Cliente puede Depositar Itemes y un Operador puede cambiar la información de un Item o bien puede Imprimir un informe: Figura 34. Además podemos notar que un item puede ser una Botella, un Tarro o una Jaba. Figura 35. 43
  • 44. Otro aspecto es la impresión de comprobantes, que puede ser realizada después de depositar algún item por un cliente o bien puede ser realizada a petición de un operador. Figura 36. Entonces, el diseño completo del diagrama casos de uso es: Figura 37. 44
  • 45. 2.1.3. Diagramas de Interacción Los diagramas de interacción se utilizan para modelar los aspectos dinámicos de un sistema, lo que conlleva modelar instancias concretas o prototípicas de clases interfaces, componentes y nodos, junto con los mensajes enviados entre ellos, todo en el contexto de un escenario que ilustra un comportamiento. En el contexto de las clases describen la forma en que grupos de objetos colaboran para proveer un comportamiento. En los diagramas de interacción se muestra un patrón de interacción entre objetos. Hay dos tipos de diagrama de interacción, ambos basados en la misma información, pero cada uno enfatizando un aspecto particular: Diagramas de Secuencia y Diagramas de Colaboración. Diagrama de Secuencia Un diagrama de Secuencia muestra una interacción ordenada según la secuencia temporal de eventos. En particular, muestra los objetos participantes en la interacción y los mensajes que intercambian ordenados según su secuencia en el tiempo. El eje vertical representa el tiempo, y en el eje horizontal se colocan los objetos y actores participantes en la interacción, sin un orden prefijado. Cada objeto o actor tiene una línea vertical, y los mensajes se representan mediante flechas entre los distintos objetos. El tiempo fluye de arriba abajo. Se pueden colocar etiquetas (como restricciones de tiempo, descripciones de acciones, etc.) bien en el margen izquierdo o bien junto a las transiciones o activaciones a las que se refieren. Objetos c : Cliente p : ProxyODBC <<create>> :Transacción establecerAcciones(a,d,o) establecerValores(d,3,4) Tiempo establecerValores(a,”CO”) éxito Línea de vida <<destroy>> Foco de control Figura 38. 45
  • 46. Los diagramas de secuencia tienen 2 características que los distinguen de los diagramas de colaboración, en primer lugar está la línea de vida de un objeto que es la línea discontinua vertical que representa la existencia de un objeto a lo largo de un periodo de tiempo. La mayoría de los objetos que aparecen en un diagrama de secuencia existirán mientras dure la interacción, los objetos se colocan en la parte superior del diagrama con sus líneas de vida dibujadas de arriba hasta abajo. Pueden crearse objetos durante la interacción, sus líneas de vida comienzan con la recepción de mensajes estereotipado como create. Los objetos pueden destruirse durante la interacción, sus líneas de vida acaban con la recepción del mensaje estereotipado como destroy, además, se muestra la señal visual de una gran X que marca el final de sus vidas. Diagrama de Colaboración Un diagrama de colaboración destaca la organización de los objetos que participan en una interacción, un diagrama de colaboración se construye colocando en primer lugar los objetos que participan en la colaboración como nodos de un grafo. A continuación se representa los enlaces que conectan esos objetos como arcos de grafo, por último, estos enlaces se adorna con los mensajes que envían y reciben los objetos, esto da la lector una señal visual clara del flujo de control en el contexto de la organización estructural de los objetos que colaboran c : Cliente Objeto 1: <<create>> 2: establecerAcciones(a,d,o) enlace 3: <<destroy>> <<local>> mensaje <<global>> :Transacción P : ProxyODBC 2.1:establecerValores(d,3,4) 2.2: establecerValores(a,”Co”) Figura 39. Los diagramas colaboración tienen dos características que los distinguen de los diagramas de secuencia, el primero para indicar cómo se enlaza un objeto a otro, se puede asociar un objeto al extremo mas lejano de un enlace con la palabra local que indica que el objeto designado es local al emisor. En segundo lugar esta el numero de secuencia, para indicar la ordenación temporal de los mensajes, se 46
  • 47. precede de un numero iniciando con el numeral 1, que se incrementa secuencialmente por cada nuevo mensaje en el flujo de control 2.1.4. Diagramas de Actividades Un diagrama de actividades muestra el flujo de actividades, siendo un actividad una ejecución general entre los objetos que se esta ejecutando en un momento dado dentro de una máquina de estados, el resultado de un actividad es una acción que producen un cambio en el estado del sistema o la devolución de un valor. Las acciones incluyen llamadas a otras operaciones, envío de señales, creación o destrucción de objetos o simples cálculos. Gráficamente un diagrama de actividades será un conjunto de arcos y nodos. Desde un punto de vista conceptual, el diagrama de actividades muestra cómo fluye el control de unas clases a otras con la finalidad de culminar con un flujo de control total que se corresponde con la consecución de un proceso más complejo. Por este motivo, en un diagrama de actividades aparecerán acciones y actividades correspondientes a distintas clases. Colaborando todas ellas para conseguir un mismo fin. Ejemplo: Hacer un pedido. Contenido del diagrama de actividades Básicamente un diagrama de actividades contiene: • Estados de actividad • Estados de acción • Transiciones • Objetos Estados de actividad y estados de acción La representación de ambos es un rectángulo con las puntas redondeadas, en cuyo interior se representa bien una actividad o bien una acción. La forma de expresar tanto una actividad como una acción, no queda impuesta por UML, se podría utilizar lenguaje natural, una especificación formal de expresiones, un metalenguaje, etc. La idea central es la siguiente: “Un estado que represente una acción es atómico, lo que significa que su ejecución se puede considerar instantánea y no puede ser interrumpida” En la siguiente figura, podemos ver ejemplos de estados de acción. 47
  • 48. Figura 40. En cambio un estado de actividad, sí puede descomponerse en más sub- actividades representadas a través de otros diagramas de actividades. Además estos estados sí pueden ser interrumpidos y tardan un cierto tiempo en completarse. En los estados de actividad podemos encontrar otros elementos adicionales como son: acciones de entrada (entry) y de salida (exit) del estado en cuestión, así como definición de submáquinas, como podemos ver en la figura siguiente ProcesarFactura(Fact) Entry / SacarPrimeraFactura(Fact) Figura 41. Transiciones Las transiciones reflejan el paso de un estado a otro, bien sea de actividad o de acción. Esta transición se produce como resultado de la finalización del estado del que parte el arco dirigido que marca la transición. Como todo flujo de control debe empezar y terminar en algún momento, podemos indicar esto utilizando dos disparadores de inicio y fin tal y como queda reflejado en el ejemplo siguiente Figura 41. Estado de Acción 48
  • 49. Bifurcaciones Un flujo de control no tiene porqué ser siempre secuencial, puede presentar caminos alternativos. Para poder representar dichos caminos alternativos o bifurcación se utilizará como símbolo el rombo. Dicha bifurcación tendrá una transición de entrada y dos o más de salida. En cada transición de salida se colocará una expresión booleana que será evaluada una vez al llegar a la bifurcación, las guardas de la bifurcación han de ser excluyentes y contemplar todos los casos ya que de otro modo la ejecución del flujo de control quedaría interrumpida. Para poder cubrir todas las posibilidades se puede utilizar la palabra ELSE, para indicar una transición obligada a un determinado estado cuando el resto de guardas han fallado. Veamos un ejemplo de bifurcación. Bifurcación secuencial Figura 42. División y unión No sólo existe el flujo secuencial y la bifurcación, también hay algunos casos en los que se requieren tareas concurrentes. UML representa gráficamente el proceso de división, que representa la concurrencia, y el momento de la unión de nuevo al flujo de control secuencial, por una línea horizontal ancha. Podemos ver cómo se representa gráficamente. Figura 43. 49
  • 50. Calles Cuando se modelan flujos de trabajo de organizaciones, es especialmente útil dividir los estados de actividades en grupos, cada grupo tiene un nombre concreto y se denominan calles. Cada calle representa a la parte de la organización responsable de las actividades que aparecen en esa calle. Gráficamente quedaría como se muestra a continuación clientes ventas almacén Solic Producto Procesar Pedido Extraer Pedido Enviar Pedido Recibir Pedido Fact. Cliente Pagar Factura Cerrar Pedido Figura 44. 50
  • 51. 2.2. Modelado dinámico 2.2.1 Eventos y señales Un evento es la especificación de un acontecimiento significativo que ocupa un lugar en el tiempo y en el espacio. En el contexto de la máquinas de estado, un evento es la aparición de un estímulo que puede disparar una transición de estado. Un señal es un tipo de evento que representa la especificación de un estímulo asíncrono que es transmitido entre instancias. Señales Una señal representa un objeto con nombre que es enviado (lanzado) asíncronamente por un objeto y recibido(capturado) por otro. El tipo más común de señal interna que se presenta dentro de los lenguajes de programación son las excepciones. Una señal puede enviarse como la acción de una transición de estado en una máquina de estados, o como el envío de un mensaje en una interacción.. En UML, la relación entre una operación y los eventos que puede enviar se modela con realcion de dependencia, estereotipada como send. Las señales y las excepciones se modelan como clases estereotipadas, se puede utilizar una dependencia, estereotipada como send para indicar que la operación envía una señal particular. Señal AgenteDeMovimiento Posición Velocidad <<signal>> <<send>> colisión moverA() fuerza : Float parámetros Figura 44. 51
  • 52. Eventos Un evento de llamada representa una invocación de una operación, un evento puede disparar una transición de estado de una máquina de estados. Cuando un objeto invoca una operación sobre otro objeto que tiene una máquina de estados, el control pasa del emisor al receptor, el evento dispara la transición, la operación acaba, el receptor pasa a un nuevo estado y el control regresa al emisor. Gráficamente se muestra al evento con sus parámetros, como el disparador de una transición de estado. evento iniciarpilotoAutomático(normal) Manual Automático parámetro Figura 45. Un evento de tiempo es un evento que representa el paso del tiempo, en UML se modela un evento de tiempo con la palabra alter seguida de alguna expresión que se evalúa para producir algún periodo de tiempo. Un evento de cambio es un evento que representa un cambio en el estado o e cumplimiento de alguna condición, se modela con la palabra when seguida de alguna expresión booleana. when (11:49 PM) /AutoTest() alter (2 Segundos) Inactivo /cortarConexión() Activo Evento de cambio Evento de tiempo Figura 46. 52
  • 53. 2.3.2 Máquinas de Estado Una máquina de estados es un comportamiento que especifica las secuencias de estados por las que pasa un objeto a lo largo de su vida en respuesta a eventos. Un Estado es una condición o situación en la vida de un objeto durante la cual satisface alguna condición, realiza una actividad o espera algún evento. Un evento es la especificación de un aconecimietno significativo que ocupa un lugar en el tiempo y el espacio, es la estimulación que puede disparar una transición de estados Un transición es una relación entre dos estados que indica que un objeto que esté en el primer estado realizará ciertas acciones y entrará el segundo estado cuando ocurra un evento específico y se satisfagan unas condiciones específicas y una actividad es una ejecución no atómica en curso, dentro de una máquina de estados. Estados Un estado es una condcion o situación enla vida de un objeto durante la cual satisface alguna condición, realiza una actividad o espera un evento. Un objeto puede estar en cualquier estado durante una cantidad de tiempo determinado, por ejemplo un calentador de agua puede estar en cualquiera de los cuatro estados: inactivo, en preparación (esperando alcanzar la temperatura adecuada), activo(cuando el calentador alcanza la temperatura ideal para calentar el agua), y pagado. Un estado tiene varias partes, nombre, acciones de entrada salida, transiciones internas, subastados y eventos diferidos. Como se muestra a continuación un estado se representa con un rectángulo con las esquinas redondeadas. apagar Estado final Estado inicial Inactivo teclaPulsada Funcionando Terminado nombre nombre Figura 47. estado 53
  • 54. Como se observa en la grafica anterior en la máquina de estados de un objeto se pueden definir dos estados especiales, en primer lugar e punto inicial que indica el puno de comienzo por defecto para la máquina de estados o el subestado. En segundo lugar, el estado final, que indica la ejecución de la máquina de estado o del estado que lo contiene ha finalizado Transiciones Una transición es una relación entre dos estados que indica que un objeto que esté en el primer lugar estado realizará ciertas acciones y entrará en el segundo estado cuando ocurra un evento específico y se satisfagan unas condiciones específicas, cuando se produce este cambio de estado, se dice que la transición se ha disparado, hasta que se dispara la transición se dice que el objeto está en el estado origen, después de dispararse se dice que esta en el estado destino. Evento de tiempo Envío de señal Evento de disparo Transición sin disparador alter (2 Segundos) /send c.estaActivo autotransición ruido Inactivo Inactivo Inactivo objetoEn(p)[representaAmenaza]/ t.añadirObjeto(p) contactar Inactivo Inactivo Evento de disparo con parámetros acción condicion de gurda Figura 48. Una transición tiene cinco partes, estado origen, evento disparado, condición de guarda, acción y estado de destino; una transición se representa con una línea continua dirigida desde el estado origen hacia el destino y una autotransición es una transición cuyos estados origen y destino son los mimos 54
  • 55. 2.4.3 Tiempo y Espacio Una marca de tiempo denota el instante en el que ocurre un evento, gráficamente, una marca de tiempo es una expresión obtenida a partir del nombre dado al mensaje; una expresión de tiempo es una expresión que al evaluarse genera un valor de tiempo absoluto o relativo. Una restricción de tiempo se representa como cualquiera otra restricción, es decir, una cadena de texto entre llaves y normalmente conectada a un electo mediante una relación de dependencia. La localización es la asignación de un componente de un nodo. Gráficamente, la localización se representa como un valor etiquetado, es decir, una cadena de texto entra llaves colocada debajo del nombre del elemento, o mediante la inclusión de componentes dentro de nodos. Restricción de tiempo {cada 1ms} c1 : notasDePrueva c : ControladorMIDI : ColecciónDeNotas Restricción de tiempo {executeTime <10 ms} c2 : notasDePrueba() n: Nota c3 : a ñadir(k) b: BufferDeEventosMIDI t : TransmisionMIDI Figura 49. t1 : quitar() {cada 1 ms} Restricción de tiempo En el gráfico anterior se observa la manera como se representa el tiempo y el siguiente gráfico se muestra la localización Figura 50. Localización por inclusión 55 t : TransmisionMIDI Valor etiquetado de localización {location=Enrutador}
  • 56. 2.4.4 Diagramas de Estado Es un tipo especial de diagrama y comparte las propiedades comunes al resto de los diagramas, lo que distingue a un diagrama de estados de los otros tipos de diagramas es su contenido, normalmente los diagramas de estados contienen: • Estados simples y compuestos • Transiciones, incluyendo eventos y acciones Observemos un diagrama de estados a continuación con todos sus componentes Estado inicial sonando Inactivo cabeceraOK Transición sin Conectando Procesando disparador enviarFax colgar verificaciónOK evento evento entry/descolgar Transmisión Limpiando error/imprimirError exit/desconectar estado acción acción Estado compuesto Figura 51. 56
  • 57. 2.3. Modelado Arquitectónico 2.3.1. Componentes, despliegue, colaboraciones y patrones Componentes Un componente es una parte física y reemplazable de un sistema que conforma un conjunto de interfaces. Gráficamente, un componente se representa como un rectángulo con pestañas, un componente debe tener un nombre que lo distinga del resto de componentes. El nombre de un componente puede ser simple o de camino que consta del nombre del componente precedido del nombre del paquete en el que se encuentra, usualmente un componente se dibuja solamente con su nombre pero se pueden adornar con valores, etiquetas o con algún comportamiento que indique sus detalles. Como se muestra en la siguiente figura Agentefraudes.dll Componente con nombre simple agenteFraudes PoliticaFraudes BusquedaDePatrones clases Figura 52. Interfaz Imagen.java Imagen.java ObservadorDeImagen Figura 53. Relación de dependencia realización 57
  • 58. Despliegue Un nodo es un elemento físico que existe en tiempo de ejecución y representa un recurso computacional que generalmente tiene alguna memoria y a menudo capacidad de procesamiento, gráficamente un nodo se representa como un cubo. . El nombre de un componente puede ser simple o de camino que consta del nombre del componente precedido del nombre del paquete en el que se encuentra, usualmente un nodo se dibuja solamente con su nombre pero se pueden adornar con valores, etiquetas o con algún comportamiento que indique sus detalles. Como se muestra en la siguiente figura nodo con nombre simple ventas pos.exe Contactos.exe componentes Figura 54. Colaboraciones Una colaboración es una sociedad de clases, interfaces y otros elementos que colaboran para proporcionar un comportamiento cooperativo mayor que la suma de los comportamientos de sus elementos. Una colaboración es también la especificación de cómo un elemento tal como un clasificador o un operación, es realizado mediante un conjunto de clasificadores y asociaciones que juegan roles específicos utilizados de una forma específica, gráficamente, una colaboración se representa como una elipse con borde discontinua. El nombre de una colaboración puede ser simple o de camino que consta del nombre de la colaboración precedido del nombre del paquete en el que se encuentra, usualmente un nodo se dibuja solamente con su nombre pero se pueden adornar con valores, etiquetas o con algún comportamiento que indique sus detalles. Como se muestra en la 58
  • 59. siguiente figura Nombre Paso de mensajes entre nodos Figura 55. Patrones Un patrón es una solución común a un problema común en un contexto dado. Los patrones ayudan a visualizar, especificar, construir y documentar los artefactos de un sistema con gran cantidad de software. Hay dos tipos de patrones, patrones de diseño(Mecanismos) y frameworks. Mecanismos Un mecanismo simplemente muestra un conjunto de abstracciones que colaboran entre si par llevar a cabo algún comportamiento común, estos mecanismo se muestran como colaboraciones simples, ya que solamente dan el nombre a una sociedad de clases. frameworks <<framework>> recepción de pedidos facturación comprobación Figura 56. mecanismos 59
  • 60. Los mecanismos pueden nombrar una plantilla formada por un conjunto de de abstracciones que colaboran entre sí para llevar a cabo algún comportamiento común, se representan como colaboraciones parametrizadas que se muestran de forma parecida a las clases plantilla, observe la siguiente figura rol platilla ColaTares Sujeto Sujeto Observador ligadura Observador BarraDesplazamiento Observador colaboraciones rol Figura 57. Frameworks Un frameworks es un patrón arquitectónico que proporciona una plantilla extensible para aplicaciones dentro de un dominio. La siguiente figura ilustra un frameworks, llamado AdministradorCiclo entre otras cosas, este frameworks incluye una colaboración EventosComunes que contiene un conjunto de clases evento, junto con un mecanismo GestorDeEventos para procesar estos eventos de forma cíclica. Un cliente que utilice este frameworks tal como un Marcapasos podría construir sobre las abtracciones en EventosComunes creando subclases y también podría emplear una instancia del mecanismo GestorDeEventos 60
  • 61. frameworks ligaduras Pacificador <<frameworks>> AdministradorCiclico Cliente Gestor GestorDeEvento s EventosComunes colaboraciones Figura 58. 2.3.2. Diagramas de Componentes Lo que distingue a un diagrama de componentes de otros tipos de diagramas es su contenido. Normalmente contienen componentes, interfaces y relaciones entre ellos. Y como todos los diagramas, también puede contener paquetes utilizados para agrupar elementos del modelo. Un diagrama de componentes muestra las organizaciones y dependencias lógicas entre componentes software, sean éstos componentes de código fuente, binarios o ejecutables. Desde el punto de vista del diagrama de componentes se tienen en consideración los requisitos relacionados con la facilidad de desarrollo, la gestión del software, la reutilización, y las restricciones impuestas por los lenguajes de programación y las herramientas utilizadas en el desarrollo. Los elementos de modelado dentro de un diagrama de componentes serán componentes y paquetes. Dado que los diagramas de componentes muestran los componentes software que constituyen una parte reusable, sus interfaces, y su interrelaciones, en muchos aspectos se puede considerar que un diagrama de componentes es un diagrama 61
  • 62. de clases a gran escala. Cada componente en el diagrama debe ser documentado con un diagrama de componentes más detallado, un diagrama de clases, o un diagrama de casos de uso. Un paquete en un diagrama de componentes representa un división física del sistema. Los paquetes se organizan en una jerarquía de capas donde cada capa tiene una interfaz bien definida. Un ejemplo típico de una jerarquía en capas de este tipo es: Interfaz de usuario; Paquetes específicos de la aplicación; Paquetes reusables; Mecanismos claves; y Paquetes hardware y del sistema operativo. Un diagrama de componentes se representa como un grafo de componentes software unidos por medio de relaciones de dependencia (generalmente de compilación). Puede mostrar también que un componente software contiene una interfaz, es decir, la soporta. Un ejemplo se muestra a continuación find.html página find.exe nateng.dll componente biblioteca Figura 60. 2.3.3. Diagramas de Despliegue Cuando se trata de hardware y el software del sistema, se utiliza los diagramas de despliegue para razonar sobre la tipología de procesadores y dispositivos sobre los que reejecuta el software. Los diagramas de despliegue se utilizan para visualizar los aspectos estáticos de estos nodo físicos y sus relaciones y para especificar sus detalles para la construcción, como se muestra a continuación 62
  • 63. nodo modem <<procesadorr>> <<procesadorr>> nodo servidor cache servidor cache conexión <<procesadorr>> <<procesadorr>> <<procesadorr>> <<procesadorr>> servidor principal servidor servidor servidor Figura 61. Un diagrama de despliegue es un diagrama que muestra la configuración de los nodos que participan en la ejecución y de los componentes que residen en ellos, gráficamente, un diagrama de despliegue es una colección de nodos y arcos. 2.3.4. Sistemas y modelos UML proporciona una representación gráfica de los sistemas y los subsistemas, esta notación permite visualizar la descompensación de un sistema en subsistemas más pequeños, gráficamente, un sistema y un subsistema se representa con el símbolo de un paquete estereotipado. Observemos su representación a continuación 63
  • 64. <<system>> sistema de ventas <<subsystem>> <<subsystem>> <<subsystem>> subsistema de subsistema de subsistema de servicio al gestión de gestión de cliente almacén producción Figura 62. Un sistema posiblemente descompuesto en una colección de subsistemas, es un conjunto de elementos organizados para lograr un propósito y descrito por un conjunto de modelos. Un subsistema es una agrupación de elementos, algunos de los cuales constituyen una especificación del comportamiento ofrecido por otros elementos. 64
  • 65. TERCERA UNIDAD DESARROLLO ORIENTADO A OBJETOS CON UML 65