Programación Avanzada - Fing.edu.uy

Transcription

Programación AvanzadaAnálisisModelado del Dominio

Contenido IntroducciónModelo de nesOtros elementosRestriccionesProgramación Avanzada Análisis: Modelado del Dominio2

Introducción La esencia del análisis orientado a objetoses la descomposición del problema enconceptos individualesUn Modelo de Dominio contieneprincipalmente los conceptos y susrelaciones que sean significativos en eldominio del problema: Significativos para el modeladorEl problema y los requerimientos determinanqué es significativoProgramación Avanzada Análisis: Modelado del Dominio3

Modelo de Dominio Está enfocado en conceptos del dominio yno en entidades de softwareContenido: Introducción: Breve descripción que sirvecomo introducción al modeloConceptos: Clases que representan conceptossignificativos presentes en el dominioTipos: Data types que describen propiedadesde las clases que representan conceptosProgramación Avanzada Análisis: Modelado del Dominio4

Modelo de Dominio (2) Contenido (cont.) Relaciones: Relaciones de asociación ogeneralización entre las clases querepresentan conceptosRestricciones: Expresiones que restringenlas posibles instancias de los conceptos delmodeloDiagramas: Representaciones (usualmenteuno solo) de conceptos, tipos y relacionespresentes en el modeloProgramación Avanzada Análisis: Modelado del Dominio5

Conceptos Un concepto es una idea, cosa oelemento de la realidad o problemaque se está �n Avanzada Análisis: Modelado del Dominiov1 : Ventav2 : Venta6

ConceptosIdentificación de Conceptos Es muy común omitir conceptos en estafase (identificación) que pueden serdescubiertos en una fase o etapa posterior Al descubrirlos se los agrega al Modelo deDominioEs posible encontrar conceptosinteresantes que no tengan atributos (quetengan un rol de comportamiento más quede información)Programación Avanzada Análisis: Modelado del Dominio7

ConceptosIdentificación de Conceptos (2) Comenzar la construcción de unModelo de Dominio haciendo una listade conceptos candidatosExisten dos técnicas para ello: Lista de categorías de conceptosIdentificación de sustantivosProgramación Avanzada Análisis: Modelado del Dominio8

ConceptosIdentificación de Conceptos (3) Lista de categorías de conceptos: Consiste en repasar la lista de categorías deconceptos buscando los conceptos del dominio delproblema que apliquen a cada categoríaCategoríaObjetos físicos o tangiblesDescripciones de ervaRolesPilotoProgramación Avanzada Análisis: Modelado del DominioEjemploAeropuerto9

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 Avanzada Análisis: Modelado del Dominio10

ConceptosIdentificación de Conceptos (5) Identificación de sustantivos Se identifican los sustantivos de una descripcióntextual del problema (visión del problema y/o casosde uso) y se los considera como conceptos oatributos candidatosNo es posible realizar esta actividad en formatotalmente automática El lenguaje natural es ambiguoNo todo sustantivo refiere a un concepto significativoProgramación Avanzada Análisis: Modelado del Dominio11

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 losprimeros candidatos para ser conceptosProgramación Avanzada Análisis: Modelado del Dominio12

ConceptosSugerencias Cómo crear un Modelo de Dominio:1.2.3.4.Listar los conceptos candidatos usando cualquiera delas dos técnicas presentadas (o una combinación deambas)Incluirlos en el Modelo de DominioAgregar las asociaciones necesarias para registrarrelaciones que necesiten ser preservadasAgregar los atributos necesarios para satisfacer losrequerimientos de informaciónSugerencia: Generar y mantener el diagrama en paraleloProgramación Avanzada Análisis: Modelado del Dominio13

ConceptosSugerencias (2) Nombres y modelado La estrategia del cartógrafo se aplica tanto ala construcción de mapas y a la de Modelosde Dominio: Usarnombres que existan en el territorio Excluir características irrelevantes No incluir cosas inexistentesProgramación Avanzada Análisis: Modelado del Dominio14

ConceptosSugerencias (3) Granularidad de la especificación Durante el proceso de modelado, es mejorsobre-especificar con muchos conceptos degranularidad fina, que sub-especificarEl costo de eliminar un concepto que resultóinnecesario es menor que el de agregar unoque fue omitidoSiempre es posible agregar o eliminarconceptos durante el proceso de modeladoProgramación Avanzada Análisis: Modelado del Dominio15

ConceptosSugerencias (4) Error común al identificar conceptos El error más común al crear un Modelo deDominio es representar algo como un atributocuando debió ser un conceptoSi no se piensa en un concepto Xbásicamente como un número, un texto o unbooleano (o data types en general) entoncesX probablemente sea un conceptoEn caso de duda, representarlo como unconceptoProgramación Avanzada Análisis: Modelado del Dominio16

ConceptosSugerencias (5) Error común al identificar conceptos (cont.)Vuelodestinovs.Vuelofinaliza en AeropuertonombreProgramación Avanzada Análisis: Modelado del Dominio17

ConceptosSugerencias (6) Supóngase la siguiente situación: Una instancia de “Producto” representa a unproducto físico en una tiendaUn producto tiene un número de serie, unadescripción, un precio y un código, que no aparecenen ninguna otra parteLos 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 Avanzada Análisis: Modelado del Dominio18

ConceptosSugerencias (7) En el caso de que un producto se agote nadiepodrá saber cuál era el precio de ese productoEse dato estaba incluido en solamente en lasinstancias que conformaban el inventarioNotar también que existe información repetidaProgramación Avanzada Análisis: Modelado del Dominio19

ConceptosSugerencias (8) Especificaciones y descripciones: Se necesitan conceptos que sean descripciones deotros conceptosEn el caso del producto necesitamos una“DescripcionProducto” que registre la información delos productosEstos conceptos no representan los productos, sinoinformación acerca de ellosSi todas las instancias de “Producto” son eliminadas,la “EspecificacionProducto” permaneceProgramación Avanzada Análisis: Modelado del Dominio20

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 : Producto: EspProductodescripcion "Video."codigo "VCR99A"precio 270numSerie "40-51-4"Programación Avanzada Análisis: Modelado del Dominio21

Asociaciones Es necesario identificar aquellas asociacionesentre conceptos que: Sean necesarias para satisfacer los requerimientosde informaciónAyuden a la comprensión del Modelo de DominioUna asociación es una relación entre conceptosque indica alguna conexión interesante osignificativa entre ellosEn general surgen del conocimiento de unarelación que debe ser preservada por una ciertotiempoProgramación Avanzada Análisis: Modelado del Dominio22

Asociaciones (2) Se distinguen dos categorías deasociaciones: De comprensión: Permiten comprendermejor el problemaNeed-to-know: Permiten satisfacer lasrequerimientos de informaciónProgramación Avanzada Análisis: Modelado del Dominio23

AsociacionesDetección de Asociaciones Lista de categorías de asociaciones comunesque pueden resultar de utilidad al momento derealizar un Modelo de DominioCategoríaEjemploA es una parte física de BA es una parte lógica de BAla - AviónTramo - RutaA está contenido físicamente en BPasajero - AvionA está contenido lógicamente en BVuelo - PlanVueloA es un miembro de BPiloto - AerolineaProgramación Avanzada Análisis: Modelado del Dominio24

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 Avanzada Análisis: Modelado del Dominio25

AsociacionesAsociaciones a Considerar Considerar la inclusión de las siguientesasociaciones: Asociaciones para las que el conocimientode la relación debe ser preservado por unacierta duración (need-to-know)Asociaciones derivadas de la “Lista deAsociaciones”De ser necesario incluir asociaciones decomprensiónProgramación Avanzada Análisis: Modelado del Dominio26

AsociacionesAsociaciones a Considerar (2) Sugerencias Concentrarse en identificar conceptos másque asociacionesEvitar mostrar asociaciones derivables oredundantesDemasiadas asociaciones tienden aconfundir más que a ilustrarProgramación Avanzada Análisis: Modelado del Dominio27

AsociacionesAsociaciones a Considerar (3) Ideal: punto intermedio entre un modelominimal sólo con asociaciones need-to-know yotro con todas las asociaciones concebiblesCriterio: que satisfaga todos los requerimientosde información y además permita unacomprensión de los conceptos en el problemael equilibriobuscadosóloneed-to-knowProgramación Avanzada Análisis: Modelado del Dominiotodas lasconcebibles28

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

AsociacionesNotación - Multiplicidades La multiplicidad limita la cantidad de vecesque una instancia determinada estáconectada a otras a través de unaasociaciónasocEso se indica en el extremo de asoc.a1 b1opuestoa1 b2Indica la cantidad dea2 b2instanciasdeBquepuedenasoc A Ba3 b1conectarse con un A cualquieraAasocProgramación Avanzada Análisis: Modelado del Dominioma1a2b3b3B30

AsociacionesNotación – Multiplicidades (2) Se expresa como un subconjunto de losnaturales (subrango o enumerado)m N tal que max(m) 0Ejemplos: *1.*0.153,5,8Cualquier cantidad (cero o más)Al menos uno (uno o más)Opcionalmente uno (cero o uno)Exactamente cincoExactamente tres, cinco u ochoProgramación Avanzada Análisis: Modelado del Dominio31

AsociacionesNotación - Roles Especifican el papel que juegan las clases en unaasociaciónPueden ser necesarios para 1 : Persona¿p1 es dueño oempleado de e?¿y p2?Programación Avanzada Análisis: Modelado del Dominiodueñoe : Empresap2 : Personaempleado32

AsociacionesNotación - Restricciones En ocasiones es necesario especificar queexiste una restricción entre dos asociacionesPor ejemplo, que un par de instancias soloestén conectadas mediante una asociacióndueñoPersonaEmpresa{xor}empleado De esta forma una persona no puede ser dueñoy empleado de la misma empresaProgramación Avanzada Análisis: Modelado del Dominio33

AsociacionesNotación – Restricciones (2) Otro ejemplo, si dos instancias estánconectadas por una asociación, también lodeben estar por otra asociacióndueñoPersonaEmpresa{subset}empleado De esta forma una persona que sea dueña dela empresa tiene que ser empleadoProgramación Avanzada Análisis: Modelado del Dominio34

AsociacionesNotación – Restricciones (3) Es posible también indicar que existe un ordenentre las instancias con las cualesotra instancia está relacionadaCurso **{ordered}AlumnoAquí interesa el orden de los alumnos en cadacurso (por ejemplo por cédula)Programación Avanzada Análisis: Modelado del Dominio35

AsociacionesNotación - Agregación Es una forma más fuerte de asociaciónSignifica que un elemento es parte de otroExisten dos variantes Agregación compartida (agregación)Agregación compuesta (composición)Agregación compartidaHabitacionPared1.2Programación Avanzada Análisis: Modelado del Dominio436

AsociacionesNotación - Agregación Agregación compuesta Un elemento es exclusivo del compuesto(máximo de la multiplicidad es 1)Generalmente una acción sobre el compuestose propaga a las partes (típicamente en ladestrucción)ManoDedo1Programación Avanzada Análisis: Modelado del Dominio0.537

Atributos Es necesario identificar aquellosatributos que permitan satisfacerlos requerimientos de informaciónUn atributo se entiende como undata value de un objetoEl tipo de un atributo es un datatypeProgramación Avanzada Análisis: Modelado del Dominio38

AtributosNotación Al mostrar un atributo es necesarioespecificar al menos su nombrePropiedades opcionales Tipo, multiplicidad, valor inicial, aciónmínimaProgramación Avanzada Análisis: Modelado del DominioPersona-nombre[1] : String telefono[*] : String-edad[1] : Integer 0Representacióncompleta39

AtributosNotación (2) Alcance de atributosEmpleadosueldoDe instanciaProgramación Avanzada Análisis: Modelado del DominioEmpleadosueldoDe clase40

AtributosNotación (3) Un atributo (o cualquier elemento) que seaderivable se marca con un „/‟Lo usual es adjuntarle una notaespecificando la forma en que se calculaPersonaedad hoy - fechaNacimProgramación Avanzada Análisis: Modelado del DominionombrefechaNacim/edad41

AtributosSugerencias No utilizar atributos como clave foránea Los atributos no deben ser utilizados pararelacionar elementos del modeloPilotoAvionnombrenombrePilotovs.Avion comandaPilotonombreProgramación Avanzada Análisis: Modelado del Dominio42

AtributosSugerencias (2) Tipos primitivos y no-primitivos Los tipos de los atributos son en general tiposprimitivos (Integer, String, Real, etc.)De ser necesario es posible definir tipos noprimitivos para un problema«datatype»NoPrimitivoConceptoatrib : ogramación Avanzada Análisis: Modelado del Dominio43

Generalizaciones Es posible especificar variantes de unconcepto cuando Los subtipos potenciales representanvariantes interesantes de un cierto conceptoUn subtipo es consistente con su supertipo(se aplica subsumption)Todos los subtipos tienen atributos comunesque pueden ser factorizados en el supertipoTodos los subtipos tienen asociacionescomunes que pueden ser factorizadas en elsupertipoProgramación Avanzada Análisis: Modelado del Dominio44

toCursofechaExamenminimoParcialinst : coprimerosegundoenumerado(data type)Programación Avanzada Análisis: Modelado del Dominio45

GeneralizacionesSugerencias Modelado de estados Modelar los estados de un conceptosolamente cuando resulte imprescindiblepara comprender el problemaNo modelar los estados de un concepto Xcomo subtipos de XPara esto utilizar AtributosConceptos (“con cuidado”)Programación Avanzada Análisis: Modelado del Dominio46

GeneralizacionesSugerencias (2) Modelado de estados (cont.)LamparaLamparaencendida? : BooleanEncendidaCorrectoProgramación Avanzada Análisis: Modelado del DominioApagadaIncorrecto47

Tipos Asociativos Un tipo asociativo es un elemento que estanto clase como asociaciónMotivación para usar tipos asociativos Una empresa contrata a diferentes personaspara trabajar y a cada una le asigna unsueldo particularUna persona puede ser contratada pordiferentes empresas y puede recibir unsueldo diferente por cada trabajoInteresa saber cuánto cobra una persona encada trabajoProgramación Avanzada Análisis: Modelado del Dominio48

Tipos Asociativos (2) Incluir el sueldo en la Persona no es correctoya que una Persona puede tener más de unsueldo y éste depende del trabajoIncluir el sueldo en la Empresa tampoco escorrecto ya que la Empresa paga sueldosdistintos a cada empleadoEsto conduce a la noción de tiposasociativos, los cuales permiten agregarpropiedades a las asociacionesProgramación Avanzada Análisis: Modelado del Dominio49

Tipos oEl tipo asociativopermiterepresentarmultiplicidadesy atributosProgramación Avanzada Análisis: Modelado del Dominio50

Tipos AsociativosModelado Avanzado ¿Cómo se modela cuando se necesitan múltiplesinstancias de la misma clase de asociación paraun mismo par de instancias?Ejemplo: registrar todos los sueldos de una personadentro de una empresa*1.*EmpresaPersona1Empresa-PersonaLa relaciónEmpresa-Personaacepta múltiplestrabajosProgramación Avanzada Análisis: Modelado del Dominio*Trabaja-sueldo51

Modelo de DominioErrores Comunes Modelar un estado mediante conceptossin ser estrictamente necesarioModelar el concepto más general delproblema sin ser necesarioModelar un data type como conceptoy viceversaMal uso de las clases de asociaciónProgramación Avanzada Análisis: Modelado del Dominio52

Modelo de DominioErrores Comunes (2) Omisión de una especificación para lasinstanciasIncluir elementos del diseño(interfaces, dependencia, etc.)Representar asociaciones comoatributos (uso de claves foráneas)Redundancia y sobre especificaciónEspecificar el tipo de estructura en unamultiplicidad de *Programación Avanzada Análisis: Modelado del Dominio53

Restricciones Es muy común el hecho de que unModelo de Dominio no alcance arepresentar exactamente la realidadplanteadaExisten casos donde un modelorepresenta fielmente la mayoría de losaspectos de la realidad sin embargopermite otros que no son deseablesProgramación Avanzada Análisis: Modelado del Dominio54

RestriccionesMotivación trabaja enEmpresa1Vendedor***Productoproduce }*1 vendeEl modelo representado por estediagrama: ¿Refleja fielmente la realidad?Programación Avanzada Análisis: Modelado del Dominio55

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 Avanzada Análisis: Modelado del Dominio56

RestriccionesMotivación (3) Es muy común enfrentarse ante este tipode situacionesExisten dos alternativas para solucionar elproblema Modificar el Modelo de Dominio para evitarque configuraciones no deseadas puedanser válidasAdjuntar restricciones al modelo tales queinvaliden aquellas configuraciones nodeseadasProgramación Avanzada Análisis: Modelado del Dominio57

RestriccionesModificar del Modelo En muchos casos es posible eliminarsituaciones como la descrita medianteuna modificación al modeloEs común que esta modificación no seamenor por lo que es posible que Insuma demasiado tiempoLa versión modificada sea muy complicadaLa versión modificada restrinja los casos nodeseados pero introduzca otros nuevosProgramación Avanzada Análisis: Modelado del Dominio58

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 deDominio y que 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álidaUML no especifica el modo en que un invariantedeba ser expresado Puede utilizarse notación informal o formalProgramación Avanzada Análisis: Modelado del Dominio59

RestriccionesInvariantes - Informal Los invariantes pueden ser expresadosinformalmente en lenguaje naturalUn ejemplo de esto puede serInvariante:“Todo vendedor debe vender un producto quesea producido por la empresa para la cual trabaja”Programación Avanzada Análisis: Modelado del Dominio60

RestriccionesInvariantes - Informal (2) Ventajas Es “entendido” por todosDesventajas Es ambiguo: una restricción complejapuede Ser difícil de escribir y/o leerFácilmente dar lugar a confusionesNo puede ser procesado en formaautomáticaProgramación Avanzada Análisis: Modelado del Dominio61

RestriccionesInvariantes - Formal UML contiene un lenguaje que fue diseñadoespecíficamente para la especificación de estetipo de restriccionesEs relativamente simple e intuitivoEste lenguaje es el Object Constraint LanguageEjemplo:context Vendedor inv:self.producto.empresa- includes(self.empresa)Programación Avanzada Análisis: Modelado del Dominio62

RestriccionesInvariantes - Formal (2) Ventajas: Una restricción tiene un significado único yprecisoPuede ser procesada en forma automáticaDesventajas: El lenguaje a utilizar puede resultarextremadamente complejoRequiere el aprendizaje de lasconstrucciones del lenguajeProgramación Avanzada Análisis: Modelado del Dominio63

Restricciones Habituales Unicidad de Atributos (Identificación deInstancias) Dominio de Atributos No puede existir circularidad en la navegaciónAtributos Calculados El valor de un atributo pertenece a cierto dominioIntegridad Circular Un atributo tiene un valor único dentro del universo deinstancias de un mismo tipo (una instancia esidentificada por ese valor)El valor de un atributo es calculado a partir de lainformación contenida en el dominioReglas de Negocio Invariante que restringe el dominio del problemaProgramación Avanzada Análisis: Modelado del Dominio64

RestriccionesEjemplos trabaja enEmpresa/cantEmp1Vendedoredad***Productoproduce }Unicidad de Atributos(Invariante)*codigo1Programación Avanzada Análisis: Modelado del Dominio vende“No hay dos productos conel mismo código (el códigoidentifica al producto)”65

RestriccionesEjemplos (2) trabaja duce }Dominio de Atributos(Invariante)1.*codigo1Programación Avanzada Análisis: Modelado del Dominio vende“En la empresa no puedehaber vendedores mayoresde 65 años de edad”66

RestriccionesEjemplos (3) trabaja duce }Integridad Circular(Invariante)1.*codigo1Programación Avanzada Análisis: Modelado del Dominio vende“Un vendedor no puedevender productos de unaempresa en la que notrabaja”67

RestriccionesEjemplos (4) trabaja duce }Atributos Calculados(Invariante)1.*codigo1Programación Avanzada Análisis: Modelado del Dominio vende“El atributo cantEmp es lacantidad de empleados dela empresa”68

RestriccionesEjemplos (5) trabaja duce }Reglas de Negocio(Invariante)1.*codigo1Programación Avanzada Análisis: Modelado del Dominio vende“Ningún vendedor menorde 30 años puede venderel producto de código X”69

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