CLASE 6: MODELO CONCEPTUAL/ MODELO DE DOMINIO Universidad Simón Bolívar. Ing. de Software. Prof. Ivette Carolina Martínez Qué es un Modelo de Dominio “Un Modelo de Dominio es una representación visual de clases conceptuales o de objetos reales en un dominio de interés” [MO95]. Un Modelo de Dominio consiste en un conjunto de diagramas de clases, sin definición de operaciones. Qué es un Modelo de Dominio? Entrada: Descripción del problema, Casos de Uso Salida: Un conjunto de diagramas de clases Ejemplo El modelo de dominio es un diccionario visual El modelo de dominio proporciona una perspectiva conceptual Objetos del dominio o clases conceptuales Asociaciones entre clases conceptuales Atributos de las clases conceptuales La información que contienen también puede ser expresada en forma de texto plano. Objetos Un objeto es una cosa con identidad única en un dominio de problema. Carlos Pérez, USB, Venezuela son objetos Todos los objetos tienen una identidad y son distiguibles. Los objetos se distinguen por su existencia inherente y no por las propiedades descriptivas que puedan tener Dos manzanas con el mismo color, forma y textura siguen siendo manzanas individuales. Clases y Objetos Una clase describe un grupo de objetos con las mismas propiedades, comportamientos y relaciones posibles. Un objeto es una instancia de una clase. Persona, Universidad y País son clases. Los objetos de un dominio son el foco del modelado. Por qué clases conceptuales? El poder de la abstracción. El nivel de abstracción es un asunto de “juicio” y está relacionado con la aplicación. La descripción de un cliente de un futuro sistema puede tener una combinación de clases y objetos. Clases y clases conceptuales El modelo de dominio es una visualización de elementos de un dominio de interes en el mundo real. Los modelos de dominio no deben mostrar clases de software Modelo de Dominio vs. Modelo de Datos Modelo de Datos - datos persistentes a ser almacenados en algún lugar El modelo de dominio tambien incluye: Objetos temporales Objetos sin atributos Motivación Ayudan a comprender los conceptos clave de un negocio o un dominio de problema. Disminuyen la brecha de representación entre como ven los clientes el problema y la representación en software de la solución, usando modelado Orientado por Objetos. Motivación Cómo crear un modelo de dominio Pasos: 1. Hallar las clases conceptuales. 2. Dibujar las clases conceptuales como clases de un diagrama de clases UML. 3. Añadir asociaciones y atributos. Hallar clases conceptuales Tres estrategias: Reusar o modificar modelos existentes Existen modelos de dominio y de datos publicados y bien elaborados para dominios comunes: inventario, finanzas, salud, etc. Fowler, Analysis patterns Hay, Data Model Patterns Silverston, Data Model Resource Book Usar una lista de categorías. Identificar sustantivos/frases nominales Listas de Categorías Objetos físicos y tangibles TDPV Especificaciones o descripciones de cosas EspecificaciónDeProducto Lugares Tienda Transacciones Venta, Pago Línea o reglón de elemento de transacciones VentasLineaDeProducto Listas de Categorías Roles de personas Cajero Contenedores de otras cosas Tienda Cosas dentro de un contenedor Producto Otros Sistemas Sistema de Autorización de tarjetas de crédito La lista completa de categorías se encuentra en la tabla 10.1 del Larman. Identificar Sustantivos Identficación de sustantivos Analizar la descripción textual de dominio Identificar sustantivos (nombres) y frases nominales. Estos indican candidatos a clases, objetos y atributos. Ejemplo de Identificar Sustantivos Errores Comunes Ejemplo: PDV Caso de Estudio: PDV Identificar y dibujar clases conceptuales Entrada: Caso de Uso en formato extendido. Estrategia: lista de categorías, identificación de sustanivos. Ejemplo: PDV. Entrada: CU PDV. Modelo de Dominio Inicial. Asociaciones Una Asociación es una relación entre objetos que indica alguna conección con significado e interesante. Los objetos usualmente están relacionados por conecciones físicas o concptuale. El cajero Pedro Pérez trabaja en el TPDV “12” Cuándo mostrar una asociación Cuando el conociminto de la relación necesita ser presentado durante algún tiempo. Ejemplo: PDV: Necesitamos recordar cuáles instancias LíneasDeProductosVenta están asociados con una Venta. Se deben evitar mostrar demasiadas asociaciones. Valores de multiplicidad La multiplicidad se enfoca en la relación en un momento particular. Ejemplo: “Casado con” Sobre asociaciones Pueden existir múltiples asociaciones entre dos clases. Ejm: “el vuelo 1087 va de Caracas a Maracaibo” Una clase conceptual puede estar relacionada consigo misma. Ejemplo: “Un directorio puede contener otros directorios”. Encontrando Asociaciones Usar la lista de asociaciones comunes: A es una parte física de B Caja-TDPV A es una parte lógica de B VentasLineaDeProducto-Venta A está contenido físicamente en B TDPV-Tienda A está contenido lógicamente en B DescripciónDeProducto - Producto A es una descripción de B DescripciónDeProducto - Producto Encontrando Asociaciones A es un elemento de línea en una transacción o reporte B VentasLineaDeProducto-Venta A se conoce/introduce/registra/presenta/captura B Venta-TDPV A es miembro de B Cajero-Tienda A es una sub-unidad organizacional de B Departamento-Tienda La lista completa puede consultarse en la tabla 11.1 del Larman 2ed. TDPV. Modelo de Domnio Parcial Atributos Un atributo es un valor de datos lógico de un objeto. Cuándo mostrar un atributo? Son sugeridos por los requerimientos Implican una información que debe recordarse. Ejm: Venta necesita un atributo horaVenta Tienda necesita nombre y dirección. Atributos En UML se puede indicar el tipo y alguna otra información adicional. No deben colocarse atributos derivados. Ejm: totalVenta. Atributos adecuados Muchos tipos atributos deben pensarse como tipos “primitivos” Atributos Adecuados Relacionar clases conceptuales con asociaciones, no con atributos Clases o Atributos Si no pensamos en una clase conceptual X como un número o un texto en el mundo real, X es probablemente una clase conceptual, no un atributo. TDPV: Modelo de dominio