Professional Documents
Culture Documents
espacio de la solucin Modelado integrado de propiedades estticas y dinmicas del mbito del problema
Facilita construccin, mantenimiento y
reutilizacin
Facilita la transicin entre distintas fases Favorece el desarrollo iterativo del sistema Disipa la barrera entre el qu y el
Problemas en OO
...Los conceptos bsicos de la OO se conocen desde hace dos dcadas, pero su aceptacin todava no est tan extendida como los beneficios que esta tecnologa puede sugerir ...La mayora de los usuarios de la OO no utilizan los conceptos de la OO de forma purista, como inicialmente se pretenda. Esta prctica ha sido promovida por muchas herramientas y lenguajes que intentan utilizar los conceptos en diversos grados
--Wolfgang Strigel
Problemas en OO
Un objeto contiene datos y operaciones que operan sobre los datos, pero ... Podemos distinguir dos tipos de objetos degenerados: Un objeto sin datos (que sera lo mismo que una biblioteca de funciones) Un objeto sin operaciones, con slo operaciones del tipo crear, recuperar, actualizar y borrar (que se correspondera con las estructuras de datos tradicionales) Un sistema construido con objetos degenerados no es un sistema verdaderamente orientado a objetos
Fundamentos de Modelado OO
Objetos
Objeto = unidad atmica que encapsula estado y comportamiento La encapsulacin en un objeto permite una alta cohesin y un bajo acoplamiento Un objeto puede caracterizar una entidad fsica (coche) o abstracta (ecuacin matemtica)
Objetos
El Modelado de Objetos permite representar el ciclo de vida de los objetos a travs de sus interacciones En UML, un objeto se representa por un rectngulo con un nombre subrayado
Otro objeto Un objeto
Otro objeto ms
Objetos
Ejemplo de varios objetos relacionados:
Cuenta Corriente 101 Juan Banco de Valencia
Objetos
Objeto = Identidad + Estado + Comportamiento El estado est representado por los valores de los atributos Un atributo toma un valor en un dominio concreto
Un coche Azul 979 Kg 70 CV ...
Estado
El estado evoluciona con el tiempo Algunos atributos pueden ser constantes El comportamiento agrupa las competencias de un objeto y describe las acciones y reacciones de ese objeto Las operaciones de un objeto son consecuencia de un estmulo externo representado como mensaje enviado desde otro objeto
Comportamiento
Ejemplo de interaccin:
Un Objeto Operacin 1
1: Un mensaje
Operacin 2
Otro Objeto
Comportamiento
Los mensajes navegan por los enlaces, a priori en ambas direcciones Estado y comportamiento estn relacionados Ejemplo: no es posible aterrizar un avin si no est volando. Est volando como consecuencia de haber despegado del suelo
Persistencia
La persistencia de los objetos designa la capacidad de un objeto trascender en el espacio/tiempo Podremos despus reconstruirlo, es decir, tomarlo de memoria secundaria para utilizarlo en la ejecucin (materializacin del objeto) Los lenguajes OO no proponen soporte adecuado para la persistencia, la cual debera ser transparente, un objeto existe desde su creacin hasta que se destruya
Comunicacin
Un sistema informtico puede verse como un conjunto de objetos autnomos y concurrentes que trabajan de manera coordinada en la consecucin de un fin especfico El comportamiento global se basa pues en la comunicacin entre los objetos que la componen
Comunicacin
Categoras de objetos: Activos - Pasivos Cliente Servidores, Agentes Objeto Activo: posee un hilo de ejecucin (thread) propio y puede iniciar una actividad Objeto Pasivo: no puede iniciar una actividad pero puede enviar estmulos una vez que se le solicita un servicio Cliente es el objeto que solicita un servicio. Servidor es el objeto que provee el servicio solicitado
Comunicacin
Los agentes renen las caractersticas de clientes y servidores Son la base del mecanismo de delegacin Introducen indireccin: un cliente puede comunicarse con un servidor que no conoce directamente
Comunicacin
Ejemplo con objeto agente:
Servidor 1 2: Un agente 1: Un cliente 3: Servidor 2
El Concepto de Mensaje
Objeto 1 1: Mensaje A Objeto 2
Diagrama de Clases
Clasificacin
El mundo real puede ser visto desde abstracciones diferentes (subjetividad) Mecanismos de abstraccin:
Clases
La clase define el mbito de definicin de un conjunto de objetos Cada objeto pertenece a una clase Los objetos se crean por instanciacin de las clases
Clases: Encapsulacin
La encapsulacin presenta dos ventajas bsicas:
Se protegen los datos de accesos indebidos El acoplamiento entre las clases se disminuye Favorece la modularidad y el mantenimiento
Los atributos de una clase no deberan ser manipulables directamente por el resto de objetos
Clases: Encapsulacin
Los niveles de encapsulacin estn heredados de los niveles de C++:
(-) Privado : es el ms fuerte. Esta parte es totalmente invisible (excepto para clases friends en terminologa C++)
(#) Los atributos/operaciones protegidos estn visibles para las clases friends y para las clases derivadas de la original (+) Los atributos/operaciones pblicos son visibles a otras clases (cuando se trata de atributos se est transgrediendo el principio de encapsulacin)
Asociacin
La asociacin expresa una conexin bidireccional entre objetos Una asociacin es una abstraccin de la relacin existente en los enlaces entre los objetos
Univ. de Murcia : Universidad Un enlace Antonio : Estudiante
Estudiante
Asociacin
Ejemplo:
casado-con mujer
0..1 0..1
marido
emplea-a
jefe Administra
0.. 1
empleado
Asociacin
Especificacin de multiplicidad (mnima...mxima)
1 0..1 M..N * 0..* 1..* Uno y slo uno Cero o uno Desde M hasta N (enteros naturales) Cero o muchos Cero o muchos Uno o muchos (al menos uno)
Generalizacin
Permite gestionar la complejidad mediante un ordenamiento taxonmico de clases Se obtiene usando los mecanismos de abstraccin de Generalizacin y/o Especializacin La Generalizacin consiste en factorizar las propiedades comunes de un conjunto de clases en una clase ms general
... Generalizacin
Nombres usados: clase padre - clase hija. Otros nombres: superclase - subclase, clase base - clase derivada Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones (y asociaciones) de la clase padre estn disponibles en sus clases hijas
... Generalizacin
Vehculo
Veihculo Terrestre
Vehculo Areo
Coche
Camin
Avin
Helicptero
Herencia Mltiple
Uso disciplinado de la herencia mltiple: clasificaciones disjuntas con clases padre en hojas de jerarquas alternativas
Bpedo nro patas Con Pelos cubertura Con Plumas cobertura cobertura Con Escamas Animal comida Carnvoro comida Cuadrpedo nro patas Herbvoro
Conejo
Polimorfismo
El trmino polimorfismo se refiere a que una caracterstica de una clase puede tomar varias formas El polimorfismo representa en nuestro caso la posibilidad de desencadenar operaciones distintas en respuesta a un mismo mensaje Cada subclase hereda las operaciones pero tiene la posibilidad de modificar localmente el comportamiento de estas operaciones
Polimorfismo
Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta
Anim al dorm ir()
?
dormir
?
Len Oso T igre
Polimorfismo
Animal dormir()
Dormir() { }
Len dormir()
Dormir() { sobre el vientre }
Oso dormir()
Tigre dormir()
Dormir() { en un rbol }
Casos de Uso
Los Casos de Uso (Ivar Jacobson) describen bajo la forma de acciones y reacciones el comportamiento de un sistema desde el p.d.v. del usuario Permiten definir los lmites del sistema y las relaciones entre el sistema y el entorno Los Casos de Uso son descripciones de la funcionalidad del sistema independientes de la implementacin Comparacin con respecto a los Diagramas de Flujo de Datos del Enfoque Estructurado
Casos de Uso
Los Casos de Uso cubren la carencia existente en mtodos previos (OMT, Booch) en cuanto a la determinacin de requisitos Los Casos de Uso particionan el conjunto de necesidades atendiendo a la categora de usuarios que participan en el mismo Estn basado en el lenguaje natural, es decir, es accesible por los usuarios
Casos de Uso
Ejemplo:
Actor A
Caso de Uso A
Caso de Uso B
Actor B
Casos de Uso
Actores: Principales: personas que usan el sistema Secundarios: personas que mantienen o administran el sistema Otros sistemas: sistemas con los que el sistema interacta La misma persona fsica puede interpretar varios papeles como actores distintos El nombre del actor describe el papel desempeado
Casos de Uso
Los Casos de Uso se determinan observando y precisando, actor por actor, las secuencias de interaccin, los escenarios, desde el punto de vista del usuario Un escenario es una instancia de un caso de uso Los casos de uso intervienen durante todo el ciclo de vida. El proceso de desarrollo estar dirigido por los casos de uso
Comunicacin
Actor
Caso deUso
Caso de UsoHij o
Cliente
Transferencia
Transferencia en Internet
RF- <id del requisito> Versin Autores Fuentes Objetivos asociados Descripcin
Postcondicin Excepciones
Rendimiento
<nombre del requisito funcional> <numero de versin y fecha> <autor> <fuente de la versin actual> <nombre del objetivo> El sistema deber comportarse tal como se describe en el siguiente caso de uso { concreto cuando <evento de activacin> , abstracto durante la realizacin de los casos de uso <lista de casos de uso>} <precondicin del caso de uso> Paso Accin 1 {El <actor> , El sistema} <accin realizada por el actor o sistema>, se realiza el caso de uso < caso de uso RF-x> 2 Si <condicin>, {el <actor> , el sistema} <accin realizada por el actor o sistema>>, se realiza el caso de uso < caso de uso RF-x> 3 4 5 6 n <postcondicin del caso de uso> Paso Accin 1 Si <condicin de excepcin>,{el <actor> , el sistema} }<accin realizada por el actor o sistema>>, se realiza el caso de uso < caso de uso RF-x>, a continuacin este caso de uso {continua, aborta} 2 3 Paso Cota de tiempo 1 n segundos 2 n segundos <n de veces> veces / <unidad de tiempo> {sin importancia, importante, vital} {puede esperar, hay presin, inmediatamente} <comentarios adicionales>
Diagramas de Interaccin
Interaccin
Los objetos interactan para realizar colectivamente los servicios ofrecidos por las aplicaciones. Los diagramas de interaccin muestran cmo se comunican los objetos en una interaccin Existen dos tipos de diagramas de interaccin: el Diagrama de Colaboracin y el Diagrama de Secuencia
Diagramas de interaccin
El Diagrama de Secuencia es ms adecuado para observar la perspectiva cronolgica de las interacciones El Diagrama de Colaboracin ofrece una mejor visin espacial mostrando los enlaces de comunicacin entre objetos El D. de Colaboracin puede obtenerse automticamente a partir del correspondiente D. de Secuencia (o viceversa)
Diagrama de Secuencia
Muestra la secuencia de mensajes entre objetos durante un escenario concreto Cada objeto viene dado por una barra vertical El tiempo transcurre de arriba abajo Cuando existe demora entre el envo y la atencin se puede indicar usando una lnea oblicua
Diagrama de Secuencia
: Encargado :WInPrstamos :Socio :Video :Prstamo prestar(video, socio) verificar situacin socio verificar situacin video
Diagrama de Colaboracin
Son tiles en la fase exploratoria para identificar objetos La distribucin de los objetos en el diagrama permite observar adecuadamente la interaccin de un objeto con respecto de los dems La estructura esttica viene dada por los enlaces; la dinmica por el envo de mensajes por los enlaces
Diagrama de Colaboracin
:Socio
4: registrar prstamo
:Prstamo
Mensajes
Un mensaje desencadena una accin en el objeto destinatario Un mensaje se enva si han sido enviados los mensajes de una lista (sincronizacin):
A.1, B.3 / 1:Mensaje
Diagrama de Estados
Diagrama de Estados
Ejemplo de un Diagrama de Estados para la clase persona:
contratar
desempleado
Diagrama de Actividad
El Diagrama de Actividad es una especializacin del Diagrama de Estado, organizado respecto de las acciones y usado para especificar:
Ejemplos
Buscar Bebida [ hay caf ] [ hay zumo ] Poner caf en filtro Aadir agua al depsito Coger taza Coger zumo [ no hay caf ] [ no zumo ]
Encender mquina / cafetera.On Caf en preparacin indicador de fin Servir caf Beber
... Ejemplos
Pasaj ero Vendedor Airline
Solicitar pasaje
Seleccionar vuelo
Emitir billete
Diagrama de Componentes
Diagrama de Componentes
Los diagramas de componentes describen los elementos fsicos del sistema y sus relaciones Muestran las opciones de realizacin incluyendo cdigo fuente, binario y ejecutable
...Diagrama de Componentes
Los componentes representan todos los tipos de elementos software que entran en la fabricacin de aplicaciones informticas. Pueden ser simples archivos, paquetes de Ada, bibliotecas cargadas dinmicamente, etc. Las relaciones de dependencia se utilizan en los diagramas de componentes para indicar que un componente utiliza los servicios ofrecidos por otro componente
...Diagrama de Componentes
Interfaz de Terminal Control y Anlisis
Gestin de Cuentas
Rutinas de conexin
Acceso a BD
...Diagrama de Componentes
No existe un proceso de software universal. Las caractersticas de cada proyecto (equipo de desarrollo, recursos, etc.) exigen que el proceso sea configurable
Diseo
Implementacin
Pruebas
P re lim ina ry Ite ra tion (s) ite r. #1 ite r. #2 ite r. #n ite r. # n+ 1 ite r. # n+2 ite r. #m ite r. #m +1
Esfuerzo: Duracin:
5% 10%
20% 30%
65% 50%
10% 10%
Contenidos
Introduccin Modelo del Negocio Modelo de Requisitos Modelo de Anlisis Modelo del Diseo Patrones GRASP y otras heursticas UP vs XP
Mtodo
Mtodo
Establece cmo abordar de un modo sistemtico la construccin de software. Se describe el problema y la solucin mediante un conjunto de modelos. Los mtodos ayudan pero no aseguran el xito. Un mtodo es fruto de la experiencia Importante conocer las limitaciones de un mtodo.
Mtodo
TECNOLOGIA
(OO, UML, Rational Rose)
ORGANIZACION
PROCESO
(RUP)
Tecnologa
Conceptos
Orientacin a objetos Diseo estructurado
Notacin
Especificaciones formales Plantillas Diagramas
Proceso Software
Un proceso bien definido es necesario para desarrollar sistemas software de manera repetible y predecible Permite un negocio sostenible y que puede mejorar en cada nuevo proyecto, incrementando la eficiencia y productividad de la organizacin G. Booch
Proceso Software
Un proceso software debe especificar: la secuencia de actividades a realizar por el equipo de desarrollo: flujo de actividades productos que deben crearse: qu y cundo asignacin de tareas a cada miembro del equipo y al equipo como un todo proporcionar heursticas criterios para controlar el proceso
Proceso Software
Basados en casos de uso Debe ser iterativo e incremental.
Conviene centrarse en los aspectos crticos en las primeras iteraciones para minimizar riesgos. Rpida retroalimentacin
Establecer un proceso marco: Cada empresa de desarrollo debe crearse su propio proceso.
Proceso Software
Procesos giles o Ligeros vs. Procesos Pesados Extreme Programming (XP) vs Unified Process (UP). Proceso pesado
Muchos artefactos creados en un ambiente burocrtico Muchas actividades realizadas con rigidez y control Planificacin detallada a largo plazo Predictivos en vez de adaptativos
Un proceso simple
Simple, eficaz y pequeo: fcil de aprender y usar. Combinacin de proceso de Craig Larman con modelado del negocio. Util para pequeos y medianos proyectos y para un primer proyecto OO. Dirigido por los casos de usos. Desarrollo iterativo e incremental
Existen dificultades?
descubrir y especificar casos de uso apropiados
cmo organizar y manejar los casos de uso
Es necesario establecer un conjunto de principios para guiar la identificacin, descripcin y organizacin de los casos de uso
Etapa Inicial
Suponemos que se ha realizado. Estudio de necesidades de la empresa, ver si es factible, alternativas, anlisis de riesgos, oportunidad. Definicin de objetivos del proyecto Planificacin, recursos, presupuesto. Debemos continuar?
Etapa Inicial
Duracin una semana Reuniones para captura de requisitos Se identifican actores, objetivos usuario, casos de uso Casos de uso escritos en formato breve, excepto unos pocos que se consideran claves. Se identifican riesgos Escribir borrador documento Visin y Especificacin Complementaria Prototipado Arquitectura candidata alto nivel Plan para primera iteracin
Procesos de Negocio
Una organizacin tiene una serie de objetivos que satisface a travs de Procesos de Negocio Elementos de un proceso de negocio:
Flujo de Tareas, Agentes, Informacin y Reglas Negocio
datos
RN3
tarea5
tarea4
RN2
Ejemplo
Objetivos Estratgicos Satisfacer pedido de cliente Subobjetivos Procesos del Negocio Incrementar las ventas un 25%
...
Casos de Uso del Negocio Registrar pedido Fabricar productos Gestionar almacn
Generar pedidos a proveedor
Fabricar producto
Gestionar almacen
Proveedor
Escenario:
aspecto de comportamiento de la colaboracin
Diagrama de Proceso:
workflow que realiza el caso de uso del negocio
1. El cliente realiza un pedido que incluir la fecha del pedido, los datos del cliente y los productos solicitados. 2. El comercial revisa el pedido (completndolo si es necesario) y le da curso, envindolo al jefe tcnico para que realice el anlisis del mismo. 3. El jefe tcnico analiza la viabilidad de la fabricacin de cada producto del pedido por separado.
- si el producto pedido est en el catlogo, se acepta la fabricacin del mismo, - en caso contrario, el producto es especial, y el jefe tcnico estudia su fabricacin
- si sta es viable, la fabricacin del producto especial es aceptada, - si no es viable, el producto no ser fabricado.
Rol Externo
Roles Internos
Creamos escenarios para mostrar la colaboracin entre los agentes, distinguimos entre flujos bsicos y alternativos:
Escenarios: diagramas de secuencia (objetos son roles)
* *
darCursoPedido()
estudiarPedido() * analizarFabricacionProducto()
planificarFabricacion()
informarAnalisisPedido()
aceptarPedido()
Flujos de actividades
Mostrar flujo del proceso mediante diagramas de proceso
diagramas de actividades con calles que corresponden a roles
Una actividad puede necesitar ser descrita mediante otro diagrama de actividad: Objetivos y Subobjetivos. Pueden existir procesos de negocio que no requieran interaccin entre agentes.
: JefeProduccion
: Producto Especial
[ SI ] :Plantilla de Fabricacion
Ordenar fabricacion
p: Pedido [aceptado]
Planificar produccion
Fin OK
Reglas de Negocio
Reglas de restriccin
Especifican polticas o condiciones que restringen la estructura y comportamiento de las informaciones
Estmulo-Respuesta Restriccin de operacin Restriccin de estructura
Reglas de derivacin
Especifican polticas o condiciones para inferir nuevos hechos a partir de otros.
Glosario
... Objeto de Informacin: Pedido
Atributos Codigo de pedido Fecha de solicitud Fecha lmite de entrega Conjunto de {Producto} Cliente Importe total Estado Actual
...
Actividad: Ordenar fabricacion
Reglas Estructurales, de Derivacin y Restricciones - El cdigo de pedido identificarExistencia el de unvocamente el pedido, y ser asignado automticamente por
sistema - La fecha de solicitud ser anterior a la fecha lmite de entrega. - Un pedido contendr al menos un producto; no existe lmite mximo de productos. - Un pedido siempre ser solicitado por uno y solamente un cliente. - El importe total ser calculado a partir del precio de cada producto pedido. Clase del Dominio : - por especificar -
Postcondiciones: Se ha comunicad al cliente la aceptacin de su pedido. El estado del pedido es aceptado. Caso de Uso : - por especificar-
Trazabilidad
...
Modelado de Requisitos
Objetivo: Se establecen los requisitos funcionales y no funcionales del sistema. A partir del modelo del negocio (si se hace) se construye el modelo de casos de uso y el modelo conceptual.
Tipos de Requisitos
Funcionales No Funcionales
Usabilidad Fiabilidad Rendimiento Adaptabilidad, Mantenimiento, Configurable Herramientas Inplementacin
Modelado de Requisitos
Extraer los casos de uso del sistema a partir de las actividades que aparecen en los diagramas de actividades. Establecer el modelo conceptual a partir de las informaciones incluidas en los diagramas de actividades. Agrupar casos de uso derivados de un diagrama de procesos en un diagrama de casos de uso
Modelo de Requisitos
De los diagramas de proceso...
rol
actor actividad
Caso de Uso
objeto
Modelo de Requisitos
Se define un actor para cada rol del diagrama de proceso que interactua con el sistema: actor primario. Se crea un caso de uso por cada actividad que es soportada por el sistema: Un caso de uso produce un resultado de valor a un actor. Niveles de granularidad?
Segn la importancia
Primario, secundario u opcional
JefeTecnico
Planificar Produccion
JefeProduccion
Actores Asunciones
Postcondiciones
Pasos
Trazabilidad
Plantilla usecases.org
Actor Principal Usuarios e Intereses Precondiciones Postcondiciones Escenario Principal (Flujo Bsico) Extensiones (Flujos Alternativos) Requisitos especiales Tecnologa y Lista Variaciones de datos Frecuencia Cuestiones abiertas
Dnde?
En reuniones de captura de requisitos
Quin?
Usuarios finales, clientes, desarrolladores
Cmo? (Herramientas)
Herramientas de requisitos web-enabled integradas con un procesador de texto (texto cdu) y herramientas CASE UML (diagramas de cdu)
Glosario
Captura trminos y definiciones
Visin
Define visin del producto de los stakeholders, en trminos de sus necesidades y caractersticas
Especificacin Complementaria
Funcionalidad
Abarca varios casos de uso Ej. Almacenar informacin errores, Cualquier uso requiere autenticacin de usuario
Visin
Oportunidad Definicin del problema Alternativas Descripcin stakeholders Objetivos usuario Perspectiva del producto Beneficios del producto Lista de caractersticas del producto Coste y precio Otros requisitos y restricciones
Para algunas aplicaciones conviene ms una lista de caractersticas que casos de uso
Ej. Servidor de aplicacin
Qu hacemos primero?
1. Escribir un borrador poco elaborado de la Visin en la Etapa Inicial 2. Identificar objetivos del usuario y casos de uso para ellos 3. Escribir casos de uso y comenzar Especificacin Complementaria 4. Refinar Visin
Dnde?
Inicio en reuniones de requisitos, se completa despus
Quin?
Analista de sistemas, Arquitecto Software, Usuarios
Cmo?
Herramientas de requisitos web-enabled integradas con un procesador de texto
Iteraciones
Dirigidas por el riesgo
Asociar a cada caso de uso un nivel de riesgo e importancia para el negocio
Comenzar pronto con la programacin Realizar pruebas Rpida retroalimentacin Se obtiene la arquitectura en las primeras iteraciones
Cajero
Cliente
Registrar Productos
Casos de Uso
Gerente Inicia
Gestion Usuarios
Administrador Sistema
Pasos:
1. A: El cliente llega al TPV con los artculos. 2. A: El cajero registra el identificador de cada artculo. 3. S: El sistema obtiene el precio de cada artculo y aade la informacin a la transaccin de venta. 4. A: Al acabar el cajero indica la finalizacin de la introduccin de artculos. 5. S: El sistema calcula el total de la compra y lo muestra. 6. A: El Cajero le dice al cliente el total. 7. A: El cliente realiza el pago.
Extensiones:
10. Diferentes formas de pago: efectivo, tarjeta
Una clase conceptual para cada informacin relevante. De la especificacin del diccionario se extraen:
atributos, asociaciones, restricciones
Se refina a lo largo de las iteraciones Ms vale que sobren clases que falten
Categoras de clases
Objetos fsicos Especificaciones o descripciones de cosas Lugares Transacciones Lneas de una transaccin
Modelo Conceptual
Descrita por 1 0..1
Registra venta de
1 Catalogo Productos 1 Usado-por 0..n Contiene 1..n Describe 0..n Almacena 0..n 1 Item Producto
Lineas Venta cantidad 1..n Contenidas en 1 Venta 1 1 pagado por 1 Pago 1 iniciada por 1 Cliente capturada en 1 0..n
Producto Especial
Producto Catalogado
Catalogo
Cliente
Identificar Asociaciones
Se incluyen aquellas:
para la que el conocimiento de la relacin deba mantenerse algn tiempo derivadas de la Lista de Asociaciones
Lista de Asociaciones
A es parte fsica de B A es parte lgica de B A est fsicamente contenida en B A est lgicamente contenida en B A es una descripcin de B
Identificar Asociaciones
Lista de Asociaciones (continua)
A es una lnea de una transaccin o informe B A es conocido/registrado/informado/capturado en B A es miembro de B A es una subunidad organizacional de B A usa o maneja a B A comunica con B A est relacionado a una transaccin B A es el siguiente a B A es apropiado por B A es un evento relacionado con B
Identificar Asociaciones
Encontrar clases conceptuales es ms importante que encontrar asociaciones. Se debe dedicar ms tiempo a encontrar clases conceptuales que asociaciones Centrarse en las asociaciones necesita-conocer Muchas asociaciones dificultan la comprensin de los diagramas Evitar asociaciones redundantes En la implementacin se notar que falta o sobra alguna asociacin
Asociaciones en TPV
A es parte fsica de B
TPV-Caja
A es parte lgica de B
LineaVenta-Venta
A es una descripcin de B
EspecificacionProducto-Item
Asociaciones en TPV
A es una lnea de una transaccin o informe B
LineaVenta-Venta
A es conocido/registrado/informado/capturado en B
Venta-TPV
A es miembro de B
Cajero-Tienda
A usa o maneja a B
Cajero-TPV, Gerente-TPV
A comunica con B
Cliente-Cajero
A es el siguiente a B
LineaVenta-LineaVenta
A es apropiado por B
TPV-Tienda
Atributos
Son valores de tipos de datos: Identidad no tiene sentido Tipos Primitivos: Boolean, Date, Numero, Time, String Tipos no primitivos: Direcciones, Colores, Nmero Tlfno, Nmero Seguridad Social, DNI, Cdigo de Producto Universal, Cdigo Postal,.. Tipos no primitivos se deben modelar como clases si:
Estn formados por varias partes Son aplicables operaciones Tiene otros atributos Es una cantidad con una unidad
Prototipo Inicial
Utilizar los casos de uso. Incluye las interfaces de usuario Sirve para validar los requisitos: analista y usuarios llegan a un acuerdo sobre la funcionalidad y vocabulario. Prototipo desechable Fcil de construir con herramientas visuales.
Cajero
Realizar Venta
Cliente
:Sistema
CONTRATOS
1. Cliente llega al TPV con item 2. Cajero inicia venta 3. Cajero introduce id item 4. Sistema registra lnea de venta y presenta parcial Cajero repite pasos 3 y 4 hasta que acaba 5. Sistema presenta total 6. Cajero requiere pago 7. ...
Contratos
Descripcin detallada del comportamiento del sistema en trminos de cambios de estado a los objetos en el Modelo Conceptual, tras la ejecucin de una operacin del sistema. Definicin basada en pre y postcondiciones Las postcondiciones indican
Creacin y Eliminacin de objetos Creacin o Eliminacin de asociaciones Modificacin de atributos
Contratos
Las postcondiciones sern completas y se descubrirn detalles en el diseo. Las postcondiciones nos obligarn a modificar el modelo conceptual Son redundantes los contratos con los casos de uso?
Contratos
tiles cuando hay mucha complejidad y la precisin es un valor aadido Normalmente no son necesarios, si un equipo escribe un contrato para cada caso de uso es una seal de unos casos de uso muy pobres o falta de colaboracin con los expertos o que les gusta escribir documentacin innecesaria En la prctica la mayora de detalles se pueden inferir de los casos de uso de modo obvio, aunque obvio es un concepto muy resbaladizo.
Contratos
1. Identificar operaciones del sistema 2. Para operaciones complejas y quiz sutiles en sus resultados, o que no estn claras en el caso de uso, construir un contrato 3. Describir postcondiciones
Creacin/Eliminacin de instancias Creacin/Eliminacin de asociaciones Modificacin de atributos
Contrato IntroducirItem
Nombre: introducirItem (itemID: itemID, cantidad: integer) Responsabilidades: Registrar la venta de un producto y agregarlo a la venta. Desplegar la descripcin del producto y su precio. Tipo: Sistema Notas: Acceso rpido a la base de datos Excepciones: Si CUP no vlido, indicar error. Precondiciones: El sistema conoce itemID Postcondiciones: - Si era una nueva venta, un objeto Venta se cre y se asoci al objeto TPV. - Se cre una instancia lv de LineasVenta y se asoci a la venta. - Se asign cantidad a lv.cantidad - lv se asoci a una EspecificacinProducto segn itemID
Diagramas de Interaccin
Crear estos diagramas es una actividad de AOO/DOO muy creativo. Diseo de colaboraciones es la parte ms difcil. Punto de partida para la programacin. Crear diagramas en parejas. Crear diagrama de clases en paralelo
Diagrama de Colaboracin
2: [nuev venta] crear() 1: IntroducirProducto(cup, cant) GUI : TPV 6: AddLineaVenta(esp, cant) : Venta
7: crear(esp,cant)
: Catalogo Productos
lv : Lineas Venta
: Producto
Diagrama de clases
1) Se refina el modelo conceptual inicial que se convierte en un modelo de clases del anlisis. 2) Se extrae comportamiento de las clases a partir de los diagramas de interaccin. 3) Refinar los diagramas de interaccin de modo que nuevos objetos participarn en la interaccin. 4) Refinar el diagrama de clases.
Patrones GRASP
Describen los principios bsicos de asignacin de responsabilidades a clases. Distribuir responsabilidades en la parte ms difcil del diseo OO. Consume la mayor parte del tiempo. Patrones GRASP: Experto, Creador, Bajo Acoplamiento, Alta Cohesin, Controlador, Polimorfismo, No hables con extraos
Responsabilidades
Contrato u obligacin de una clase. Dos categoras:
Conocer
datos encapsulados privados existencia de objetos conectados datos derivados o calculados
Hacer
Algo a uno mismo Iniciar una accin en otros objetos Controlar y coordinar actividades en otros objetos
Responsabilidades
Responsabilidades hacer se pueden inferir de las asociaciones y atributos del modelo conceptual. Puede asignarse a varias clases y mtodos dependiendo de su granularidad. Diagramas de interaccin muestran elecciones en la asignacin de responsabilidades.
Experto
Cmo se asignan responsabilidades? Asignar una responsabilidad a la clase que tiene la informacin necesaria para cumplimentarla Heursticas relacionadas
Distribuir responsabilidades de forma homognea No crear clases dios
Beneficios
Se conserva encapsulacin: Bajo acoplamiento Alta Cohesin
Ejemplo 1
Quin es el responsable de conocer el total de una venta?
Venta fecha nota contiene 1..1 1..* Descrita por LineaVenta cantidad
Ejemplo 1
Quin es el responsable de conocer el total de una venta?
: Venta : LineaVenta : Producto
total
subtotal
precio
Ejemplo 2
: LectorCorreo :Buzon : Carpeta :Mensaje MensajesEntre(f1,f2)
mensajesEntre(f1,f2)
esFecha(f1,f2)
Creador
Quin es responsable de crear una instancia de una cierta clase? Asignar a la clase B la responsabilidad de crear instancias de una clase A si:
B es una agregacin de objetos de A B contiene objetos de A B registra instancias de A B utiliza hace un uso especfico de los objetos de A B proporciona los datos de inicializacin necesarios para crear un objeto de A
Creador
Quin debera crear una instancia de la clase LineaVenta?
Una instancia de la clase Venta es una agregacin de instancias de la clase LineaVenta
Beneficios:
Bajo acoplamiento
Bajo Acoplamiento
Cmo reducir las dependencias entre clases? Asignar responsabilidad de modo que se consiga un bajo acoplamiento Es un patrn evaluativo No considerarlo de forma independiente, sino junto a los patrones Experto y Alta Cohesin. Beneficios: Facilita i) reutilizacin, ii) comprensin de las clases y iii) mantenimiento
Tipos de dependencias
Existe acoplamiento entre una clase A y otra B si:
i) A posee un atributo de tipo B ii) A tiene un mtodo con un parmetro, una variable local o devuelve un valor de tipo B iii) A es subclase directa o indirecta de B iv) A implementa la interfaz B (Java)
Ejemplo
:Aplicacion efectuarPago : TPV crear agregarPago : Pago :Venta
Ejemplo
:Aplicacion efectuarPago : TPV : Pago :Venta
efectuarPago crear
Alta Cohesin
Canto estn de relacionadas las responsabilidades de una clase? Asignar una responsabilidad de modo que la cohesin siga siendo alta Baja Cohesin: Clases con responsabilidades que deberan haber delegado. Son clases dios. Difciles de comprender, reutilizar, mantener. Ejemplo anterior: En el primer caso TPV tendra muchas operaciones, mejor delegar.
Alta Cohesin
Muy baja cohesin:
Clase AccesoBD-RPC Mezcla de funcionalidad
Baja cohesin:
Clase AccesoBD Muchos mtodos
Alta cohesin:
Clase AccesoBD + Familia de clases relacionada
Cohesin moderada:
Clase Empresa: conoce empleados e informacin financiera
Alta Cohesin
Beneficios
Mejora reutilizacin Clases ms claras, se comprenden mejor Mejora mantenimiento
Controlador
Quin se encarga de atender los eventos del sistema Asignar responsabilidad de manejar eventos externos a un controlador: i) el sistema global ii) la organizacin iii) agente que interviene en la tarea iv) un manejador de todos los eventos de un caso de uso La misma clase controlador para todos los eventos de un mismo caso de uso.
Controlador
Las clases de la interfaz no deben encargarse de realizar las tareas asociadas a un evento. Deben delegarlas a un controlador. Separar interfaz de la lgica de aplicacin. Las operaciones del sistema en la capa del dominio. Cundo debemos escoger un controlador de caso de uso?
Cuando con las otras alternativas obtenemos controladores saturados Es posible llevar el estado del proceso actual
Ejemplo controlador
:AppletTPV :TPV :Venta
introProd
introProducto(cant,cod)
crearLineaProd(cant,cod)
Ejemplo
:AppletTPV :Venta
introProd
crearLineProd(cant,cod)
Controlador
Evento Introducir producto i) TPV, ii) Tienda, iii) Cajero, iv) Manejador Compra Beneficios:
Favorece la reutilizacin Posibilidad de capturar informacin sobre el estado del proceso
Polimorfismo
No realizar anlisis de casos de uso basado en el tipo de los objetos.
if tipoPago = Cheque then autorizarPagoCheque else if tipoPago = Efectivo then autorizarPagoEfectivo else if tipoPago = Tarjeta then autorizarPagoTarjeta else if
Almacenamiento
Interfaz de usuario y la lgica de acceso a los datos son las partes esenciales de la aplicacin
Aplicaciones aplicacin. pasivas con poca lgica de
La lgica del modelo es dominante sobre la lgica del acceso a los datos. Se realiza un anlisis y diseo OO completo Se crean clases para el modelo Separacin del modelo de la vista Se favorece la reutilizacin y extensibilidad
i) Anlisis
Representan abstracciones del dominio de la aplicacin: Cuenta, Libro, Automovil, Parrafo,..
ii) Implementacin
Describen abstracciones de datos necesarias para los algoritmos en la implementacin Array, Lista, Pila,...
Documento de requisitos
Trminos que aparecen frecuentemente Trminos para los que aparecen definiciones explcitas Trminos que se suponen bien conocidos, aunque no se definan No considerar categoras gramaticales