Modelado Del Dominio - Fing.edu.uy

Transcription

AnálisisModelado del Dominio

Contenido Introducción Modelo de Dominio Conceptos Asociaciones Atributos Generalizaciones Otros elementos RestriccionesProgramación 4 - Curso 2013Análisis - Modelado del Dominio2

Introducción La esencia del análisis orientado a objetos es ladescomposición del problema en conceptos individuales Un Modelo de Dominio contiene principalmente losconceptos y sus relaciones que sean significativos en eldominio del problema: Significativos para el modelador El problema y los requerimientos determinan qué essignificativoProgramación 4 - Curso 2013Análisis - Modelado del Dominio3

Modelo de Dominio Está enfocado en conceptos del dominio y no en entidadesde software Contenido: Introducción: Breve descripción que sirve como introducción almodelo Conceptos: Clases que representan conceptos significativospresentes en el dominio Tipos: Data types que describen propiedades de las clases querepresentan conceptosProgramación 4 - Curso 2013Análisis - Modelado del Dominio5

Modelo de Dominio (2) Contenido (cont.) Relaciones: Relaciones de asociación o generalización entrelas clases que representan conceptos Restricciones: Expresiones que restringenlas posibles instancias de los conceptos del modelo Diagramas: Representaciones (usualmente uno solo) deconceptos, tipos y relaciones presentes en el modeloProgramación 4 - Curso 2013Análisis - Modelado del Dominio6

Conceptos Un concepto es una idea, cosa o elemento de larealidad o problema que se está modelando. Ejemplo:VentafechahoraimporteProgramación 4 - Curso 2013Análisis - Modelado del Dominiov1 : Ventav2 : Venta7

Atributos Es necesario identificar aquellos atributos quepermitan satisfacer los requerimientos deinformación Un atributo se entiende como un data value deun objeto El tipo de un atributo es un data typeProgramación 4 - Curso 2013Análisis - Modelado del Dominio8

AtributosNotación Al mostrar un atributo es necesario especificar al menossu nombre Propiedades opcionales Tipo, multiplicidad, valor inicial, visibilidad, aProgramación 4 - Curso 2013Análisis - Modelado del DominioPersona-nombre[1] : String telefono[*] : String-edad[1] : Integer 0Representacióncompleta9

AtributosNotación (2) Alcance de atributosEmpleadosueldosueldoDe instanciaProgramación 4 - Curso 2013EmpleadoAnálisis - Modelado del DominioDe clase10

AtributosNotación (3) Un atributo (o cualquier elemento) que sea derivable semarca con un ‘/’ Lo usual es adjuntarle una nota especificando la forma enque se calculaPersonaedad hoy - fechaNacimProgramación 4 - Curso 2013Análisis - Modelado del DominionombrefechaNacim/edad11

AtributosSugerencias No utilizar atributos como clave foránea Los atributos no deben ser utilizados para relacionar elementosdel modeloPilotoAvionnombrenombrePilotovs.Avion comandaPilotonombreProgramación 4 - Curso 2013Análisis - Modelado del Dominio12

AtributosSugerencias (2) Tipos primitivos y no-primitivos Los tipos de los atributos son en general tipos primitivos(Integer, String, Real, etc.) De ser necesario es posible definir tipos no-primitivos para unproblema«datatype»DateVentafecha : DateVenta1«datatype»DatefechaProgramación 4 - Curso 2013Análisis - Modelado del Dominio13

ConceptosIdentificación de Conceptos Es muy común omitir conceptos en esta fase(identificación) que pueden ser descubiertos en una fase oetapa posterior Al descubrirlos se los agrega al Modelo de Dominio Es posible encontrar conceptos interesantes que no tenganatributos (que tengan un rol de comportamiento más quede información)Programación 4 - Curso 2013Análisis - Modelado del Dominio14

ConceptosIdentificación de Conceptos (2) Comenzar la construcción de un Modelo de Dominiohaciendo una lista de conceptos candidatos Existen dos técnicas para ello: Lista de categorías de conceptos Identificación de sustantivosProgramación 4 - Curso 2013Análisis - Modelado del Dominio15

ConceptosIdentificación de Conceptos (3) Lista de categorías de conceptos: Consiste en repasar la lista de categorías de conceptosbuscando los conceptos del dominio del problema queapliquen a cada categoríaCategoríaObjetos físicos o tangiblesDescripciones de ccionesReservaRolesPilotoProgramación 4 - Curso 2013Análisis - Modelado del DominioEjemplo16

ConceptosIdentificación de Conceptos (4) Lista de categorías de conceptos (cont.) La lista se puede continuar con: contenedores de cosascosas contenidas en contenedoressistemas externossustantivos abstractosorganizacioneseventosreglas y políticascatálogosregistro de asuntos financieros o legalesservicios e instrumentos financierosProgramación 4 - Curso 2013Análisis - Modelado del Dominio17

ConceptosIdentificación de Conceptos (5) Identificación de sustantivos Se identifican los sustantivos de una descripción textual delproblema (visión del problema y/o casos de uso) y se losconsidera como conceptos o atributos candidatos No es posible realizar esta actividad en forma totalmenteautomática El lenguaje natural es ambiguoNo todo sustantivo refiere a un concepto significativoProgramación 4 - Curso 2013Análisis - Modelado del Dominio18

ConceptosIdentificación de Conceptos (6) Identificación de sustantivos (cont.) Ejemplo: Un cliente llega a un puesto de venta para reservarun pasaje de avión El empleado hace la reserva enel sistema de aerolínea.Consideramos estos sustantivos como los primeroscandidatos para ser conceptosProgramación 4 - Curso 2013Análisis - Modelado del Dominio19

ConceptosSugerencias Cómo crear un Modelo de Dominio:1. Listar los conceptos candidatos usando cualquiera de las dostécnicas presentadas (o una combinación de ambas)2. Incluirlos en el Modelo de Dominio3. Agregar las asociaciones necesarias para registrar relacionesque necesiten ser preservadas4. Agregar los atributos necesarios para satisfacer losrequerimientos de informaciónSugerencia: Generar y mantener el diagrama en paraleloProgramación 4 - Curso 2013Análisis - Modelado del Dominio20

ConceptosSugerencias (2) Nombres y modelado La estrategia del cartógrafo se aplica tanto a laconstrucción de mapas y a la de Modelos de Dominio: Usar nombres que existan en el territorioExcluir características irrelevantesNo incluir cosas inexistentesProgramación 4 - Curso 2013Análisis - Modelado del Dominio21

ConceptosSugerencias (3) Granularidad de la especificación Durante el proceso de modelado, es mejor sobre-especificar con muchos conceptos de granularidad fina,que sub-especificar El costo de eliminar un concepto que resultó innecesarioes menor que el de agregar uno que fue omitido Siempre es posible agregar o eliminar conceptos duranteel proceso de modeladoProgramación 4 - Curso 2013Análisis - Modelado del Dominio22

ConceptosSugerencias (4) Error común al identificar conceptos El error más común al crear un Modelo de Dominio esrepresentar algo como un atributo cuando debió ser unconcepto Si no se piensa en un concepto X básicamente como unnúmero, un texto o un booleano (o data types en general)entonces X probablemente sea un concepto En caso de duda, representarlo como un conceptoProgramación 4 - Curso 2013Análisis - Modelado del Dominio23

Conceptos Sugerencias (5)Error común al identificar conceptos (cont.)Vuelodestinovs.Vuelofinaliza en AeropuertonombreProgramación 4 - Curso 2013Análisis - Modelado del Dominio24

ConceptosSugerencias (6) Supóngase la siguiente situación: Una instancia de “Producto” representa a un productofísico en una tienda Un producto tiene un número de serie, una descripción, unprecio y un código, que no aparecen en ninguna otra parte Los que trabajan en la tienda “no tienen memoria” Cada vez que un producto físico es vendido, lacorrespondiente instancia de “Producto” eseliminada del sistemaProgramación 4 - Curso 2013Análisis - Modelado del Dominio25

ConceptosSugerencias (7) En el caso de que un producto se agote nadie podrásaber cuál era el precio de ese producto Ese dato estaba incluido en solamente en lasinstancias que conformaban el inventario Notar también que existe información repetidaProgramación 4 - Curso 2013Análisis - Modelado del Dominio26

ConceptosSugerencias (8) Especificaciones y descripciones: Se necesitan conceptos que sean descripciones de otrosconceptos En el caso del producto necesitamos una“DescripcionProducto” que registre la información de losproductos Estos conceptos no representan los productos, sinoinformación acerca de ellos Si todas las instancias de “Producto” son eliminadas, la“EspecificacionProducto” permaneceProgramación 4 - Curso 2013Análisis - Modelado del Dominio27

ConceptosSugerencias (9) Especificaciones y descripciones (cont.) Ejemplo:ProductonumSeriedescripcioncodigopreciop1 : Productop2 : ProductonumSerie "40-51-2"descripcion "Video."codigo "VCR99A"precio 270numSerie "40-51-4"descripcion "Video."codigo "VCR99A"precio gopreciop1 : ProductonumSerie "40-51-2"p2 : ProductonumSerie "40-51-4"Programación 4 - Curso 2013Análisis - Modelado del Dominio: EspProductodescripcion "Video."codigo "VCR99A"precio 27028

Asociaciones Es necesario identificar aquellas asociaciones entreconceptos que: Sean necesarias para satisfacer los requerimientosde información Ayuden a la comprensión del Modelo de Dominio Una asociación es una relación entre conceptos queindica alguna conexión interesante o significativa entreellos En general surgen del conocimiento de una relaciónque debe ser preservada por una cierto tiempoProgramación 4 - Curso 2013Análisis - Modelado del Dominio29

Asociaciones (2) Se distinguen dos categorías de asociaciones: De comprensión: Permiten comprender mejor el problema Need-to-know: Permiten satisfacer las requerimientos deinformaciónProgramación 4 - Curso 2013Análisis - Modelado del Dominio30

AsociacionesDeteccióndeAsociaciones Lista de categorías de asociaciones comunes quepueden resultar de utilidad al momento de realizar unModelo de DominioCategoríaA es una parte física de BA es una parte lógica de BEjemploAla - AviónTramo - RutaA está contenido físicamente en BPasajero - AvionA está contenido lógicamente en BVuelo - PlanVueloA es un miembro de BPiloto - AerolineaProgramación 4 - Curso 2013Análisis - Modelado del Dominio31

AsociacionesDetección de Asociaciones (2) Lista de categorías de asociaciones (cont.) La lista se puede continuar con A es una descripción de BA es un ítem de una transacción BA es conocido/registrado/capturado en BA es una subunidad organizacional de BA usa o maneja BA se comunica con BA esta relacionado con la transacción BA es una transacción relacionada con la transacción BA está cerca de BA es propiedad de BProgramación 4 - Curso 2013Análisis - Modelado del Dominio32

AsociacionesAsociaciones a Considerar Considerar la inclusión de las siguientes asociaciones: Asociaciones para las que el conocimiento de la relacióndebe ser preservado por una cierta duración (need-toknow) Asociaciones derivadas de la “Lista de Asociaciones” De ser necesario incluir asociaciones de comprensiónProgramación 4 - Curso 2013Análisis - Modelado del Dominio33

AsociacionesAsociaciones a Considerar (2) Sugerencias Concentrarse en identificar conceptos más queasociaciones Evitar mostrar asociaciones derivables o redundantes Demasiadas asociaciones tienden a confundir más que ailustrarProgramación 4 - Curso 2013Análisis - Modelado del Dominio34

AsociacionesAsociaciones a Considerar (3) Ideal: punto intermedio entre un modelo minimalsólo con asociaciones need-to-know y otro con todaslas asociaciones concebibles Criterio: que satisfaga todos los requerimientos deinformación y además permita una comprensión delos conceptos en el problemael equilibriobuscadotodas lasconcebiblessóloneed-to-knowProgramación 4 - Curso 2013Análisis - Modelado del Dominio35

AsociacionesNotación La asociación se lee: “A asociada a B”nombre*Adirecciónde lecturaasociada a rol2multiplicidad1Brol1agregaciónextremos deasociaciónProgramación 4 - Curso 2013Análisis - Modelado del Dominiorol36

AsociacionesNotación - Multiplicidades La multiplicidad limita la cantidad de veces queuna instancia determinada está conectada a otrasa través de una asociación Eso se indica en el extremo de asoc. opuesto asoc A BIndica la cantidad deinstancias de B que puedenconectarse con un A cualquieraAProgramación 4 - Curso 2013asocmAnálisis - Modelado del Dominioasoca1a1a2a3a1a2b1b2b2b1b3b3B37

AsociacionesNotación – Multiplicidades (2) Se expresa como un subconjunto de los naturales(subrango o enumerado)m N tal que max(m) 0 Ejemplos: * Cualquier cantidad (cero o más) 1.*Al menos uno (uno o más) 0.1Opcionalmente uno (cero o uno) 5 Exactamente cinco 3,5,8Exactamente tres, cinco u ochoProgramación 4 - Curso 2013Análisis - Modelado del Dominio38

AsociacionesNotación - Roles Especifican el papel que juegan las clases en unaasociación Pueden ser necesarios para eliminar ambigüedadesdueñoPersonaEmpresaempleadop1 : Persona¿p1 es dueño oempleado de e?¿y p2?Programación 4 - Curso 2013dueñoe : Empresap2 : PersonaempleadoAnálisis - Modelado del Dominio39

AsociacionesNotación - Restricciones En ocasiones es necesario especificar que existe unarestricción entre dos asociaciones Por ejemplo, que un par de instancias solo esténconectadas mediante una asociaciónPersonadueñoEmpresa{xor}empleado De esta forma una persona no puede ser dueño yempleado de la misma empresaProgramación 4 - Curso 2013Análisis - Modelado del Dominio40

AsociacionesNotación – Restricciones (2) Otro ejemplo, si dos instancias están conectadas poruna asociación, también lo deben estar por o De esta forma una persona que sea dueña de laempresa tiene que ser empleadoProgramación 4 - Curso 2013Análisis - Modelado del Dominio41

AsociacionesNotación – Restricciones (3) Es posible también indicar que existe un orden entrelas instancias con las cualesotra instancia está relacionadaCurso**{ordered}Alumno Aquí interesa el orden de los alumnos en cada curso(por ejemplo por cédula)Programación 4 - Curso 2013Análisis - Modelado del Dominio42

AsociacionesNotación - Agregación Es una forma más fuerte de asociación Significa que un elemento es parte de otro Existen dos variantes Agregación compartida (agregación) Agregación compuesta (composición) Agregación compartidaHabitacionPared1.2Programación 4 - Curso 2013Análisis - Modelado del Dominio443

AsociacionesNotación - Agregación Agregación compuesta Un elemento es exclusivo del compuesto (máximo de lamultiplicidad es 1) Generalmente una acción sobre el compuesto se propaga alas partes (típicamente en la destrucción)ManoDedo1Programación 4 - Curso 2013Análisis - Modelado del Dominio0.544

Generalizaciones Es posible especificar variantes de un concepto cuando Los subtipos potenciales representan variantes interesantesde un cierto concepto Un subtipo es consistente con su supertipo (se aplicasubsumption) Todos los subtipos tienen atributos comunes que pueden serfactorizados en el supertipo Todos los subtipos tienen asociaciones comunes que puedenser factorizadas en el supertipoProgramación 4 - Curso 2013Análisis - Modelado del Dominio45

onCursofechaParcialExamenminimoinst : coprimerosegundoenumerado(data type)Programación 4 - Curso 2013Análisis - Modelado del Dominio46

GeneralizacionesSugerencias Modelado de estados Modelar los estados de un concepto solamente cuandoresulte imprescindible para comprender el problema No modelar los estados de un concepto X como subtiposde X Para esto utilizar AtributosConceptos (“con cuidado”)Programación 4 - Curso 2013Análisis - Modelado del Dominio47

GeneralizacionesSugerencias (2) Modelado de estados (cont.)LamparaLamparaencendida? : BooleanEncendidaCorrectoProgramación 4 - Curso 2013ApagadaIncorrectoAnálisis - Modelado del Dominio48

Tipos Asociativos Un tipo asociativo es un elemento que es tanto clasecomo asociación Motivación para usar tipos asociativos Una empresa contrata a diferentes personas para trabajar ya cada una le asigna un sueldo particular Una persona puede ser contratada por diferentes empresasy puede recibir un sueldo diferente por cada trabajo Interesa saber cuánto cobra una persona en cada trabajoProgramación 4 - Curso 2013Análisis - Modelado del Dominio49

Tipos Asociativos (2) Incluir el sueldo en la Persona no es correcto yaque una Persona puede tener más de un sueldo yéste depende del trabajo Incluir el sueldo en la Empresa tampoco escorrecto ya que la Empresa paga sueldos distintosa cada empleado Esto conduce a la noción de tipos asociativos, loscuales permiten agregar propiedades a lasasociacionesProgramación 4 - Curso 2013Análisis - Modelado del Dominio50

Tipos oEl tipo asociativopermiterepresentarmultiplicidadesy atributosProgramación 4 - Curso 2013Análisis - Modelado del Dominio51

Tipos AsociativosModelado Avanzado ¿Cómo se modela cuando se necesitan múltiples instanciasde la misma clase de asociación paraun mismo par de instancias? Ejemplo: registrar todos los sueldos de una persona dentrode una empresa*1.*EmpresaPersona1Empresa-PersonaLa relaciónEmpresa-Personaacepta múltiplestrabajosProgramación 4 - Curso 2013*Trabaja-sueldoAnálisis - Modelado del Dominio52

Modelo de DominioErrores Comunes Modelar un estado mediante conceptossin ser estrictamente necesario Modelar el concepto más general del problema sin sernecesario Modelar un data type como conceptoy viceversa Mal uso de las clases de asociaciónProgramación 4 - Curso 2013Análisis - Modelado del Dominio53

Modelo de DominioErrores Comunes (2) Omisión de una especificación para las instancias Incluir elementos del diseño (interfaces, dependencia,etc.) Representar asociaciones como atributos (uso declaves foráneas) Redundancia y sobre especificación Especificar el tipo de estructura en una multiplicidadde *Programación 4 - Curso 2013Análisis - Modelado del Dominio54

Restricciones Es muy común el hecho de que un Modelo de Dominiono alcance a representar exactamente la realidadplanteada Existen casos donde un modelo representa fielmente lamayoría de los aspectos de la realidad sin embargopermite otros que no son deseablesProgramación 4 - Curso 2013Análisis - Modelado del Dominio56

RestriccionesMotivación trabaja enEmpresa1Vendedor***Productoproduce }*1 vendeEl modelo representado por estediagrama: ¿Refleja fielmente la realidad?Programación 4 - Curso 2013Análisis - Modelado del Dominio57

RestriccionesMotivación (2)Permite o considera como válidos casos como:“Un vendedor vende un producto producidopor una empresa para la cual él no trabaja”e1 : Empresae2 : Empresav1 : Vendedorp1 : Producto¡Todas las multiplicidadesestán satisfechas!(esta configuración deobjetos es válida respectoal Modelo de Dominio)La empresa de v1 (o sea e1) debería producir el producto queél vende (o sea p1), o v1 debería trabajar en la empresa e2Programación 4 - Curso 2013Análisis - Modelado del Dominio58

RestriccionesMotivación (3) Es muy común enfrentarse ante este tipo de situaciones Existen dos alternativas para solucionar el problema Modificar el Modelo de Dominio para evitar queconfiguraciones no deseadas puedan ser válidas Adjuntar restricciones al modelo tales que invalidenaquellas configuraciones no deseadasProgramación 4 - Curso 2013Análisis - Modelado del Dominio59

RestriccionesModificar del Modelo En muchos casos es posible eliminar situaciones como ladescrita mediante una modificación al modelo Es común que esta modificación no sea menor por lo quees posible que Insuma demasiado tiempo La versión modificada sea muy complicada La versión modificada restrinja los casos no deseados perointroduzca otros nuevosProgramación 4 - Curso 2013Análisis - Modelado del Dominio60

RestriccionesAdjuntar Restricciones Otra alternativa al problema es la imposición derestricciones (en particular invariantes) Un invariante es un predicado que expresa unacondición sobre los elementos del Modelo de Dominio yque siempre debe ser verdadero Cuando es evaluado contra una cierta configuración deobjetos dando un resultado de falso significa que laconfiguración de objetos no es válida UML no especifica el modo en que un invariante debaser expresado Puede utilizarse notación informal o formalProgramación 4 - Curso 2013Análisis - Modelado del Dominio61

RestriccionesInvariantes Los invariantes pueden ser expresados informalmenteen lenguaje natural Un ejemplo de esto puede serInvariante:“Todo vendedor debe vender un producto quesea producido por la empresa para la cual trabaja”Programación 4 - Curso 2013Análisis - Modelado del Dominio62

Restricciones Habituales Unicidad de Atributos (Identificación de Instancias) Un atributo tiene un valor único dentro del universo deinstancias de un mismo tipo (una instancia es identificada porese valor) Dominio de Atributos El valor de un atributo pertenece a cierto dominio Integridad Circular No puede existir circularidad en la navegación Atributos Calculados El valor de un atributo es calculado a partir de la informacióncontenida en el dominio Reglas de Negocio Invariante que restringe el dominio del problemaProgramación 4 - Curso 2013Análisis - Modelado del Dominio63

RestriccionesEjemplos trabaja enEmpresa/cantEmp1Vendedoredad***Productoproduce }Unicidad de Atributos(Invariante)*codigoProgramación 4 - Curso 20131 vendeAnálisis - Modelado del Dominio“No hay dos productos conel mismo código (el códigoidentifica al producto)”64

RestriccionesEjemplos (2) trabaja duce }Dominio de Atributos(Invariante)1.*codigoProgramación 4 - Curso 20131 vendeAnálisis - Modelado del Dominio“En la empresa no puedehaber vendedores mayoresde 65 años de edad”65

RestriccionesEjemplos (3) trabaja duce }Integridad Circular(Invariante)1.*codigoProgramación 4 - Curso 20131 vendeAnálisis - Modelado del Dominio“Un vendedor no puedevender productos de unaempresa en la que notrabaja”66

RestriccionesEjemplos (4) trabaja duce }Atributos Calculados(Invariante)1.*codigoProgramación 4 - Curso 20131 vendeAnálisis - Modelado del Dominio“El atributo cantEmp es lacantidad de empleados dela empresa”67

RestriccionesEjemplos (5) trabaja duce }Reglas de Negocio(Invariante)1.*codigoProgramación 4 - Curso 20131 vendeAnálisis - Modelado del Dominio“Ningún vendedor menorde 30 años puede venderel producto de código X”68

Modelo de Dominio (2) Contenido (cont.) Relaciones: Relaciones de asociación o generalización entre las clases que representan conceptos Restricciones: Expresiones que restringen las posibles instancias de los conceptos del modelo Diagramas: Representaciones (usualmente uno solo) de conceptos, tipos y relaciones presentes en el modelo