Modelado Estatico: Modelo de Dominio Temario El Modelo de

Anuncio
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
Descargar