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