IDENTIFICACIÓN DE ATRIBUTOS
Son las propiedades relevantes de los objetos individuales.
Antes de identificar los atributos es necesario identificar las asociaciones
• Relacionar las clases conceptuales con asociaciones no con atributos
La mayoría de los atributos simples son los que conocen como tipos de datos primitivos
- El tipo de un atributo no debería ser un concepto de dominio complejo
- Los atributos deben ser, generalmente, tipos de datos
- Un tipo de dato para UML implica un conjunto de valores para los cuales no es significativa una identidad única (en el contexto del modelo o sistema en el que se está trabajando) (Rumbaugh et al., 1999)
Se deberían incluir en un modelo de dominio aquellos atributos para los que los requisitos sugieren o implican una necesidad de registrar la información (Larman, 2002)
En caso de duda es mejor definir algo como una clase conceptual en lugar de como un atributo
Se debe representar lo que podría considerarse, inicialmente, como un tipo de dato como una clase no primitiva si (Larman, 2002)
- Está compuesta de secciones separadas
- Habitualmente hay operaciones asociadas con él, como análisis sintáctico o validación
- Tiene otros atributos
- Es una cantidad con una unidad
- Es una abstracción de uno o más tipos con alguna de estas cualidades
IDENTIFICACIÓN DE RELACIONES DE GENERALIZACIÓN
La definición de una superclase conceptual es más general y abarca más que la definición de una subclase
Todos los miembros del conjunto de una subclase conceptual son miembros del conjunto de su superclase
Se tiene que tener la conformidad con la definición de la superclase. Regla del 100% (Larman, 2002)
- El 100% de la definición de la superclase conceptual se debe poder aplicar a la subclase. La subclase debe ajustarse al 100% de los atributos y asociaciones de la superclase
Una subclase debe ser miembro del conjunto de la superclase. Regla Es-un (Larman, 2002)
- Todos los miembros del conjunto de una subclase deben ser miembros del conjunto de su superclase
Una subclase conceptual correcta debe cumplir (Larman, 2002)
- La regla del 100% (conformidad en la definición)
- La regla Es-un (conformidad con la pertenencia al conjunto)
Razones para especializar una clase conceptual en subclases
- Una partición de clases conceptuales es una división de las clases conceptuales en subclases disjuntas (Martin y Odell, 1995)
- Se debería crear una subclase conceptual de una superclase cuando (Larman, 2002)
- La subclase tiene atributos adicionales de interés
- La subclase tiene asociaciones adicionales de interés
- El concepto de la subclase funciona, se maneja, reacciona, o se manipula de manera diferente a la superclase o a otras subclases, de alguna manera que es interesante
- El concepto de la subclase representa alguna cosa animada que se comporta de manera diferente a la superclase o a otras subclases, de alguna forma que es interesante
Razones para definir una superclase conceptual
- Se aconseja generalizar una superclase común cuando se identifican elementos comunes entre las subclases potenciales
- Se debería crear una superclase conceptual en una relación de generalización de subclases cuando (Larman, 2002)
- Las subclases potenciales representen variaciones de un concepto similar
- Las subclases se ajustan a las reglas del 100% y Es-un
- Todas las subclases tienen el mismo atributo que se puede factorizar y expresar en la superclase
- Todas las subclases tienen la misma asociación que se puede factorizar y relacionar con la superclase
Clases conceptuales abstractas
- Es útil identificar las clases abstractas en el modelo del dominio porque esto restringe las clases que pueden tener instancias concretas
- Se clarifican las reglas del dominio del problema
- Si cada miembro de una clase A puede ser también miembro de una subclase, entonces A es una clase conceptual abstracta
Pueden existir instancias de A que no sean
instancias de B, C o D. Entonces A no es una
clase conceptual abstracta
A es una clase conceptual abstracta. Una
instancia de A debe conformar con una de
sus subclases, B, C o D
Modelado de los cambios de estado
• No se debe modelar el estado de un concepto X como subclases de X, sino que se debe seguir una de estas dos estrategias (Larman, 2002)
• Definir una jerarquía de estados y asociar los estados con X
• Ignorar la representación de los estados de un concepto en el modelo de dominio; en lugar de esto representar los estados en diagramas de estados
Modelo con histórico de estados (pero en el que se sabe que nunca se pasará dos veces por el mismo estado)
Modelo con histórico de estados (pero en el que no se puede garantizar que nunca se pasará dos veces por el mismo estado)
No se debe utilizar la relación de generalización para modelar situaciones estructurales que son susceptibles de cambiar con el paso del tiempo
- La relación de generalización es estática
- Es muy frecuente que los modelos tengan que reflejar situaciones estructurales que cambian con el paso del tiempo
- Se debe valorar modelar mediante roles
Un turno de trabajo en un restaurante está compuesto por un jefe de sala, cuatro camareros, un jefe de cocina, dos cocineros y dos ayudantes de cocina
Un turno de trabajo en un restaurante está compuesto por un jefe de sala, cuatro camareros, un jefe de cocina, dos cocineros y dos ayudantes de cocina
IDENTIFICACIÓN DE
RELACIONES TODO-PARTE
El patrón todo-parte se da en tres tipos de configuración
- Ensamblaje y sus partes
- Suele corresponder a un producto real y sus partes constituyentes
- Ordenador (placa base, disco...)
- Contenedor y sus contenidos
- Variante del anterior. Más relacionado con agrupaciones “lógicas”
- Oficina (mesas, teléfonos, estanterías...)
- Grupo y sus miembros
- Agrupación de intereses
- Asociación (ACM) y sus miembros (asociados)
Una relación todo-parte puede utilizarse cuando (Larman, 2002)
- El tiempo de vida de la parte está ligado al tiempo de vida del todo
- Existe una dependencia de creación-eliminación de la parte en el todo
- Existe un ensamblaje obvio todo-parte físico o lógico
- Alguna de propiedad del compuesto se propaga a las partes, como la ubicación
- Las operaciones que se aplican sobre el compuesto se propagan a las partes, como la destrucción, movimiento o grabación
Dos tipos de relación
Agregación vs. Composición
Agregación
- Un objeto agregado es un objeto construido a partir de otros objetos
- El agregado es mayor que la suma de sus partes
- Todas las interacciones realizadas con el conjunto de los objetos agregados se realizan a través de la interfaz del objeto agregado
- Los objetos componentes están ocultos o encapsulados dentro del agregado
- Multiplicidad en las dos partes de la relación
- Las partes pueden existir incluso después de que el agregado sea “desmontado” o destruido
- Las partes pueden cambiar de un agregado a otro
Composición
- La composición es una forma fuerte de agregación
- El ciclo de vida de las partes depende del ciclo de vida del agregado
- Las partes no existen fuera de su participación en el agregado
- La pertenencia fuerte implica objetos físicos que se unen para formar el compuesto
- La multiplicidad en el “extremo” del compuesto es 1 o 0..1
- Multiplicidad en el “extremo” de las partes del compuesto
- Si el agregado se “desmonta” o se destruye las partes no tienen existencia propia
- Las partes no se pueden mover de una composición a otra
Cursos adaptables. Se pueden crear combinando lecciones y ejercicios ya existentes creando una tabla de contenidos nueva
- La tabla de contenidos es única para cada curso
- La lección aparece en la tabla de contenidos para cada curso que la usa
- Las lecciones se desarrollan para un curso pero se pueden usar para construir otros cursos
- Los ejercicios se desarrollan inicialmente para un curso pero pueden ser utilizados con otras lecciones para otros cursos
- Cursos fijos. Se crean y se entregan. Para crear un nuevo curso todo el material se crea desde de cero
- La tabla de contenidos es única para cada curso
- La tabla de contenidos hace referencia a cada lección del curso. Cada lección solamente aparece en la tabla de contenidos del curso para el que fue desarrollada
- Las lecciones se utilizan únicamente en el curso para el que fueron desarrolladas
- Los ejercicios se utilizan únicamente en las lecciones para las que fueron desarrollados
Identificar y representar las relaciones todo-parte no es excesivamente importante en el modelo de dominio
Descubrir y mostrar relaciones todo-parte si se obtiene alguno de los siguientes beneficios (Larman, 2002])
- Aclara las restricciones de dominio en cuanto a la existencia que se desea de la parte independiente del todo
- En la composición, la parte no podría existir fuera del tiempo de vida del todo
- Ayuda a la identificación de un creador (el compuesto)
- Las operaciones que se aplican al todo frecuentemente se propagan a las partes