Análisis UML

Índice
- Introducción
- Objetivos
- 1.Análisis orientado a objetos con UML
- 1.1.Análisis orientado a objetos
- 1.2.El lenguaje UML
- 1.2.1.Motivación del lenguaje UML
- 1.2.2.Origen del lenguaje UML
- 1.2.3.Tipos de diagramas UML
- 1.3.Ejemplo
- 2.Modelo de casos de uso
- 2.1.El diagrama de casos de uso
- 2.2.El diagrama de actividades
- 2.2.1.Lógica condicional
- 2.2.2.Paralelización
- 2.2.3.Organización: carriles
- 2.2.4.Otros elementos de notación
- 2.3.El modelo resultante
- 3.Modelización de la interfaz
- 4.Modelo del dominio
- 4.1.Convenciones en los diagramas UML
- 4.2.Clases
- 4.2.1.Notación UML
- 4.2.2.Técnicas de modelización
- 4.3.Atributos
- 4.3.1.Notación UML
- 4.3.2.Técnicas de modelización
- 4.4.Asociaciones
- 4.4.1.Notación UML
- 4.4.2.Técnicas de modelización
- 4.5.Herencia
- 4.5.1.Notación UML
- 4.5.2.Técnicas de modelización
- 4.6.Información derivada y reglas de integridad
- 4.6.1.Reglas de integridad
- 4.6.2.Información derivada
- 4.7.Clases y atributos: elementos avanzados
- 4.7.1.Tipos de datos
- 4.7.2.Atributos: notación UML avanzada
- 4.8.Asociaciones: elementos avanzados
- 4.9.El modelo resultante
- Resumen
- Actividades
- Ejercicios de autoevaluación
- Solucionario
- Glosario
- Bibliografía
Introducción
Objetivos
-
Saber usar la orientación a objetos para hacer análisis de software para sistemas de información.
-
Saber utilizar la notación UML para documentar modelos de análisis orientados a objetos.
-
Saber emplear los casos de uso para llevar a cabo análisis funcional de software para sistemas de información.
-
Saber usar los diagramas de actividades para documentar en detalle los casos de uso complejos como procesos.
-
Saber modelizar la interfaz gráfica de usuario del software mediante casos de uso concretos, esbozos de las pantallas y mapas navegacionales.
-
Saber hacer modelización del dominio mediante diagramas de clases UML.
1.Análisis orientado a objetos con UML
1.1.Análisis orientado a objetos
1.2.El lenguaje UML
1.2.1.Motivación del lenguaje UML
-
Como lenguaje para hacer un croquis. Se trata de hacer un uso informal (normalmente dibujando a mano alzada) para explicar o explorar algún aspecto en concreto de un sistema informático. La clave aquí es la selectividad: sólo tenemos en cuenta los detalles que son relevantes para la discusión que estamos llevando a cabo en este momento y obviamos el resto. De este modo, conseguimos maximizar la relación entre el esfuerzo dedicado a la creación de los modelos y la utilidad obtenida en cambio.
-
Como lenguaje para hacer un plano. Construir modelos más detallados que nos permitan documentar el sistema con suficiente detalle para facilitar la implementación (incluso con generación automática de código) o para capturar de manera visual los detalles sobre la estructura y el comportamiento de un sistema existente (ingeniería inversa). La idea es poder conseguir que un diseñador cree los planos del sistema y que, más adelante, los programadores sólo tengan que escribir el código, pero no tomar decisiones sobre cómo ha de ser el sistema por desarrollar.
-
Como lenguaje de programación. Éste sería el caso de las herramientas MDA. Se trata de crear modelos tan detallados del sistema que el código que se pueda generar de manera automatizada no tenga que ser modificado (ni siquiera leído) por los desarrolladores. Éste es un campo en el que, actualmente, se están haciendo muchos esfuerzos de investigación.
-
Perspectiva conceptual. El modelo representa una descripción de los conceptos del dominio que estamos estudiando.
-
Perspectiva de software. El modelo representa el sistema informático y, por lo tanto, existe una correspondencia directa entre los elementos del modelo y las partes del sistema.
1.2.2.Origen del lenguaje UML
1.2.3.Tipos de diagramas UML













1.3.Ejemplo
2.Modelo de casos de uso
2.1.El diagrama de casos de uso

2.1.1.Actores
2.1.2.La frontera del sistema
2.1.3.Los casos de uso
2.1.4.Relaciones entre casos de uso y actores
2.1.5.Relaciones entre casos de uso: inclusión


2.1.6.Relaciones entre casos de uso: extensión

2.2.El diagrama de actividades


2.2.1.Lógica condicional



2.2.2.Paralelización

2.2.3.Organización: carriles

2.2.4.Otros elementos de notación
2.3.El modelo resultante



3.Modelización de la interfaz
-
De qué manera el sistema presenta la información a los usuarios (mediante una interfaz gráfica, un sistema de voz, etc.).
-
Cómo navega el usuario a través de la información que le muestra el sistema para conseguir sus objetivos.
-
Cómo se relaciona el comportamiento indicado en el modelo de casos de uso con la interfaz de usuario.
3.1.Casos de uso concretos
-
Especialista en interacción. Su finalidad es conseguir que los usuarios del sistema consigan cumplir sus objetivos. Para hacerlo, estudia las diferentes tareas para conseguir un objetivo concreto (por ejemplo, qué hay que hacer para matricular un alumno en la universidad) y el modo como se llevan a cabo.
-
Especialista en usabilidad. Aplica el método científico al estudio y la observación del modo como los usuarios utilizan el sistema para hacer que el uso sea cómodo e intuitivo.
-
Arquitecto de información. Se encarga de organizar la información de manera que sea fácil de encontrar y de utilizar. Por ejemplo, es el encargado de asegurarse de que los estudiantes puedan acceder rápidamente al foro de su aula y de que no tengan que navegar por un montón de pantallas antes de llegar a él.

3.2.Modelos de las pantallas

-
qué información se muestra,
-
la distribución de la información en la pantalla,
-
qué acciones puede realizar el usuario a partir de la información mostrada,
-
cuál es el proceso que sigue el usuario para completar el caso de uso.
3.2.1.Diagrama de estado de las pantallas (mapa navegacional)

-
seleccionarCarpeta (nombreCarpeta) en Lista de Mensajes
-
seleccionarMensaje (posicionMensaje) en Mostrar Mensaje
-
seleccionarCarpeta (nombreCarpeta) en Lista de Mensajes
3.3.Contratos de las operaciones del sistema
-
La firma. Nos dice el nombre de la operación, la información que recibe de aquel que la solicita (los parámetros de entrada) y la información que se devuelve a quien ha solicitado la operación (los parámetros de salida o el resultado).
-
Las precondiciones. Las obligaciones que debe cumplir aquel que solicita la operación para que el sistema la ejecute correctamente. En el supuesto de que estas precondiciones no se cumplan, supondremos que el sistema rechaza el acontecimiento y que no se produce ningún cambio.
-
Las poscondiciones. Las obligaciones a las que se compromete el sistema cuando se invoca la operación. El sistema se compromete a que sean ciertas estas condiciones una vez ejecutada la operación.
-
el nombre de la operación (obtenerNombreMensajesCarpeta).
-
la información que aporta el usuario (nombreCarpeta de tipo String, es decir, un texto).
-
la información que devolverá el sistema (en este caso, un número entero).
-
las obligaciones del usuario (dar un nombre de carpeta que exista).
-
las obligaciones del sistema (calcular el número de mensajes de la carpeta y devolverlo).
4.Modelo del dominio
4.1.Convenciones en los diagramas UML
-
Usaremos nombres en minúsculas en general. Para las clases, las asociaciones y los tipos de atributo, la primera letra estará en mayúscula, como si se tratara de un nombre propio.
-
No usaremos nombres que contengan espacios; separaremos las palabras poniendo en mayúscula la primera letra de cada palabra.
-
No usaremos caracteres fuera del rango de ASCII, como los signos de puntuación, los acentos, la ç, etc.
4.2.Clases
4.2.1.Notación UML

4.2.2.Técnicas de modelización
Identificación de clases del dominio






-
Participantes, lugares y cosas. Clases que representan personas u organizaciones del dominio (participantes), lugares y cosas. Los almacenes de los que dispone una empresa, los productos que vende o las personas que trabajan en ella o que le compran materiales, por ejemplo, pertenecen a esta categoría.

-
Roles. Clases que representan los roles que pueden tener las personas o las organizaciones en las actividades que se desarrollan en el dominio analizado. Los roles de comprador o vendedor que pueden tener las personas en muchos negocios son un buen ejemplo de esto.
-
Momentos o intervalos. Clases que representan momentos en el tiempo o intervalos de tiempos, como un alquiler, una venta, etc. A menudo, estos momentos o intervalos tienen un conjunto de partes.
-
Descripciones. Clases que representan la descripción habitual de tipo catálogo de una cierta "cosa", normalmente un producto. Así, por ejemplo, distinguimos un coche concreto, que tiene su matrícula y número de bastidor, del modelo de coche, que es una descripción de tipo catálogo asociada a aquel coche concreto.
-
Transacciones, líneas de transacción y productos o servicios: las transacciones, normalmente de negocio. Un ejemplo clásico son las ventas de un supermercado. Cada venta tiene un conjunto de líneas de venta en la que cada línea tiene un producto vendido, un número de unidades y un precio total de línea.
-
Acontecimientos importantes, a menudo en una fecha o lugar que es relevante, como un vuelo o el pase de una película.
-
Catálogos y descripciones de cosas: las descripciones, en el sentido de Coad, se pueden agrupar en catálogos.
-
Contenedores físicos o lógicos y los elementos que contienen, como almacenes y los productos que guardamos en ellos, o un tablero de ajedrez y las casillas que éste contiene.
-
Sistemas externos con los que interactuará el sistema que estamos analizando.
-
Grabaciones de trabajos, contratos, asuntos legales, etc., como los recibos.

-
Instrumentos financieros, como un cheque, efectivo, etc.
-
Agendas, manuales, documentos, etc.
Nomenclatura de las clases
-
Utilizar la terminología que usan las personas y los expertos del dominio que se está modelizando, al igual que un cartógrafo usa la toponimia local en el lugar que está cartografiando.

-
Excluir aspectos irrelevantes del dominio que estamos analizando, al igual que los cartógrafos hacen una abstracción de la realidad y sólo representan aquellos rasgos del terreno que interesan en un mapa.

-
No añadir nada que no corresponda realmente al dominio que analizamos.
Error frecuente: clases de dominio, no de software
4.3.Atributos
4.3.1.Notación UML
-
"0..1" para indicar que un atributo es univaluado pero opcional.
-
"1" para indicar que un atributo es univaluado y obligatorio. Esta opción es la que consideraremos por defecto y, por lo tanto, no indicaremos esta multiplicidad de manera explícita.
-
"*" para atributos multivaluados ("1..*" si como mínimo han de tener un valor). Una manera equivalente es indicar "0..*", pero dado que "*" es más corto, usaremos esta segunda manera.
-
Otras multiplicidades, como "3..5" (entre 3 y 5 valores).
-
nombre: String
-
fechaNacimiento: Fecha [0..1]
-
telefono: Telefono[1..*]
4.3.2.Técnicas de modelización
Identificación de atributos
-
Números: a menudo nos conviene saber si se trata de números naturales (enteros positivos, que denominaremos Nat), enteros (Int) o números no enteros en general (Real).
-
Textos: strings (cadenas de caracteres sin formato) y textos con formato.
-
Booleanos: cierto o falso, sí o no.
-
Información temporal: como Fecha (1 de enero de 1980), Hora (12:43), Momento (1 de enero de 1980 a las 12:43), Duración (63 minutos).
-
Cantidades: como Importe (por ejemplo 23 €), Longitud (por ejemplo 23,5 m), Temperatura (15°), Masa, etc.
-
Otros valores sin entidad propia: Color (como el color RGB 70, 0, 130), Coordenadas (por ejemplo 41°23'N 2°11'E), CodigoPostal, NumeroTelefono, etc.








Atributos opcionales y atributos multivaluados


4.4.Asociaciones
4.4.1.Notación UML

4.4.2.Técnicas de modelización
Nombres de asociación y de roles
-
Alumno SeMatriculaDe Asignatura
-
Profesor Imparte Grupo
-
Estudiante Entrega Actividad



Identificación de asociaciones






-
Los participantes, cosas o lugares pueden tener asociada una descripción.
-
Cada participante, pero también las cosas o los lugares, puede tener asociados cualquier número de roles, en los que cada instancia de rol corresponde a un único participante.

-
Los momentos o intervalos pueden tener asociados varios roles correspondientes a los participantes, los lugares y las cosas que intervienen en ellos (bajo un rol determinado, como comprador o vendedor).
-
Las transacciones pueden tener asociadas otras transacciones, como la asociación entre una venta y su pago.
-
Algunas transacciones tienen asociadas líneas de transacción, como las líneas de venta de una venta de un supermercado.
-
Las transacciones o líneas de transacción pueden tener asociado un producto o descripción de producto, como la asociación entre la línea de venta del supermercado y la descripción del producto vendido.
-
Las transacciones pueden tener asociados participantes por medio de sus roles.
-
Algunas clases representan objetos que están compuestos lógica o físicamente por objetos de otra clase, como los asientos de una sala de cine o los pisos de un edificio.
-
Nos puede interesar la relación de contenedor-contenido entre instancias, como es el caso de un coche y la plaza de aparcamiento en la que está aparcado.

-
Si tenemos productos pero también descripciones de producto, tendremos una asociación entre éstos, como la que puede existir entre una edición de una asignatura y su asignatura, que ya hemos identificado previamente.
Clases asociativas




Asociaciones o atributos de tipos de clases del dominio

-
La clase Grupo, además de la propiedad numero de tipo Nat, tiene una propiedad responsable de tipo Profesor con multiplicidad 1.
-
La clase Profesor, además de la propiedad fechaContratacion de tipo Fecha, tiene una propiedad grupos de tipos Grupo con multiplicidad *.


Error frecuente: uso de claves foráneas

Error frecuente: clases de asociación con atributos erróneos

4.5.Herencia
4.5.1.Notación UML



4.5.2.Técnicas de modelización
Identificación de la herencia: generalización y especialización
-
La subclase candidata tiene atributos adicionales de interés (que no tienen todas las instancias de la clase examinada).
-
La subclase candidata tiene asociaciones adicionales de interés (que no tienen todas las instancias de la clase examinada).
-
La subclase candidata actúa de manera diferente en un sentido relevante. Puede ser que se use o se opere de manera diferente o que represente a una persona, animal o sistema con un comportamiento propio diferente.

-
Las subclases potenciales representan variaciones de un mismo concepto.
-
Las subclases potenciales tienen uno o más atributos en común que se pueden expresar como atributos de la nueva superclase.
-
Las subclases potenciales tienen una o más asociaciones en común que se pueden representar como asociaciones de la nueva superclase.



Error frecuente: herencias falsas


Distinción entre clases abstractas y clases concretas

Modelización del estado de los objetos



Modelización del rol de objetos y personas



4.6.Información derivada y reglas de integridad
4.6.1.Reglas de integridad

Claves de las clases del dominio
-
Persona: dni
-
Asignatura: nombre
-
Campus: nombre
-
Semestre: año + numero
-
Edificio: campus + nombre
-
Aula: edificio + nombre
-
Horario: semestre

-
FranjaHoraria: horario + dia + hora
-
ClaseProgramada: franjaHoraria + aula, franjaHoraria + grupo
-
Edicion: semestre + asignatura
-
Grupo: edicion + numero
-
Tablon: grupo
-
Foro: grupo
-
Actividad: edicion + titulo
-
Profesor: persona
-
Alumno: persona

-
Mensaje: carpeta + posición en carpeta
Otras restricciones de integridad
-
Para toda actividad, la fecha de entrega debe ser una fecha dentro del semestre de la edición a la que está asociada la actividad.
-
Las carpetas forman una jerarquía válida de madres-subcarpetas (no se pueden formar ciclos en los que una carpeta tenga como madre una hija, o una hija de su hija, etc.).
-
No puede haber más de una carpeta sin madre con el mismo nombre dentro del mismo buzón.
-
No puede haber más de una carpeta con la misma carpeta madre y el mismo nombre.
4.6.2.Información derivada

-
Carpeta::numMensajes es el número de mensajes asociados a la carpeta.
-
Persona::buzonesVisibles es el conjunto formado por el tablón y el foro (para quienes tengan) de todos los grupos a los que la persona está asociada como profesor o como alumno.
4.7.Clases y atributos: elementos avanzados
4.7.1.Tipos de datos


Enumeraciones


4.7.2.Atributos: notación UML avanzada
-
visibilidad. Un único carácter que indica la visibilidad del atributo y que puede ser "+" para visibilidad pública, "–" para privada, "#" para protegida y "~" para visibilidad de paquete. Normalmente, durante el análisis, no indicaremos ninguna visibilidad en los atributos de nuestros modelos.
-
valor-por-defecto. El valor por defecto que toma el atributo cuando se crea un objeto en el caso de que no se indique un valor inicial para éste.
-
propiedades. Permite indicar propiedades adicionales al atributo. Un ejemplo de propiedad es {readOnly}, que indica que un atributo no puede ser modificado una vez se ha creado el objeto, u {ordered}, que, para un atributo multivaluado, indica que el orden de los valores es relevante y que, por ejemplo, no es lo mismo tener los valores [933455667, 654433221] que los valores [654433221, 933455667].
4.8.Asociaciones: elementos avanzados
4.8.1.Composición
-
Si destruimos una instancia compuesta, todos sus componentes también son destruidos.
-
No puede haber instancias de la clase componente que no formen parte de una única instancia compuesta.
-
No podemos tomar una instancia componente y cambiarla de compuesto.

4.8.2.Asociaciones con repeticiones o con orden



4.8.3.Notación UML avanzada
-
Visibilidad de los extremos de asociación. Un solo carácter ante el nombre de rol, que indica la visibilidad del extremo de asociación y que puede ser "+" para visibilidad pública, "–" para privada, "#" para protegida y "~" para visibilidad de paquete.
-
Propiedades. Como en el caso de los atributos, permiten indicar propiedades adicionales de los extremos de asociación, como las ya vistas readonly (que también es aplicable a los extremos de asociación), non-unique u ordered.
-
Navegabilidad. A veces queremos que una asociación sólo sea navegable en uno de sus sentidos, es decir, que sólo una de las clases tenga una propiedad ligada a la asociación. En el caso del ejemplo hemos indicado que la asociación es navegable de Grupo a Profesor –y, por lo tanto, la clase Grupo tiene una propiedad Profesor–, pero no lo es de Profesor a Grupo –y, por lo tanto, la clase Profesor no tiene ninguna propiedad denominada grupos.

4.8.4.Asociaciones ternarias (y N-arias en las que N > 2)

4.9.El modelo resultante
-
Persona: dni
-
Asignatura: nombre
-
Campus: nombre
-
Semestre: año + numSemestre
-
Edificio: campus + nombre
-
Aula: edificio + nombre
-
Horario: semestre
-
FranjaHoraria: horario + dia + hora
-
Clase: franjaHoraria + aula, franjaHoraria + grupo
-
Edicion: semestre + asignatura
-
Grupo: edicion + numero
-
Tablon: grupo
-
Foro: grupo
-
Actividad: edicion + titulo
-
Profesor: persona
-
Alumno: persona
-
Mensaje: carpeta + posición en carpeta::mensajes
-
Para toda actividad, la fecha de entrega debe ser una fecha del año del semestre del curso al que está asociada la actividad.
-
Las carpetas forman una jerarquía válida de madres-subcarpetas (no se pueden formar ciclos cuya carpeta tenga como madre una hija, o una hija de su hija, etc.).
-
No puede haber más de una carpeta sin madre con el mismo nombre dentro del mismo buzón.
-
No puede haber más de una carpeta con la misma carpeta madre y el mismo nombre.
-
Carpeta::numMensajes es el número de mensajes asociados a la carpeta
-
Persona::buzonesVisibles es el conjunto formado por el tablón y el foro (para quienes tengan) de todos los grupos a los que la persona está asociada como profesor o como alumno.
Resumen
Actividades
-
El profesor de un grupo quiere preparar el inicio de curso. Primero debe elegir el grupo cuyo inicio de curso quiere preparar y, después, ha de escribir un mensaje de bienvenida en el tablón. Si su asignatura tiene foro, debe organizar las carpetas de éste. El mensaje de bienvenida en el tablón y la organización de las carpetas se pueden realizar en cualquier orden, pero no se puede dar el caso de uso por finalizado hasta que el profesor no haya hecho las dos cosas (salvo que el grupo no tenga foro, en cuyo caso basta con escribir el mensaje de bienvenida).
-
Un miembro del personal académico, por orden del jefe de estudios, quiere dar de alta una nueva edición de una asignatura. Elige la asignatura y a un profesor responsable, y el sistema registra la nueva edición. A continuación, el usuario indica si en esta asignatura se usa foro o no y crea uno o más grupos de la asignatura. El sistema asigna, a cada grupo, un número de grupo consecutivo (que el usuario puede cambiar). Para cada grupo, el usuario asigna un profesor. El sistema graba los nuevos grupos y crea un tablón para cada uno y, si se ha indicado que se usan, un foro también para cada uno de ellos.
-
Escribid una especificación concreta y detallada de este caso de uso.
-
Realizad el diagrama de actividades de este caso de uso.
-
Proponed un modelo de interfaz gráfica de usuario que incluya esbozos de las pantallas y mapa navegacional.
-
Elaborad el diagrama de clases del modelo del dominio.
-
Indicad la información derivada y las reglas de integridad adicionales que sean necesarias.
-
Elaborad el diagrama de clases del modelo del dominio.
-
Indicad la información derivada y las reglas de integridad adicionales que sean necesarias.


-
Buzon: direccion, Etiqueta:nombre
-
Los mensajes que no son una respuesta, y sólo estos, deben ser origen de una conversación.
-
Para una conversación leida es falso si y sólo si leido es falso para todos los mensajes que forman la conversación.
-
Una conversación está formada por su mensaje origen y por las respuestas a cualquiera de los mensajes que forma parte de la conversación.
-
Un mensaje sólo puede ser respuesta de otro que se halle en el mismo buzón.
-
¿Puede ser que un mensaje ni tenga destinatarios (paraA) ni tenga copia a nadie (copiaA)?
-
¿Puede ser que un mensaje no tenga cuerpo?
-
¿Qué sucede si borramos un buzón?
-
¿Y si borramos una etiqueta?
-
¿Cómo podríamos representar la primera restricción de integridad de manera gráfica en UML?
-
La multiplicidad del rol de asociación formadaPor es 1..*. ¿Por qué no es *?
-
¿Qué diferencias habría si en lugar de modelizar la etiqueta como una clase la hubiéramos modelizado como un atributo etiqueta:String de la clase Conversacion?


-
Usuario: nombreUsuario, Cuenta: usuario + numero, Movimiento: orden dentro de la cuenta
-
El usuario de una cuenta de crédito debe ser el mismo que el usuario de la cuenta de cargo asociado.
-
El saldo de una cuenta se calcula como saldoInicial + suma de todos los importes de todos los movimientos asociados a la cuenta.
Ejercicios de autoevaluación
Solucionario
-
Caso de uso: entregar una actividad
El estudiante pide entregar una actividad. El sistema le muestra una lista con las asignaturas que está cursando, de las que el estudiante elige una. A continuación, el sistema muestra una lista de actividades de la asignatura seleccionada y el usuario selecciona una y adjunta el archivo de la entrega. El sistema graba la entrega e incluye la fecha y la hora en la que se ha realizado.
-
Caso de uso: entregar una versión nueva de una actividad
Este caso de uso extiende el caso de uso Entregar una actividad cuando el estudiante adjunta el archivo de entrega y resulta que ya había hecho la entrega previamente. El sistema pide confirmación y el usuario confirma que quiere entregar una nueva versión y adjunta un nuevo archivo. El sistema registra la nueva versión y la nueva fecha y hora de entrega.
-
Caso de uso: adjuntar archivo
El usuario quiere adjuntar un archivo y el sistema le muestra un navegador de su espacio de carpetas, situado, inicialmente, en su carpeta de usuario. El usuario navega por el espacio de carpetas hasta que encuentra el archivo que quiere adjuntar, lo selecciona y lo confirma. El sistema guarda el archivo adjuntado.

-
Caso de uso: entregar una actividad. El estudiante pide entregar una actividad. El sistema le muestra una lista con las asignaturas que está cursando, de las que el estudiante elige una. A continuación, el sistema muestra una lista de actividades de la asignatura seleccionada y el usuario selecciona una y adjunta el archivo de la entrega. El sistema graba la entrega, incluyendo la fecha y hora en la que se ha hecho. Si el estudiante ya había hecho la entrega, el estudiante puede entregar una versión nueva de una actividad.
-
Caso de uso: entregar una versión nueva de una actividad. El sistema pide confirmación y el usuario confirma que quiere entregar una nueva versión y adjunta un nuevo archivo. El sistema registra la nueva versión y la nueva fecha y hora de entrega.


Pantalla
|
Datos mostrados
|
Datos introducidos
|
---|---|---|
Elegir asignatura
|
Lista de nombres de asignatura
|
Asignatura seleccionada
|
Responsable y buzones
|
Asignatura seleccionada
Lista de profesores que pueden ser responsables
|
Profesor seleccionado
Sólo tablón/tablón y foro
|
Grupos
|
Asignatura, responsable y opciones de buzones
Lista de grupos. Para cada uno:
Lista de profesores que pueden llevar un grupo
|
Profesor seleccionado como responsable de un grupo
|
Confirmación
|
Asignatura, responsable, opciones de buzones
Lista de grupos. Para cada uno:
|
-
|



-
Claves: Proyecto: nombre, Persona: nombre, Iteracion: proyecto + nombre, HistoriaUsuario: proyecto + título, EntradaBurndown: iteración + fecha.
-
La fecha de inicio de una iteración debe ser anterior a la fecha de retrospectiva.
-
La fecha de todas las entradas de burndown de una iteración debe estar entre las fechas de inicio y de retrospectiva de ésta.
-
Las historias de usuario asociadas a una iteración deben pertenecer al proyecto al que pertenece la iteración.
-
La velocidadReal de una iteración es la suma de las valoraciones de las historias de usuario finalizadas asociadas a esa iteración.
-
Se ha considerado que hay varias asociaciones que son composiciones. Así, un proyecto estará compuesto por su conjunto de historias de usuario y su conjunto de iteraciones. Éstas, a su vez, estarán compuestas por un conjunto de entradas de burndown. Por lo tanto, entre otras cosas, podemos afirmar que, si borramos un proyecto, también borraremos las historias de usuario, las iteraciones y las entradas de burndown.
-
Se ha usado {ordered} para indicar que la lista de historias de usuario de un proyecto está ordenada y que el orden importa. También para la lista de historias de usuario de una iteración.

-
Claves: Tienda: nombre, Marca: nombre, Modelo: marca + nombre, Variante: modelo + nombre + corta.
-
No puede haber más de un precio del mismo modelo en la misma tienda con periodos de validez que coincidan.
-
Se ha modelizado el precio con descuento como una subclase. Sin embargo, a causa de su simplicidad, se habría podido indicar, sencillamente, el porcentaje de descuento como un atributo opcional de precio.
-
Los tipos de datos Email, Dirección, Porcentaje e Importe no se han modelizado con más detalle o bien porque eran bastante evidentes (Email, Porcentaje e Importe) o bien porque en el enunciado no tenemos más información (Dirección).
-
De entrada, en el modelo mostrado no se ha indicado ningún tipo de restricciones de integridad adicionales, ni siquiera las de clave. Sería necesaria una nota adicional que informara sobre estas restricciones.
-
La clase ValoracionFormador tiene un atributo de tipo Formador. Éste, en todo caso, debería ser una asociación.
-
La clase Imparticion tiene un atributo codigoCurso de tipo String que parece un tipo de clave foránea hacia Curso. Habría que indicar que una Imparticion tiene asociado un Curso mediante una simple asociación y no un atributo que contenga el código del curso asociado.
-
El modelo presentado tiene una clase EmpresaFormacion que no es necesaria. La presencia de esta clase parece indicar que las empresas de formación y su nombre son relevantes para nuestro sistema informático. Sin embargo, dado que es para una única empresa de formación, el hecho de conocer el nombre y de tener la posibilidad de tener más de una empresa de formación no es relevante.
-
La clase asociativa Observaciones no tiene mucho sentido. Si, al responder, un asistente añade observaciones a la respuesta, éstas serían un atributo de la clase Respuesta. No tiene sentido modelizarlas como un atributo de una clase asociativa, sobre todo porque la multiplicidad junto a Pregunta es 1 y, por lo tanto, cada instancia de Respuesta tendrá una única instancia de Observaciones asociada.
-
La clase Pregunta se ha indicado como abstracta, cuando en realidad sólo tiene una subclase. Excepto que todas las preguntas sean, efectivamente, de formador, la clase Pregunta debe ser concreta. Lo miso sucede con la clase Respuesta.
-
La clase Persona no se ha indicado como abstracta, a pesar de que parece que todas deban ser clientes, asistentes o formadores. Si, efectivamente, no puede haber personas relevantes en el problema que no pertenezcan a alguna de las 3 subclases, se deberá indicar que la clase Persona es abstracta (poniendo el nombre en cursiva).
-
La clase Cliente no parece una subclase de Persona correctamente modelizada. Si un cliente tiene un NIF y una fecha de constitución, es porque debe ser una empresa o algún otro tipo de organización. Por lo tanto, no tiene sentido que digamos que es una subclase de Persona.
-
La clase Formador tiene una asociación con la clase Sesion que indica las sesiones en las que participa cada formador. También tiene una asociación con la clase Imparticion que debe indicar los formadores de una impartición de un curso. Estas dos asociaciones deberían estar relacionadas: o bien los profesores de una impartición derivarán de los profesores de cada una de las sesiones, o bien habrá una restricción de integridad que nos indique que todos los profesores asociados a una sesión también deben pertenecer a la impartición correspondiente.
-
De manera parecida al caso anterior, una ValoracionFormador tiene asociada una PreguntaFormador y, como toda Valoracion, también una Pregunta. La asociación con PreguntaFormador sobra (y se debe indicar mediante una restricción de integridad textual que la pregunta asociada a una ValoracioFormador será una PreguntaFormador).
-
Según el modelo del que disponemos, sí.
-
No. Para el cuerpo no se ha indicado ninguna multiplicidad y, por lo tanto, asumimos que la multiplicidad es 1; es decir, que es un atributo obligatorio y univaluado.
-
Que todas las etiquetas y mensajes del buzón también se borrarán, dado que un buzón está compuesto por etiquetas y por mensajes. Al borrar aquellos mensajes que sean origen de una conversación, también se borrarán las conversaciones.
-
Nada, dado que una etiqueta no es un objeto compuesto. Dependiendo del caso de uso y de cómo se defina, probablemente sólo se desasociará la etiqueta de las conversaciones en las que estuviera asociada y del buzón en el que se creó, y se borrará.
-
Podríamos haber usado la especialización para distinguir entre los mensajes que son respuesta (y, por lo tanto, tienen 1 en la multiplicidad de respondeA) y los que no son respuesta (y, por lo tanto, son origen de 1 y sólo una conversación):
-
Porque según la definición de esta asociación derivada, cualquier conversación está formada por su mensaje origen y por las respuestas a cualquier mensaje de la conversación. Por lo tanto, como mínimo existirá el mensaje que es el origen de la conversación.
-
De entrada, el atributo debería ser multivaluado: etiqueta:String[*]. Además, no tendríamos las etiquetas como entidades; así, por ejemplo, estaríamos dando a entender que no tiene sentido gestionar las etiquetas: crearlas, enumerarlas, etc. Dos conversaciones podrían tener una misma etiqueta sólo por coincidencia.
-
En las pantallas figura la dirección de correo electrónico del usuario. Habría que añadirla como atributo de la clase Usuario.
-
En las pantallas, cada cuenta, además del número, tiene un nombre. Por lo tanto, habría que añadir el atributo nombre:String a la clase Cuenta.
-
En las pantallas, las tarjetas tienen, además del saldo, un límite. Habría que añadirlo como atributo de la clase TarjetaCredito.
-
Los préstamos de las pantallas pueden ser hipotecas, pero también otros tipos. Seguramente, la clase PrestamoHipotecario del modelo del dominio se debería denominar Prestamo, ya que no sólo representa préstamos hipotecarios. Si más adelante se viera que hay motivos para una mayor especialización, se podrían tener subclases de préstamo.
-
Los préstamos tienen, además del saldo, una cuota, que falta como atributo de la clase Prestamo mencionado antes.
-
Los movimientos de las pantallas tienen dos fechas: una de operación y otra de valor. Por lo tanto, en lugar del atributo fecha, la clase Movimiento debería tener los atributos fechaOperacion y fechaValor. Aunque las pantallas enumeran un saldo después de cada movimiento y éste se podría representar en el modelo del dominio, este saldo se puede derivar y, por lo tanto, no se puede considerar incorrecto el hecho de que no aparezca explícitamente como atributo de la clase Movimiento.
-
Hay mucha información en el modelo del dominio que no aparece en las pantallas. Seguramente no es incorrecta, pero se debería verificar con el resto de las pantallas. Es el caso, por ejemplo, de la mayoría de los atributos de la clase Usuario, de varios atributos de Cuenta, de la cuenta de cargo de los créditos, etc.
Glosario
- bifurcación f
- Elemento gráfico del diagrama de actividades de UML representado como una línea horizontal gruesa con un flujo de entrada y múltiples flujos de salida. Cuando se llega a una, todos los flujos de salida se producen de manera paralela.
- cardinalidad (de un atributo) f
- Número de valores que una determinada instancia tiene en un atributo.
- cardinalidad (de una asociación) f
- Número de instancias que una determinada instancia tiene asociadas por medio de una asociación concreta.
- carril m
- Elemento gráfico del diagrama de actividades de UML que permite organizar las actividades según qué actor del proceso las lleva a cabo.
- caso de uso concreto m
- Caso de uso que describe la interacción entre actores y sistema teniendo en cuenta la tecnología y la implementación. Pueden contener, por ejemplo, detalles sobre el modo como el actor usa la interfaz ofrecida por el sistema.
- caso de uso esencial m
- Caso de uso que describe la interacción entre actores y sistema de manera independiente de la tecnología y de la implementación.
- clave (de una clase de dominio) f
- Atributo o conjunto de atributos que identifica las instancias de la clase de manera única, de tal manera que no puede haber más de una instancia con los mismos valores en ése u otros atributos.
- composición f
- Asociación con un fuerte sentido todo-parte, de manera que si destruimos una instancia compuesta, todos sus componentes también se destruyen, no puede haber instancias de la clase componente que no formen parte de una única instancia compuesta y, finalmente, una instancia componente no puede cambiar de un compuesto a otro.
- contrato (de una operación) m
- Documentación detallada de una operación que incluye su firma y las precondiciones y poscondiciones.
- decisión f
- Elemento gráfico del diagrama de actividades UML representado como un rombo y que representa una toma de decisión.
- diagrama de actividades m
- Diagrama estándar de UML utilizado para representar procesos.
- diagrama de estados m
- Diagrama estándar de UML utilizado para modelizar estados y transiciones entre éstos.
- diagrama de estructura compuesta m
- Diagrama estándar de UML utilizado para modelizar la estructura interna en tiempo de ejecución de una clase o componente.
- diagrama de objetos m
- Diagrama estándar de UML utilizado para representar objetos.
- diagrama de casos de uso m
- Diagrama estándar de UML utilizado para modelizar los casos de uso del sistema, los actores y las relaciones entre éstos.
- diagrama de clases m
- Diagrama estándar de UML utilizado para modelizar las clases de objetos y sus relaciones.
- diagrama de colaboración m
- Nombre del diagrama de comunicación en la versión 1 de UML.
- diagrama de componentes m
- Diagrama estándar de UML utilizado para modelizar los componentes que forman parte de un sistema.
- diagrama de comunicación m
- Diagrama estándar de UML utilizado para modelizar la interacción entre varios objetos haciendo énfasis en el aspecto estructural.
- diagrama de despliegue m
- Diagrama estándar de UML utilizado para modelizar la distribución física de los diferentes artefactos de software en tiempo de ejecución.
- diagrama de paquetes m
- Diagrama estándar de UML utilizado para representar los paquetes y las dependencias entre éstos.
- diagrama de secuencia m
- Diagrama estándar de UML utilizado para modelizar la interacción entre varios objetos haciendo énfasis en la secuencia temporal.
- diagrama de tiempo m
- Diagrama estándar de UML utilizado para modelizar el comportamiento de los objetos a lo largo del tiempo, poniendo énfasis en las restricciones temporales.
- diagrama de visión general de interacción m
- Diagrama estándar de UML que combina los diagramas de actividades y los de secuencias.
- e26eración f
- Tipo de datos en el que el conjunto de los valores es una lista finita de valores que se e26era en la definición del tipo de datos.
- firma (de una operación) f
- Nombre e información sobre los datos que recibe (parámetros de entrada) y la información que devuelve.
- fusión f
- Elemento gráfico del diagrama de actividades de UML representado como un rombo con varios flujos de entrada y sólo uno de salida. El flujo de salida se produce cuando se llega por alguno de los flujos de entrada.
- herencia dinámica f
- Herencia en la que una instancia de una clase, a lo largo de su vida, puede cambiar de una clase de herencia a otra.
- herencia overlapping f
- Herencia en la que una misma instancia de la superclase puede pertenecer a más de una subclase a la vez.
- mapa navegacional m
- Modelo que documenta los flujos entre pantallas de la interfaz gráfica de usuario. Se representa mediante un diagrama de estados UML en el que cada pantalla es un estado y cada transición representa la transición entre pantallas producida por un acontecimiento, típicamente un gesto del usuario.
- multiplicidad f
- Restricción que indica qué cardinalidades son válidas para un atributo o asociación.
- navegabilidad f
- Propiedad de una asociación binaria que provoca que sólo esté definida en un sentido y que, por lo tanto, sólo defina una propiedad en una de las dos clases que participen en ella. La otra clase continuará ignorando la existencia de la asociación.
- object constraint language m
- Lenguaje formal estándar de restricciones: lenguaje estándar de UML para la expresión
de restricciones que se puede usar, entre otras cosas, para escribir precondiciones
y poscondiciones de los contratos de las operaciones.
Sigla OCL - Object Management Group m
- Consorcio americano sin ánimo de lucro, creado en 1989, que tiene por objetivo la
estandarización y promoción de la modelización orientada a objetos.
Sigla OMG - poscondición (de una operación) f
- Obligación a la que se compromete el sistema cuando se invoca una operación a modo de condición que se compromete a ser cierta una vez ejecutada la operación.
- precondición (de una operación) f
- Condición que se debe satisfacer necesariamente en el momento de invocar la operación. Si la condición no es cierta, el sistema rechaza la petición y la operación no se ejecuta.
- propiedad (de una clase) f
- Nombre genérico para referirse a atributos y a extremos de asociación de la clase.
- punto de extensión m
- Punto concreto en la secuencia de pasos de un escenario (principal o extensión) de un caso de uso al cual se da un nombre para que los casos de uso que lo extienden puedan definir aquel punto como el punto en el que entra en juego la extensión. En desuso.
- tipos de datos m
- Conjunto de valores para los que la identidad única no tiene sentido, sino que se comparan por valor.
- unión f
- Elemento gráfico del diagrama de actividades de UML representado como una línea horizontal gruesa con múltiples flujos de entrada y un flujo de salida. El flujo de salida sólo se produce cuando han llegado todos los flujos de entrada.