unidad ii metodología para resolver problemas aplicando la...
TRANSCRIPT
1
Unidad II
Metodología para resolver problemas aplicando la POO
Parte 3Análisis del ProblemaModelo del Dominio
2
FASE II. Análisis del problema
Incluye:
• Modelo de casos de uso
• Modelo del dominio–Tareas:
• Identificar clases conceptuales
• Agregar asociaciones
• Agregar atributos
–Resultado: Modelo del dominio o diagrama de clases del análisis (sin métodos)
3
Fase II: Análisis de Requisitos
Incluye:
Modelo de Casos de Uso
• Diagrama de Casos de Uso
• Casos de Uso en formato completo
• Diagramas de Secuencia del Sistema
Modelo del Dominio
•Diagrama de Clases Conceptuales
4
Modelo del DominioEn la fase de análisis orientado a objetos, es la descomposición del dominio de interés en clases conceptuales individuales u objetos (cosas de las que somos conscientes)
Se puede comparar con la descomposición de un sistema en subsistemas (o procesos, funciones, procedimientos, etc.) del análisis estructurado
5
Ejemplo: Jugar DadosAnálisis Estructurado
Seleccionar jugador
Iniciar juego
Lanzar los dados
Calcular el resultado
Evaluar el resultado (¿ganó o no?)
Análisis Orientado a ObjetosJugador
Dados
JuegoDeDados
6
Modelo del Dominio (Concepto)Es una representación visual de las clases conceptuales u objetos del mundo real en un dominio de interés (Fowler, 1996)
7
... Modelo del DominioMuestra:
Objetos del Dominio o Clases Conceptuales
Asociaciones entre clases
Atributos de las clases conceptuales
8
Modelo del Dominio y Diagrama de Clases
Modelo del Dominio es la fuente para el diseño de Objetos de SW
9
Ejemplo de Modelo del Dominio del Caso de Uso “Procesar venta” del sistema de la “Caja de Venta”
10
Modelo del Dominio
No son modelos de componentes de SW
11
Clases Conceptuales delDominio de Ventas
Dominio: Una tienda del mundo real
Ejemplos de clases conceptuales: Tienda, Venta y Registro
12
Identificación de Clases Conceptuales
Objetivo:Crear un modelo del dominio de clases conceptuales interesantes o significativas del dominio de interés (por ejemplo, ventas, alquiler de videos, renta de vehículos)
Tarea: Identificar las clases conceptuales relacionadas con los escenarios de los casos de uso que se estén estudiando
Guía: “Identificar en exceso”
13
Técnicas para identificar Clases Conceptuales
1. Utilizar la Lista de Categorías de Clases Conceptuales
2. Identificar Frases Nominales
3. Aplicar patrones de análisis o modelos de dominios incompletos existentes y creados por expertos. Por ejemplo:1. Analysis Patterns (Fowler, 1996)
2. Data Model Patterns (Hay, 1996)
14
1. Lista de Categorías de Clases Conceptuales
Categoría de Clase
Conceptual
Objetos tangibles o físicos
Especificaciones, diseños o descripciones de las cosas
Lugares
Transacciones
Líneas de transacción
Roles de la gente
Contenedores de otras cosas
Cosas en un contenedor
Ejemplos del dominio de
ventas y reserva de vuelos
Registro, AvionEspecificaciónDelProducto, DescripciónDelVueloTienda, AeropuertoVenta, Pago,ReservaLineaDeVentaCajero, PilotoTienda, Avión
Articulo, Pasajero
15
Lista de Categorías de Clases Conceptuales
Categoría de Clase
Conceptual
Otros sistemas informáticos o electromagnéticos externos al sistema
Conceptos abstractos
Organizaciones
Hechos
Procesos (normalmente no se representan como conceptos, pero podría ocurrir)
Reglas y políticas
Ejemplos del dominio de
ventas y reserva de vuelos
SistemaAutorizacionPagoCredito, ControlDeTraficoAereo
AnsiaDepartamentoDeVenta, CompañiaAereaVenta, Pago, Reunion, Vuelo, Colision, Aterrizaje
VentaDeUnProducto, ReservarUnAsientoPoliticaDeReintegro, PoliticaDeCancelacion
16
Lista de Categorías de Clases Conceptuales
Categoría de Clase
Conceptual
Catálogos
Registros de finanzas, trabajo, contratos, cuestiones legales
Instrumentos y servicios financieros
Manuales, documentos, artículos de referencia, libros
Ejemplos del dominio de
ventas y reserva de vuelos
CatalogoDeProductos, CatalogoDePiezas
Recibo, LibroMayor, ContratoEmpleo, RegistroMantenimiento
LineaDeCredito, Stock
ListaDeCambiosDePreciosDiarios, ManualReparaciones
17
2. Identificación de Frases Nominales
Técnica: Análisis lingüístico
Precaución: Ambigüedad entre palabras del lenguaje natural, por lo que no es posible una correspondencia mecánica de nombres a clases
Fuente de las frases nominales: Casos de Uso en formato completo
18
Identificación de Frases Nominales:Ejemplo de Caso de Uso “Procesar venta”
Escenario principal de éxito (o flujo básico):
1. El Cliente llega a una terminal de Caja de Ventas con productos y/o servicios que comprar.
2. El Cajero comienza una nueva venta.
3. El Cajero introduce el identificador del artículo.
4. El Sistema registra la línea de la venta y presenta la descripción del artículo, precio y suma parcial. El precio se calcula a partir de un conjunto de reglas de precios.
El Cajero repite los pasos 3 y 4 hasta que se indique.
19
Identificación de Frases Nominales:Ejemplo de Caso de Uso “Procesar venta”
5. El Sistema presenta el total con los impuestoscalculados.
6. El Cajero le dice al Cliente el total y pide que le pague.
7. El Cliente paga y el Cajero gestiona el pago.
8. El Sistema registra la venta completa y envía la información de la venta y el pago al sistema de Contabilidad externo (para la contabilidad y las comisiones) y al sistema de inventario (para actualizar el inventario).
9. El Sistema presenta el recibo.
10. El Cliente se va con el recibo y los productos (si es el caso).
20
Clases Conceptuales Candidatas para el dominio de las ventas
Registro
Articulo
Tienda
Venta
Pago
CatalogoDeProductos
EspecificacionDelProducto
LineaDeVenta
Cajero
Cliente
Encargado
Aplicando 2 técnicas:
• Lista de Categorías de Clases Conceptuales
• Identificación de frases nominales
Lista de Clases Conceptuales para el caso de uso “Procesar venta”
21
Lista de Clases conceptuales candidatas
No existe una lista correcta
Es una lista arbitraria de abstracciones y vocabulario del dominio
Diferentes modeladores siguiendo la técnica de identificación de frases nominales podrían generar listas de clases conceptuales candidatas similares
22
Objetos de Informes: Recibo¿Incluir recibo en el modelo del dominio?
Recibo: es un informe de venta y pago (una clase conceptual relativamente destacable)
Pero...
23
Objetos de Informes: ReciboDuplica información en venta y pago
24
Objetos de Informes: ReciboEl recibo da derecho al portador a devolver los artículos comprados; por lo tanto, debería ser una clase conceptual del caso de uso “Gestionar devoluciones”
25
Nombrar y Modelar cosas:Estrategia del Cartógrafo
Estrategia del cartógrafo:
Utilizar los nombres existentes en el territorio
Excluir las características irrelevantes
No agregar cosas que no están en el territorio
Modelo del dominio es un mapa de conceptos y cosas de un dominio
26
Error típico al identificar clases conceptuales candidatas
Tienda, ¿es un atributo de Venta o un concepto separado?
27
Error típico al identificar clases conceptuales candidatas
Regla empírica:
“Si no se considera alguna clase conceptual X que sea un número o texto en el mundo real , X es probablemente una clase conceptual y no un atributo”
Tienda es una entidad legal, organización o algo que ocupa espacio; por lo tanto, debe considerarse como un concepto separado
28
Error típico al identificar clases conceptuales candidatas
En el dominio de Reserva de vuelos...
Destino (aeropuerto), ¿es un atributo de Vuelo o una clase conceptual candidata separada?
29
Error típico al identificar clases conceptuales candidatas
El Aeropuerto de destino es texto y/o un número en Vuelo, pero es una cosa grande que ocupa espacio; por lo tanto, debe ser una clase conceptual candidata separada
En caso de duda...
Representar el concepto separadamente
Los atributos son raros en el modelo del dominio
30
Resolución de clases conceptuales similares: ¿Registro ó CajaDeVenta?
Regla Empírica: Un modelo del dominio no es absolutamente correcto o equivocado, sino más o menos útil; ya que es una herramienta de comunicación
31
Clases Conceptuales de Especificación o Descripción
Los objetos de descripción o especificación están fuertemente relacionados con las cosas que describen.
Son comunes en los dominios de ventas, fabricación y productos
32
Especificación sobre otras cosas
La descripción del vuelo describe un vuelo (número) y su ruta, aún cuando no se ha planificado ningún vuelo para una hora y fecha específica.
33
Modelo del Dominio del Caso de uso: Procesar venta (Caja de Venta)
Este modelo del dominio presenta las clases conceptuales identificadas usando las técnicas estudiadas
34
FASE II. Análisis del problema
Incluye:
• Modelo de casos de uso
• Modelo del dominio–Tareas:
• Identificar clases conceptuales
• Agregar asociaciones
• Agregar atributos
–Resultado: Modelo del dominio o diagrama de clases del análisis (sin métodos)
35
Ejemplo de Modelo del Dominio del Caso de Uso “Procesar venta” del sistema de la “Caja de Venta”
..*
36
Pasos para elaborar elModelo del Dominio
1. Listar clases conceptuales candidatas
• Aplicando las técnicas para identificar clases conceptuales:• Lista de Categorías de Clases Conceptuales
• Identificación de Frases Nominales
• Aplicando las estrategias:• Usar vocabulario del dominio (Cartógrafo)
• Representar abstracciones del dominio
37
Pasos para el Modelado del Dominio1. Listar clases conceptuales candidatas
2. Representar las clases conceptuales en un modelo del dominio
38
Pasos para el Modelado del Dominio
1. Listar clases conceptuales candidatas
2. Representar las clases conceptuales en un modelo del dominio
3. Agregar asociaciones (Manteniendo relaciones que deberían estar en la memoria del modelador)
4. Agregar atributos necesarios (depende de los requisitos)
39
Modelo del Dominio:Agregar Asociaciones
Asociación: es una relación entre tipos (o más bien instancias de tipos) que indican alguna conexión significativa e interesante
40
Asociaciones posibles en unmodelo del dominio
Modelo del dominio con N clases conceptuales, puede tener N (N-1) asociaciones posibles
Provoca “ruido visual”, lo hace inconmprensible
Ejemplo:3 clases conceptuales
6 asociaciones bidireccionales
41
Criterio para identificarasociaciones útiles (necesito-conocer)
Relación que es necesaria conservar durante algún tiempo (milisegundos o años, dependiendo del contexto)
Es decir, mantener en memoria una relación entre objetos. Ejemplo:
42
Tipos de asociaciones a incluiren el Modelo del Dominio
1. Asociaciones útiles (ó necesito-conocer)Ejemplo de asociación útil y no útil
2. Asociaciones derivadas de la lista de asociaciones comunes
43
Lista de Asociaciones ComunesCategoría
1. A es una parte física de B
2. A es una parte lógica de B
3. A está contenido físicamente en B
4. A está contenido lógicamente en B
Ejemplo
1. Cajon-Registro (o más concretamente, Caja de Venta), Ala-Avion
2. LineaDeVenta-Venta, EtapaVuelo-RutaVuelo
3. Registro-Tienda, Articulo-Estantería, Pasajero-Avion
4. DescripcionDelArticulo-Catalago, Vuelo-PlanificacionVuelo
44
Lista de Asociaciones ComunesCategoría
5. A es una descripción de B
6. A es una línea de una transacción o informe de B
7. A se conoce/registra/ recoge/informa /captura en B
8. A es miembro de B
Ejemplo
5. DescripcionDelArticulo-Articulo, DescripcionDelVuelo-Vuelo
6. LineaDeVenta-Venta, TrabajoMantenimiento-RegistroDeMantenimiento
7. Venta-Registro, Reserva-ListaPasajeros
8. Cajero-Tienda, Piloto-CompañiaAerea
45
Lista de Asociaciones ComunesCategoría
9. A es una sub-unidad organizativa de B
10.A utiliza o gestiona B
11.A se comunica con B
12.A está relacionado con una transacción B
Ejemplo
9. Departamento-Tienda, Mantenimiento-CompañíaAerea
10.Cajero-Registro, Piloto-Avion
11.Cliente-Cajero, AgenteDeReservas-Pasajero
12.Cliente-Pago, Pasajero-Billete
46
Lista de Asociaciones ComunesCategoría
13.A es una transacción relacionada con otra transacción B
14.A está al lado de B
15.A es propiedad de B
16.A es un evento relacionado con B
Ejemplo
13.Pago-Venta, Reserva-Cancelacion
14.LineaDeVenta-LineaDeVenta, Ciudad-Ciudad
15.Registro-Tienda, Avion-CompañíaAerea
16.Venta-Cliente, Venta-Tienda, Salida-Vuelo
47
EjemploS: Asociaciones del Dominiodel caso de uso “Procesar venta”
1. Asociaciones “necesito-conocer” según los requisitos (asociaciones evidentes)
Registro Registra Venta
Venta Pagada-mediante Pago
CatalogoDeProductos RegistraEspecificacionDelProducto
48
2. Lista de Asociacionescomunes en el dominio de Ventas
Categoría
1. A es una parte física de B
2. A es una parte lógica de B
3. A está contenido físicamente en B
4. A está contenido lógicamente en B
5. A es una descripción de B
6. A es una línea de una transacción o informe de B
Sistema
1. Registro-Caja
2. LineaDeVenta-Venta
3. Registro-Tienda, Articulo-Tienda
4. EspecificacionDelProducto-CatalagoDeProductos
5. EspecificacionDelProducto-Articulo
6. LineaDeVenta-Venta
49
2. Lista de Asociacionescomunes en el dominio de Ventas
Categoría
7. A se conoce/registra/ recoge/informa /captura en B
8. A es miembro de B
9. A es una sub-unidad organizativa de B
10.A utiliza o gestiona B
11.A se comunica con B
Sistema
7. (Completa) Venta-Tienda, (Actual) Venta-Registro
8. Cajero-Tienda
9. No aplica
10.Cajero-Registro, Encargado-Registro, Encargado-Cajero (talvez no aplicable)
11.Cliente-Cajero
50
2. Lista de Asociacionescomunes en el dominio de Ventas
Categoría
12.A está relacionado con una transacción B
13.A es una transacción relacionada con otra transacción B
14.A está al lado de B
15.A es propiedad de B
Sistema
12.Cliente-Pago, Cajero-Pago
13.Pago-Venta
14.LineaDeVenta-LineaDeVenta
15.Registro-Tienda
51
Modelo del Dominio de Procesar venta
52
FASE II. Análisis del problema
Incluye:
• Modelo de casos de uso
• Modelo del dominio–Tareas:
• Identificar clases conceptuales
• Agregar asociaciones
• Agregar atributos necesarios
–Resultado: Modelo del dominio o diagrama de clases del análisis (sin métodos)
53
Pasos para el Modelado del Dominio
1. Listar clases conceptuales candidatas
2. Representar las clases conceptuales en un modelo del dominio
3. Agregar asociaciones (Manteniendo relaciones que deberían estar en la memoria del modelador)
4. Agregar atributos necesarios (depende de los requisitos)
54
Modelo del Dominio de Procesar venta
55
Modelo del Dominio:Agregar atributos necesarios
Atributo: valor de datos lógico de un objeto
Atributos a incluir en el Modelo del DominioAquellos que los requisitos de información sugieren la necesidad de registrar
Ejemplo:Recibo recopila la información de una venta, e incluye:• Fecha
• Hora de inicio
Información necesaria para:• Realizar devoluciones (necesario conocer el período)
• Estadísticas de venta en un período
• Decidir el número de cajeros durante horas pico
56
Tipos de Atributos VálidosAtributos válidos son atributos simples
Tipos de Dato primitivos• Numero
• String, Texto
• Boolean
• Fecha, Hora
Tipos de Dato definidos por el usuario (clases)• Direccion
• NumeroDeTelefono
• Color
• NumeroDeSeguridadSocial
• CodigoDelProducto
57
Tipos de Datos No Primitivos (clases)
Registro es un tipo de dato complejo, ya que tiene sus propios atributos. No debería ser un atributo.
1..*
58
Tipos de Datos No Primitivos (clases)
El Destino de un vuelo es un Aeropuerto
Aeropuerto es una clase conceptual independiente
Aeropuerto es un concepto complejo
59
Tipos de atributos en el Modelo del Dominio y el Diagrama de Clases
Atributos en el Modelo del Dominio son tipos de datos simples (primitivos)
Atributos en el Diagrama de Clases, pueden ser tipos de datos complejos o clases
60
Tipos de Datos de los AtributosConjunto de valores para los cuales no es significativa una identidad única
Ejemplos:
No es significativo distinguir entre• Diferentes instancias del número 5
• Diferentes instancias del String “cereal”
• Diferentes instancias de un Número de teléfono con el mismo número
Si es significativo distinguir entre dos instancias de “Alumno” que tienen el nombre “Juan Pérez”, ya que podrían ser dos diferentes alumnos con el mismo nombre
61
Regla empírica“Hacerlo atributo si se considera de manera natural como un número, String, booleano, fecha u hora”
En caso de duda, definir una clase conceptual
62
Clases de Tipos de DatoNo Primitivos
Un tipo de atributo puede representarse como una clase no primitiva por derecho propio en el Modelo del Dominio
63
¿Cuándo definir tipos de datos primitivos como una clase no primitiva?
Está compuesto por secciones separadasNombre de persona (nombre, apellido)
Dirección (calle, avenida, número, municipio)
Código del Producto (Fabricante, producto, país, etc.)
64
¿Cuándo definir tipos de datos primitivos como una clase no primitiva?
Tiene operaciones asociadas al tipo de datoValidar las dos letras del carné de un alumno
Determinar el fabricante de un producto
65
¿Cuándo definir tipos de datos primitivos como una clase no primitiva?
Tiene atributosPrecio de oferta, tiene una fecha de inicio y otra de fin
66
¿Cuándo definir tipos de datos primitivos como una clase no primitiva?
Es una cantidad con unidad de medidaPago posee una cantidad con una unidad monetaria
LineaDeVenta posee una cantidad con una unidad de medida (libras, kilogramos, onzas, etc.)
67
¿Cuándo definir tipos de datos primitivos como una clase no primitiva?
Es una abstracción de uno o más tipos con estas cualidades
articuloID es una generalización de los tipos de productos UPC y EAN
68
Representación de las clases de tipos de dato
Depende de cómo se este utilizando el modelo del dominio, como una herramienta de comunicación, y de la importancia de los conceptos en el dominio
69
Modelar cantidades yunidades de medida
70
Atributos de las clases conceptuales del Modelo del Dominio del caso de uso “Procesar Venta”
Pagocantidad
EspecificacionDelProductodescripcion
id
precio
Ventafecha
hora
LineaDeVentacantidad
Tiendadireccion
nombre
71
Modelo del Dominio
Dominio: Caja de Venta
Caso de Uso: “Procesar venta”
72
73
Ejemplo de Creación del Modelodel Dominio: Jugar Dados
Pasos para elaborar el Modelo del Dominio:
1. Listar clases conceptuales candidatas
2. Representar las clases conceptuales en un modelo del dominio
3. Agregar asociaciones
4. Agregar atributos necesarios
74
Ejemplo de Análisis OO
“Jugar Dados”
75
Fase II. Análisis del problemaModelo de Casos de Uso
Diagrama de casos de uso incluye: casos de uso, actores y sistema.
Descripción de los Casos de uso: procesos del dominio relacionados
76
Caso de uso: Jugar Dados• En un juego de dados, un jugador toma dos dados
y los lanza. Luego, se suman los valores de las caras superiores de los dados. Si el valor es 7 gana el juego, de lo contrario pierde.
• Descripción del Caso de uso: Jugar Dados1. El jugador inicia el juego de dados
2. El sistema solicita al jugador lanzar los dados
3. El jugador lanza los dados
4. El sistema muestra el resultado de sumar las caras de los dados (si el resultado es siete gana, sino pierde), y el mensaje de si ganó o perdió
77
Identificar operaciones del sistema (DSS: Diagramas de Secuencia del Sistema)
Invocaciones del usuario sobre el sistema
78
Modelo del Dominio
79
Pasos para Modelo del dominio1. Listar clases conceptuales
Utilizando la identificación de frase nominales en la descripción del juego
Juego de Dados - clase conceptual
Jugador - clase conceptual
Dado - clase conceptual
Valor de la cara - atributo de cada dado
Resultado - Es la suma de las caras
80
1. Listar clases conceptualesUtilizando la lista de categorías de clases conceptuales
Dado � objeto físico
Jugador � rol
Lanzamiento de Dados � proceso
Reglas del Juego � reglamento de operación
Analizando conceptos...Valor de la cara es un atributo de “Dado”
Resultado se obtiene a partir de los valores de cara
Lanzamiento de dados es un proceso (opcional)
Conocer las Reglas del Juego no son requisito
81
2. Representar clases conceptuales en un modelo del dominio
Clases conceptuales identificadasJuego de Dados
Jugador
Dado
82
3. Agregar asociacionesAsociaciones “necesito-conocer”
Jugador lanza Dados
De la lista de categorías comunes de asociaciónJugador es una parte lógica del Juego de Dados
Dado es una parte lógica del Juego de Dados
Dado esta contenido lógicamente en Juego de Dados
Jugador utiliza Dado
4. Agregar atributos• Clase Dado: valor de la cara