|
Cómo encontrar un actor?
-
Identifique los usuarios del sistema
-
Porqué se diseña el sistema?
-
Cuáles son los actores que el sistema va a beneficiar?
-
Qué actores van a interactuar directamente con el sistema? (actores
primarios)
-
Qué actores van a supervisar, mantener, recibir información
del sistema? (actores secundarios)
-
Identifique los roles que juegan esos usuarios desde el punto de vista
del sistema
-
Identifique otros sistemas con los cuales exista comunicación
|
|
Cómo encontrar un caso
de uso?
Identifique las operaciones
importantes del sistema a construir
Cuáles son las principales tareas de un actor?
Qué información tiene el actor que consultar, actualizar,
modificar? Cómo?
Qué cambios del exterior debe informar el actor al sistema?
Qué información debe informársele al actor, con respecto
a los cambios del sistema? |
|
Cómo encontrar relaciones
entre actores y casos de uso?
Identifique los casos de
uso en los cuales se vé implicado un actor
Busque relaciones extends
entre casos de uso
Qué casos de uso son similares, diferenciándose en la
forma en la cual hacen algunas operaciones?
Qué caso de uso redefine la forma en la cual se realiza una
transacción dentro de otro caso de uso?
Busque relaciones uses entre
casos de uso
Que casos de uso son usados como transacciones de otros?
|
|
-
Elementos físicos y lógicos dentro del sistema a modelar
-
Top-down: Comenzar por la clase del objeto más general (el mundo).
Encontrar sus componentes hasta llegar a clases de tipos básicos
-
Identificar los sustantivos del enunciado del problema y determinar si
son clases del modelo del mundo
-
Identificar clases desde el punto de vista de la información
-
Identifique los elementos del espacio del problema
-
Identifique otros sistemas relacionados como objetos externos
-
Identifique dispositivos relacionados
-
Identifique los eventos que el sistema debe recordar y manipular
-
Identifique los roles de los elementos del mundo
-
Identifique sitios
-
Identifique unidades organizacionales importantes en el problema
-
Identificar clases desde el punto de vista funcional (casos de uso)
-
Identifique los objetos que participan en un caso de uso particular
-
Continue con los mensajes de cada objeto, dejando para el final los atributos.
-
Identificar clases desde el punto de vista de sus estados
-
En qué estados está en sistema? Cuáles objetos determinan
estos estados?
-
Cómo es el ciclo de vida de estos objetos?
Posibles errores:
-
Una clase HACE en vez de una clase ES
-
Solo se requiere un objeto de la clase
-
Dificultad para encontrar atributos
-
Objetos con iniciativa propia
-
Es un objeto y un usuario a la vez
-
Solo se encuentra un servicio
-
Varias clases tienen los mismos atributos o servicios
-
Solo tienen información o mensajes no relevantes para el problema
-
Vista Funcional: Dividir un sistema de la manera clásica
|
|
-
Cuáles son las características determinantes del objeto en
el dominio del problema?
-
Con qué objetos esta relacionado?
-
Con qué objetos debe estar relacionado para realizar sus mensajes?
-
Identificar el nombre, los roles y cardinalidad de las asociaciones
-
Qué asociaciones hay de tipo partes y un todo (composición)?
-
Qué información se requiere en una clase para realizar su
comportamiento?
Posibles errores
-
Identificar atributos o relaciones no relevantes a los casos de uso identificados
-
Las relaciones no reflejan directamente la realidad
|
|
-
Punto de vista funcional
-
Qué mensajes debe tener un objeto para colaborar en un caso de uso?
-
Punto de vista de comportamiento
-
Qué comportamiento se espera de un objeto dado en el modelo del
mundo?
-
Qué mensajes se requieren para manipular la información que
contienen?
-
Qué mensajes requieren para manipular las relaciones que tiene?
-
Qué mensajes hacen que el objeto cambie de un estado a otro?
Posibles errores
-
Identificar servicios no relevantes a los casos de uso identificados
-
Identificar servicios que no puede realizar la clase por falta de información
|
|
-
Qué clases son abstracciones naturales de clases ya existentes?
-
Qué clases comparten atributos o servicios?
-
Qué clases extienden atributos o servicios de otras?
Posibles Errores
-
No tener una relación Es Un entre las clases
|
|
Identificar restricciones del modelo
-
Identificar valores posibles y no posibles de los atributos. Describirlos
como restricciones de las clases
-
Identificar valores permitidos para las asociaciones. Describirlos como
restricciones de la asociación
-
Identificar restricciones que relaciones dos o más atributos o relaciones.
Describirlas dentro de la clase correspondiente
Posibles errores
-
Hay estados en el modelo imposibles en el mundo real
-
Hay estados en el mundo real no considerados en el modelo
|
|
-
Qué subdivisiones lógicas pueden tener las clases identificadas?
-
Que subconjunto de clases y casos de uso pueden ser reutilizados en otros
dominios?
-
Combinar clases fuertemente relacionadas en un paquete
-
Combinar clases que tienen que ver con los mismos casos de uso en un paquete
|
|
Consideraciones de reutilización
-
Reutilizar modelos de dominio existentes
-
Identificar posibles variantes en el futuro tenerlas en cuenta para diseño
(patrones)
|
|
Validar las restricciones descritas para las clases
-
Para cada clase evaluar la completitud de las restricciones
-
Desarrollar objetos ejemplo que cumplan con las restricciones y que no
sean válidos en el mundo real
|
|
Validar atributos y mensajes
-
La clase tiene toda la información necesaria para desarrollar la
tarea?
-
La clase tiene las relaciones necesarias para propagar el mensaje y cumplir
con la tarea?
-
Los mensajes si son utilizados dentro del contexto del problema?
-
Los mensajes obligan la conservación de las restricciones del modelo?
|
|
Desarrollar diagramas de interacción (diagramas de secuencia
o de colaboración) para
la variante por defecto de cada caso de uso, usando los objetos del modelo
del mundo encontrados y sus mensajes.
-
Escoger la opción por defecto de cada caso de uso
-
Identificar los objetos involucrados
-
Desarrollar el diagrama de secuencia o el de colaboración para la
interacción
|
|
Validar los diagramas de Interacción
-
Todo mensaje de un objeto a otro implica una asociación y un rol
en el diagrama de clases
-
Todo mensaje está definido en su correspondiente clase
-
Opcional: Completar el diagrama de clases con asociaciones de dependencia
a las clases de los argumentos de los mensajes
|
|
Validar con un experto del dominio
-
Validar estructura del mundo
-
Validar funcionalidad esperada del sistema
-
Validar los diagramas de interacción descritos como detalle de los
casos de uso
|
|
Validar con un usuario representativo de cada actor
-
Validar la funcionalidad esperada para el actor en particular: completitud,
relevancia
-
Validar los diagramas de interacción descritos como detalle de los
casos de uso del actor
-
Validar la interfaz diseñada y el diálogo descrito
|
|
Iterar si es necesaria más información |