Post on 22-Mar-2018
Modelado de objetos con UML
José Vicente Núñez Zuleta (jose@eud.com,josevnz@yahoo.com)
Líder de desarrollo para El Diario El UniversalDivisión de Nuevos Medios
Puntos a tratar
!¿Qué es UML?!Tipos de diagramas.!Problema: Un sistema de pruebas en línea.!Casos de uso.!Paquetes.!Diagramas de clases.!Diagramas de interacción y secuencia.!Diagrama de transición de estado.
¿Qué es UML?
!UML es la respuesta de la OMG (Object ManagmentGroup) para definir una notación estándar para elmodelado de aplicaciones construidas mediante objetos.!Es el sucesor natural de notaciones de métodos de Booch,
OMT (Object Modelgin Languaje) y OOSE (ObjectOriented Software Engineering).! En vez de tener una guerra de métodos y notaciones, se
busca un estándar (Jim Rumbaugh y Grady Booch finalesdel 1994. Luego se une Iban Jacobson).!UML es una notación, no una metodología.
Tipos de diagramas en UML!Diagramas de caso de uso: representan las funciones
del sistema desde el punto de vista del usuario.!Diagramas de actividades: representan el
comportamiento de una operación en términos deacciones.!Diagramas de clases: representan la estructura
estática en términos de clases y relaciones.!Diagramas de colaboración: que son una
representación espacial de los objetos, enlaces einteracciones.!Diagramas de componentes: representan bloques
físicos de una aplicación.
Tipos de diagramas en UML
!Diagramas de componentes: representan eldespliegue de los componentes sobre losdispositivos materiales.!Los diagramas de estados - transiciones:
representan el comportamiento de una clase entérminos de estados.!Los diagramas de secuencia: que son una
representación temporal de los objetos y susinteracciones.
Tipos de diagramas en UML
!Diagramas de componentes: representan eldespliegue de los componentes sobre losdispositivos materiales.!Los diagramas de estados - transiciones:
representan el comportamiento de una clase entérminos de estados.!Los diagramas de secuencia: que son una
representación temporal de los objetos y susinteracciones.
Problema: sistema de pruebas en línea!Se desea que los usuarios del sitio
"depresivos.com" puedan expresar su opinión pormedio de encuestas interactivas. La aplicacióndebe permitir lo siguiente:
!Que el usuario no pueda votar más de una vez!Debe poder ver el resultado de la votación en tiempo real (implica
un diagnóstico dada la puntuación.!El usuario deberá tener acceso a preguntas con respuesta cerrada
simple en cada prueba.!Adicionalmente se desea que el responsable de la encuesta cuente
con una interfaz que le permita agregar, modificar y eliminar lasencuestas.
!Se debe poder definir la duración de la prueba (fecha de inicio,fecha final).
!El lanzamiento del sitio Web es en dos semanas y se desea contarcon esta funcionalidad.
Casos de uso!Fueron desarrollados por Ivan Jacobson.!Describen bajo forma de acciones y reacciones el
comportamiento del sistema desde el punto devista del usuario.!Los casos de uso se componen de 3 elementos:
actores, sistema y casos de uso.!Los actores son roles que se juegan en el sistema.
Salen de las cosas y personas exteriores a unsistema donde interaccionan con elintercambiando información (entrada y salida).!Los casos de uso son escenarios de interacción de
los actores.!Salen de las tareas del actor, cambios en la
información.
Casos de uso (continuación)
votar en prueba
Votante
obtenerResultado()
Administrador de encuestas
manipular categorías
manipular respuestas
manipular preguntas
manipular encuesta
<<uses>>
<<uses>>
Casos de uso (continuación)Nombre: votar en encuestaNumero: 1.0Autor: José Vicente Núñez Zuleta (jose@eud.com)Última actualización: 25/03/2000Actores: Administrador de encuestasOtros casos de uso referenciados:Precondiciones:Que el usuario no haya votado previamente en esta encuesta.Que la fecha de inicio sea mayor o igual a la fecha actual y la fecha de finalización de la encuesta seamayor o igual a la actual.
Inicialización del caso de uso:El usuario escoge la prueba que desea tomar y es llevado hacia la prueba en línea deseada.Proceso o descripción del caso de uso:El usuario responde a las preguntas de la prueba en línea, pulsa el botón de continuar y es llevado a unapágina en donde se le muestra el resultado de su votación (basado en su puntuación) y cuantas personasha caido dentro de una categoría de resultados dada.Para más detalles ver diagrama de actividades.Terminación del caso de uso:El usuario ve el resultado de la prueba y cuántos han caído por categoría.Post condiciones:Si no ha votado se registra su voto en una categoría.Asuntos sin resolver:Mejoras futuras:
Diagrama de actividades
!Representa el estado de la ejecución de unmecanismo bajo la forma de un desarrollo deetapas agrupadas secuencialmente en ramasparalelas de flujo de control.!Esta destinado a representar casos de uso
(complejos).!El caso de uso está compuesto por actividades
(las cuales tienen transisiones automáticas).!Los flujos de eventos se representan por flechas
punteadas. Las condiciones por un rombo.
Diagrama de actividades
S e ca rg a una encuesta da do el código
inicio
fin
renderizar página con prueba
reponder a cad a una de las preguntas
Calcular resultado de la votación
¿El usuario ya votó?
incrementar conta do r d e voto en categoria adecuada
no
mostrar resultado de la prueba y agrupación de votantes por categoria
si
Diagrama de clases!Revise el enunciado del problema, casos de uso y
escenarios para identificar sustantivos. Cree una lista decantidatos. Incluya objetos físicos y conceptos.!Revise los sustantivos para ver si tienen relevancia con el
problema, así como para ver si están en contexto.!Elimine los sustantivos innecesarios, anote cuáles
sustantivos son atributos (color, tamaño).!Una vez obtenidas las clases candidatas vea como se
relacionan entre sí (tipos de enlaces, roles, multiplicidad).!Defina relaciones avanzadas como agregación o herencia!El diagrama de clase expresa la estructura estática del
sistema en términos de clases y relaciones.!Una clase representa una abstracción de un objeto.!Un clase se representa con un cuadrado dividido en 3
partes.
Diagrama de clases!Se desea que los usuarios del sitio
"depresivos.com" puedan expresar su opinión pormedio de encuestas interactivas. La aplicacióndebe permitir lo siguiente:
!Que el usuario no pueda votar más de una vez.!Debe poder ver el resultado de la votación en tiempo real (implica
un diagnóstico dada la puntuación).!El usuario deberá tener acceso a preguntas con respuesta cerrada
simple en cada prueba.!Adicionalmente se desea que el responsable de la encuesta cuente
con una interfaz que le permita agregar, modificar y eliminar lasencuestas.
!Se debe poder definir la duración de la prueba (fecha de inicio,fecha final).
!El lanzamiento del sitio Web es en dos semanas y se desea contarcon esta funcionalidad.
Diagrama de clases
CategoríanId : LongsTitulo : StringsDescripción : StringnPuntación : Integer
<<entity>>
PruebanId : longsTitulo : StringsDescripcion : StringdFechaInicio : DatedFechaFinal : Date
<<entity>>
oCategorias : Categoría
1..*
oCategorias : Categoría
1..*
PreguntanId : LongsTitulo : String
<<entity>>
oPreguntas : Pregunta1..* oPreguntas : Pregunta1..*
RespuestanId : LongsTitulo : StringnPuntación : Integer
<<entity>>
oRespuesta : Respuesta
1..*
oRespuesta : Respuesta
1..*
ResultadoVotacionsDiagnostico : String
<<entity>>
Diagrama de clase (herencia)
vehiculonombrecostovelocidad
aMotortecnologíaDeInyeccióncombustible
aGaspresiónMáximaDeVapor
Paquetes!Los paquetes ofrecen un mecanismo general para
la partición de los modelos y la agrupación de loselementos de modelado.!No es el comienzo de una descomposición
funcional; es la agrupación de elementos desde elpunto de vista enteramente lógico.!Piense en arquitecturas conocidas.
Diagramas de colaboración
!Muestran las interacciones entre los objetos,insistiendo más en la estructura espacial estáticaque permite la colaboración entre los objetos.!Expresan el contexto de un grupo de objetos (a
través de objetos y enlaces) y la interacción entreestos objetos (por representación de envíos demensajes).
Diagramas de colaboración
: Usuario
: Ascensor
: Cabina : Puerta
: Luz
1: Escoger ascensor
2: Subir
3: Encender
4: Cerrar
Diagramas de secuencia!Muestran las interacciones entre objetos según un
punto de vista temporal. Describe la interacción entreclases.!El contexto de los objetos no se representa de manera
explícita como en los diagramas de colaboración.!La primera utilización corresponde a la documentación
de los casos de uso: se concentra sobre la descripciónde la interacción, a menudo en términos próximos alusuario y sin entrar en detalles próximos de laaplicación.!Identifica cada escenario y clases participantes. Ayuda
a obtener candidatos a mensajes (métodos) de losobjetos.!Se pueden especificar argumentos en los mensajes.
Diagrama de secuencia
instancia : Votante
hojaDeVotación : hojaDeVotacion
instancia : Prueba
instancia : GerenteDePruebas
instancia : votarEncuesta
recuperarPrueba(Long)
renderizar prueba( )
guardarVotoPrueba(Prueba)
recuperarPrueba(Long)
obtenerDiagnóstico( )
getCategoría( )
renderizarResultado( )
Digrama de clases completo
CategoríanId : LongsTitulo : StringsDescripción : StringnPuntación : Integer
setSerial(nElSerial : Long)setTitulo(sTitulo : String)setDescripcion(sLaDescripcion : String)setPuntuacion(nLaPuntuacion : Integer)getSerial() : LonggetTitulo() : StringgetDescripcion() : StringgetPuntuacion() : Integer
<<entity>>
PruebanId : longsTitulo : StringsDescripcion : StringdFechaInicio : DatedFechaFinal : Date
setTitulo(sTitulo : String)setDescripcion(sLaDescripcion : String)setPuntacion(nLaPuntacion : Integer)setFechaInicio(dLaFechaDeInicio : Date)setFechaFinal(dLaFechaFinal : Date)obte nerDiagnóstico() : StringgetCategoría() : CategoríagetTi tu lo() : StringgetDescripcion() : StringgetPuntuacion() : StringgetFechaInicio() : DategetFechaFinal() : DatesetSerial(nElSerial : Long)getSerial() : Long
<<entity>>
oCategorias : Categoría
1..*
oCategorias : Categoría
1..*
PreguntanId : LongsTitulo : String
setSerial(nElSerial : Long)setTitulo(sElTitulo : String)getSerial() : LonggetTitulo() : Long
<<entity>>
oPreguntas : Pregunta1..* oPreguntas : Pregunta1..*
RespuestanId : LongsTitulo : StringnPuntación : Integer
setSerial(nSerial : Long)setTitulo(sElTitulo : String)setPuntuacion(nLaPuntuacion : Integer)getSerial() : LonggetTitulo() : StringgetPuntuacion() : Integer
<<entity>>
oRespuesta : Respuesta
1..*
oRespuesta : Respuesta
1..*
ResultadoVotacion
sDi agnostico : String
<<entity>>
Diagrama de Estados - Transiciones
!Los diagramas de estados - transicionesvisualizan autómatas de estados finitos desde elpunto de vista de los estados y las transiciones.!El comportamiento de los objetos de una clase
pueden describirse por medio de un autómatavinculado a la clase considerada.!Documentan los cambios en la clase a través del
tiempo, y los comportamientos relacionados conesos cambios.!Sólo escoja las clases con un comportamiento
significativo. No todas las clases requieren undiagrama de este tipo.
Diagrama de Estados - Transiciones
cargar página
entry/ Recibir código de encuestado/ Instancia r encuestado/ Cargar código Javascript
Desplegar formulario de la encuesta
entry/ Crear estructuras de datosdo/ Generar contenido dinámico de formularioexit/ Validar datos de la forma
finalizar
Instanciar objetos
Enviar datos a servlet
Diagramas de despliegue
!Muestran la disposición física de los distintosmateriales (los nodos) que entran en composiciónde un sistema y el reparto de los programasejecutables sobre estos materiales.!Cada nodo representa un dispositivo, unidos por
un canal de comunicación.