Temario Modelado Estatico: Modelo de Dominio Fundamentos de Ingenierı́a de SW I Modelo de Dominio I ¿Dominio? I ¿Conceptos? I ¿Candidatos a Objetos? Técnicas de Identificación I: 3-VM I Diagrama de Flujo Diagrama Entidad Relación Diagrama de Estado Jocelyn Simmonds ILI-236 (JS) Modelo de Dominio Representación Gráfica ILI-236 (JS) Modelo de Dominio 2 / 40 ¿Entonces ya llegamos a las Clases y los Objetos? Ya conocemos una forma básica de representar y especificar requerimientos Sin embargo, aún no conocemos “de qué se habla” en esas interacciones representadas No sabemos el detalle de los objetos, lugares, transacciones, etc., que intervienen en la interacción usuario-sistema I I El Modelo de Dominio En torno a las Interacciones usuario-sistema En forma de Casos de Uso I Técnicas de Identificación II: LIA 1 / 40 El Modelo de Dominio I I El Modelo de Dominio nos permite identificar estos elementos y representarlos gráficamente Identificando Conceptos o Elementos del Dominio Identificando sus Relaciones Identificando sus Atributos ILI-236 (JS) Modelo de Dominio 3 / 40 I No, estamos recién descubriendo lo conceptos I Algunos de ellos eventualmente se convertirán en Clases de nuestro sistema, otros pasarán al triste olvido I Pero esa es una Decisión de Diseño, nuestra tarea ahora es entender, hacer al Análisis I Debemos identificar conceptos no guiándonos en la implementación, sino en el contexto del problema a resolver (Dominio) I Al igual que los casos de uso, el Dominio representado debe ser validado por el Cliente I Una pista: si un Cliente no puede entender algunos de los Elementos del Dominio que hemos identificado, probablemente estos No Sean Elementos del Dominio ILI-236 (JS) Modelo de Dominio 4 / 40 ¿Dominio? I I ¿Conceptos? La perspectiva estática nos permite complementar la visión dinámica La visión estática la plasmaremos mediante un Modelo de Dominio Dominio: es nuestro campo de estudio, al momento de hacer análisis. Un conocimiento experto valido, para un área o actividad preseleccionada ILI-236 (JS) Modelo de Dominio I Sustantivos que describen objetos, roles, eventos, vistas, etc., de nuestro campo de estudio I Tienen Atributos I Pueden relacionarse con otros Conceptos 5 / 40 ¿Candidatos a Objetos? I ¿Qué son los conceptos de nuestro modelo? ILI-236 (JS) I Hum . . . los Conceptos se parecen Sospechosamente a los Objetos Los objetos forman parte de nuestra solución propuesta: Diseño Muchos de nuestros Conceptos se transformarán en Objetos de Diseño Nuestro objetivo: encontrar los Conceptos que nos permitan describir nuestro campo de estudio Modelo de Dominio Cuando hablamos de objetos dijimos que era un enfoque natural para abordar el mundo Desde nuestra más tierna infancia . . . ¿Quién nos enseña a distinguir? ¿Es esa distinción subjetiva u objetiva? Peeero . . . estamos recién entendiendo el problema ILI-236 (JS) 6 / 40 Técnicas de Identificación Tienen atributos Se relacionan entre si I Modelo de Dominio 7 / 40 I Al igual que con los objetos, los conceptos debemos distinguirlos de entre nuestro campo de estudio (Dominio) Y debemos hacerlo Objetivamente I Nos ayudaremos de dos tipos de técnicas ILI-236 (JS) Modelo de Dominio 8 / 40 Técnica de Identificación I: 3-VM I Técnica de Identificación I: 3-VM Retomemos el Ejemplo de RNP, con el siguiente diagrama de flujo: Esta técnica se basa en el uso de otras descripciones no OO que tengamos a mano: Diagramas de Flujo Diagramas Entidad-Relación Diagramas de Estado/Transición I A esta técnica de tres vistas se le conoce como 3-VM (3-View Modeling) ILI-236 (JS) Modelo de Dominio Cajas: entidades externas (similar al concepto de actores) I Cı́rculos: procesos del sistema que estamos analizando I Flechas: flujos de información 9 / 40 Técnica de Identificación I: 3-VM I I ILI-236 (JS) Modelo de Dominio 10 / 40 Técnica de Identificación I: 3-VM ¿Qué tipo de diagrama de flujo es? ¿De contexto (nivel 0)? ¿De un nivel mayor de detalle? I ¿En este diagrama, de dónde sacamos conceptos? Algunos Conceptos: Entidades en el borde del diagrama Las entidades en los bordes exteriores del diagrama son candidatos a ser objetos = conceptos Las entradas y salidas plantean la necesidad de conceptos que reciban las entradas, que las procesen y que las entreguen como salidas La descomposición en unidades funcionales más pequeña nos entrega candidatos a Métodos I I I Persona Natural I Persona Jurı́dica I Representante Electrónico ¿Los Conceptos tienen métodos? . . . No, siendo puristas, pero reconocer métodos nos puede ayudar a encontrar conceptos que carecen de atributos plain old objects (POO) vs service/control objects ILI-236 (JS) Modelo de Dominio 11 / 40 ILI-236 (JS) Modelo de Dominio 12 / 40 Técnica de Identificación I: 3-VM Técnica de Identificación I: 3-VM Un diagrama más detallado: I Algunos conceptos: Entidades que reciben entradas Modificación Validador de Acceso (?) I Algunos conceptos: Entidades que generan (o constituyen) salidas Confirmador de Cambios (?) Certificado Cajas abiertas: persistencia Nuevos conceptos? ILI-236 (JS) Modelo de Dominio 13 / 40 Técnica de Identificación I: 3-VM ILI-236 (JS) Modelo de Dominio 14 / 40 Técnica de Identificación I: 3-VM Ahora, usemos un diagrama Entidad-Relación (parcial) Algunos conceptos: Entidades Persistentes ILI-236 (JS) Modelo de Dominio 15 / 40 I Persona I Socio I Representante Legal ILI-236 (JS) Modelo de Dominio 16 / 40 Técnica de Identificación I: 3-VM Técnica de Identificación I: 3-VM Veamos por último un diagrama de transición de estados: I Los conceptos que obtenemos de este diagrama son obvios Pero sólo nos ayuda a identificar conceptos persistentes (cuyos atributos se guardan en base de datos) ¿Qué pasa con los que sólo ayudan a que ocurran cosas (o sea, sólo tienen métodos)? I ¿Existen conceptos que no son valiosos desde el punto de vista del dominio? Los conceptos auxiliares que surgen al normalizar a 3era forma normal pueden no tener significado como conceptos de dominio Un experto de negocio dirı́a “y qué es eso!” ILI-236 (JS) Modelo de Dominio El anterior diagrama es valioso por aportarnos información acerca de conceptos candidatos a objetos que deben ser capaces de: Iniciador de Trámite (?) Ingresador de Modificaciones (?) Confirmador de Cambios (?) Generador de Certificado (?) Modelo de Dominio Flechas: acciones que generan el cambio de estado ILI-236 (JS) Modelo de Dominio 18 / 40 Conciliando Conceptos I Existen conceptos identificados que solo se originan en torno a una acción (los ?) I Es posible asignar estas acciones a otros conceptos ya identificados? Iniciador de Trámite → Persona (Jurı́dica, Natural, Rep. Electrónico) Ingresador de Modificaciones → Elementos Modificados (Socios, Representantes Legales, Persona, Capital) Confirmador de Cambios → Modificación Generador de Certificado → Certificado Algunos conceptos: gatilladores de eventos ILI-236 (JS) I Técnica de Identificación I: 3-VM Gatillar los eventos que permiten la transición entre los estados Escuchar los eventos, para iniciar el procesamiento de la respuesta esperada I Cajas redondeadas: estados del sistema 17 / 40 Técnica de Identificación I: 3-VM I I 19 / 40 ILI-236 (JS) Modelo de Dominio 20 / 40 Técnica de Identificación I: 3-VM Técnica de Identificación I: 3-VM Algunas lecciones: Algunas preguntas: I ¿De donde salen estos diagramas? I Podemos obtener conceptos persistentes desde el diagrama Entidad Relación I Pero debemos discriminar los que han surgido sólo para efectos de normalización I Podemos obtener conceptos desde las entidades externas del Diagrama de Flujo I Podemos obtener conceptos responsables de eventos del sistema (con métodos) desde Diagramas de Estado/Transición ILI-236 (JS) Modelo de Dominio Diagrama de Flujo, Diagrama de Estado: Podemos encontrarlos si existe una definición del proceso que se va a automatizar Diagrama Entidad Relación: Podemos encontrarlo si nuestro proyecto es una migración tecnológica, es decir, ya existe un modelo de datos I Es necesario hacerlos al menos una vez, como ejercicio Como somos secos, aprendemos a pensar “como si estuviéramos haciendo los diagramas” 21 / 40 Técnica de Identificación II: LIA ¿Nos conviene hacerlos, en la práctica? ILI-236 (JS) Modelo de Dominio 22 / 40 Técnica de Identificación II: LIA 1.- Frecuencia de Frases: I I I LIA: Linguistic Basic Information Analysis Nos provee de un mecanismo Objetivo para identificar conceptos a partir de un texto I Hemos visto que identificar “sustantivos” puede ayudarnos, pero a veces identificar sinónimos de un sustantivo puede llevarnos a elecciones subjetivas Existen dos técnicas útiles: Entonces, ¿para qué sirve? El sólo hecho de pensar si un concepto sirve o no sirve es una actividad de análisis Permite que no se nos pasen conceptos que puedan estar ocultos a simple vista Podemos estructurar nuestros conceptos 1. Frecuencia de Frases 2. Matriz de Análisis ILI-236 (JS) Modelo de Dominio A partir de la identificación de frases repetidas dentro de los textos analizados, se busca reconocer Conceptos del Dominio La mayor parte de los conceptos identificados de esta forma serán descartados del modelo definitivo 23 / 40 ILI-236 (JS) Modelo de Dominio 24 / 40 Técnica de Identificación II: LIA Matriz de Análisis 2.- Matriz de Análisis I Podemos disponer los conceptos preliminarmente identificados en forma de matriz, para identificar partes del texto que los relacionan I Este análisis no sólo nos permite identificar conceptos, sino también relaciones entre ellos I El análisis de este tipo requiere un esfuerzo considerable I Veamos un ejemplo . . . Conceptos preliminares: article, author, board . . . ILI-236 (JS) Modelo de Dominio 25 / 40 Buscando elementos del Dominio en el ejemplo I Modelo de Dominio 26 / 40 Una primera aproximación gráfica Algunos de los Conceptos encontrados segı́n 3-VM: Persona (o Sociedad) Natural o Jurı́dica Representante Electrónico Socio Representante Legal Capital (?) Modificación (Declaración de Modificación, acto de hacer modificación) Certificado I ILI-236 (JS) I Pero la representación gráfica es fundamental Podemos entenderla como un mapa, que nos permite navegar entre los conceptos entendiendo sus relaciones I ILI-236 (JS) Modelo de Dominio I 27 / 40 Realizaremos una representación gráfica usando UML UML provee distintos diagramas para modelar Análisis y Diseño Pero ninguno en particular llamado “Modelo de Dominio” Usaremos el Diagrama de Clases de UML para dibujar nuestro primer diagrama de Dominio Se puede decir que el Modelo de Dominio es un Diagrama de Clases de Análisis, donde no existen decisiones de Diseño Algunos conceptos identificables usando LIA: RNP Unidad de RNP Registro Comercio Escritura (o contrato social) % Participación de Capital % Participación de Utilidades Giro Bitácora La lista anterior tiene varios de los conceptos del dominio Podemos ocupar cualquier herramienta que soporte UML para hacer nuestro diagrama ILI-236 (JS) Modelo de Dominio 28 / 40 Ejercicio Una primera aproximación gráfica Identificar relaciones entre los conceptos encontrados anteriormente: I 3-VM: Persona (o Sociedad) Natural o Jurı́dica Representante Electrónico Socio Representante Legal Capital Modificación Certificado I LIA: RNP Unidad de RNP Registro Comercio Escritura (o contrato social) % Participación de Capital % Participación de Utilidades Giro Bitácora ILI-236 (JS) Ejemplo Sociedad realiza Modificación Modelo de Dominio 29 / 40 Revisando nuestro mono: Conceptos y Atributos I 30 / 40 Revisemos el concepto Sociedad Para profundizar nuestro análisis, debemos agregar atributos a nuestros conceptos Algunos de los conceptos que identificamos son en realidad atributos de otros conceptos ¿Cómo saberlo? Si el concepto es tan sencillo como para ser representado por un tipo básico (una fecha, número, descripción, etc.), entonces probablemente es un atributo del concepto relacionado I Modelo de Dominio Revisando nuestro mono: Conceptos de Asociación Al parecer “Tiene” muchos otros conceptos . . . y algunos de ellos no son muy complejos que digamos I ILI-236 (JS) I Cuando modelamos un dominio, descubrimos que ciertos atributos sólo se dan entre la relación entre dos conceptos I Veamos la siguiente alternativa para modelar Sociedad y Socios: Ejemplos en nuestro mono: Capital Enterado y por Enterar en la Sociedad % de Participación de Capital y Utilidad del Socio en la Sociedad ILI-236 (JS) Modelo de Dominio 31 / 40 ILI-236 (JS) Modelo de Dominio 32 / 40 Revisando nuestro mono: Conceptos de Asociación I 2da Iteración: profundizando relaciones Ahora que identificamos los conceptos, estudiemos mejor sus relaciones I Algunas de ellas parecen ambiguas I Necesitamos identificar la cardinalidad de las relaciones I Es decir, cuántos de uno se relacionan con cuántos de otro I Por ejemplo: % de Participación de Capital y Utilidad sólo tienen sentido como atributos de la relación entre persona y Sociedad No todas las personas tiene % de participación El % de participación de cada socio no es atributo de la sociedad I Para representar estas situaciones, podemos ocupar Conceptos originados en las relaciones I Ejemplos de Cardinalidades (min..max): 0..1 1 0..* 1..* * 1..8 (número máximo especı́fico) ILI-236 (JS) Modelo de Dominio 33 / 40 2da Iteración: profundizando relaciones ILI-236 (JS) Modelo de Dominio 34 / 40 2da Iteración: profundizando relaciones I La notación de UML permite expresar estas asociaciones: I Si la Lista de Contactos es eliminada, se perderán todos los contactos y los grupos Si se elimina un Grupo de Contactos, los Contactos siguen existiendo en la Lista de Contactos También es conveniente identificar los roles cada concepto en la relación Podemos enriquecer nuestro modelo agregando otros tipos de relaciones: I I Identificando relaciones del tipo “es-un”: Super Clases y Clases Distinguiendo distintos tipos de asociación del tipo “tiene” entre los conceptos Asociaciones Fuertes, o Composición, en las cuales los conceptos “contenidos” existen sólo si existe el concepto “contenedor” (por ejemplo, mano-dedos) Asociaciones Débiles, o Agregación, en las cuales los conceptos “contenidos” pueden existir si no existe el contenedor (por ejemplo, grupo de contactos-contacto) I I ILI-236 (JS) Modelo de Dominio 35 / 40 ILI-236 (JS) Modelo de Dominio 36 / 40 Corrigiendo nuestro mono Versión 2.0 Que cambios harı́an? ILI-236 (JS) Modelo de Dominio 37 / 40 Algunas Reflexiones I ¿Cómo asegurarme que he modelado todo lo que corresponde? “Todo lo que Corresponde” = Todos los Requerimientos Identificados I Podemos generar otra Matriz de Trazabilidad Filas: Clases Columnas: Casos de Uso Marcamos en la matriz qué clases son responsables por qué casos de uso Todos los casos de uso deben estar asociado a lo menos con una clase (estamos haciendo todo lo solicitado) ILI-236 (JS) Modelo de Dominio 39 / 40 ILI-236 (JS) Modelo de Dominio 38 / 40