Tema 3
Motivacin
z Un p proyecto y software no consiste slo en p programar g . z Necesitamos saber cules son las necesidades del cliente.
{ Identificar Id tifi l los requisitos, i it anotarlos, t l analizarlos, li l validarlos. lid l
Indice
Qu
Anlisis
Desventajas:
No N permite it iteraciones. it i
Cmo
Diseo
Los requisitos se congelan al principio del proyecto. No existe un proyecto enseable hasta el final del proyecto.
Codificacin
MCV en Cascada
Pruebas e integracin
Operacin O y Mantenimiento
[ ti ] [retiro]
5
Planificacin
Anlisis
Diseo
Incremento Planificacin Anlisis Diseo Extraer clases reutilizables Prototipo Pruebas Eval. Eval cliente
[ms iteraciones]
Indice
z Modelos M d l d de Ci Ciclo l d de Vid Vida.
Anlisis y Diseo
Problema vs vs. Solucin
Anlisis (qu) Diseo (cmo)
Dominio de la Solucin
Avin
BDPlanVuelo C t lT fi ControlTrafico
8
PlanVuelo
z Diseos modulares modulares. z Efectos laterales mnimos(encapsulamiento) ( p ) z Extensibilidad. z Fcil de modificar. z Orientado a datos. z Explota la herencia (jerrquico). z Reutilizacin R ili i d de clases. l
9
Ventajas
z Mdulos con fuerte cohesin interna y escaso acoplamiento externo (sin variables globales, ) z Facilita el funcionamiento en entorno multiprocesador (objetos distribuidos) z Correspondencia directa con el mundo real z Prototipos rpidos z Herramientas y bibliotecas muy amplias z Aplicaciones construidas enganchando objetos z Mejor comprensin y mantenimiento z Apropiado para aplicaciones dirigidas por eventos.
10
Inconvenientes
zI Impactos t d f desfavorables bl sobre b espacio i y tiempo ti d de ejecucin. z Forma de pensar diferente: curva de aprendizaje lenta. z Herencia y ligadura dinmica dificultan las pruebas. z Difcil seguir el flujo de ejecucin (e.j. llamdas implicitas a constructores, conversiones implcitas, etc.) z Frameworks grandes y complicados (e.j. MFCs).
11
z Validar.
12
z La especificacin de requisitos i it d describe ib el l sistema, en lenguaje natural. z Sirve de comunicacin entre desarrolladores y clientes, contrato. z El modelo de anlisis usa notacin formal (ej.: Z, , Alloy) y) o semi-formal (ej.: UML). z Sirve de comunicacin entre desarrolladores. 13
Modelo de Anlisis
Modelos basados en Clases Diagramas de Clases. Diagramas de Paquete. Modelos CRC. CRC Diagramas de Interaccin. Modelos basados en Comportamiento Diagramas de Estado. Diagramas de Secuencia. Secuencia
14
z Modelo funcional: casos de uso y escenarios. z Modelo de Objetos: diagramas de clases y objetos. z Modelo M d l dinmico: di i di diagramas d de secuencia, i
15
Casos de uso
zD Describen ib qu hace h el l sistema i t d d el desde l punto t de d vista i t de un observador externo. z Actores: quin interacta con el sistema?. Tambin pueden ser otros sistemas. p z Un escenario es un ejemplo de lo que ocurre cuando uno o varios i actores interactan i con el l sistema. i zC Caso de d uso: conjunto j t de d escenarios i ( (secuencias i d de interaccin de los actores y el sistema)
16
Casos de uso
z Pasos:
{ Identificar los lmites (alcance) del sistema. { Identificar los actores principales. { Para cada uno, identificar sus objetivos. { Definir casos de uso que satisfagan sus objetivos.
17
Interesados y objetivos:
{ Cajero: Quiere anotaciones precisas y rpidas de precios, sin errores. { Cliente: Cli t Q Quiere i que el l pago sea rpido id con el l mnimo i esfuerzo. f Q i Quiere una prueba de compra para justificar devoluciones. { Compaa: Quieren almacenar las transacciones y satisfacer los intereses de los clientes. { Comercial: Quiere que se le actualicen sus comisiones por venta. { Agencias de impuestos gubernamentales: Quieren recolectar impuestos de cada venta. Puede que haya varias agencias (nacionales, regionales, etc.) t ) { Servicios de Autorizacin de Pagos (por tarjetas de crdito): Quiere recibir peticiones digitales de autorizaciones en el formato y protocolo correcto.
Precondiciones:
{ El cajero se ha identificado y autentificado.
18
Escenario principal de Exito: 1. Llega un clienta al TPV con bienes o servicios que comprar. 2. El cajero comienza una nueva compra. 3. El cajero introduce un identificador de producto. 4 El sistema 4. i t registra i t el l elemento l t y presenta t una descripcin d i i del d l mismo, i su precio i y total actual. Se calcula el precio de una lista de reglas. El cajero j repite p los p pasos 3-4 hasta q que no hay y ms elementos. 5. El sistema presenta el total con los impuestos calculados. 6. El cajero le dice el total al cliente, y le pide que pague. 7 El cliente paga y el sistema procesa el pago. 7. pago 8. El sistema registra la venta completada y manda la informacin a los sistemas externos de inventario y contabilidad. 9. El sistema genera el recibo. 10. El cliente se va.
19
22
z Analizar los documentos de anlisis, anlisis o casos de uso. uso z Clases que pertenecen al espacio de la solucin vs. espacio p del p problema. z Aislar los sustantivos:
{ Entidades externas: producen o consumen informacin que usa el sistema. { Cosas (informes, seales, etc.): informacin que necesita el sistema. { Sucesos o eventos que ocurren durante la operacin del sistema. { Papeles que desempean los usuarios. { Unidades organizacionales. { Sitios que establecen el contexto y la funcin global del sistema. { Estructuras que definen una clase de objetos o clases relacionadas.
23
Especific.Producto
Descripcion Precio ID 1 1..* 3contiene 1
Producto
contenido-en 1 * 1..* 1
1..* 3 describe *
Catlogo
3 Usado-por 1
Venta
fecha hora pagada-p por 1
capturada-en
3 almacena
Tienda
direccin nombre 1 contiene 1..* Atributos
Iniciada-por 1 1
Cliente
1 registra-ventas-en 1 1
Asociacin
24
P Pago
cantidad
Cajero
R i t Registro
Clasificacin de clases
z Tipos de clases:
{ De entidad (a.k.a. de modelo o de negocio). Son clases que persisten i d durante l la aplicacin. li i R Representan informacin relevante para la aplicacin. { De frontera (a.k.a. de contorno). Clases que crean la interfaz que el usuario ve y con la que interacciona. interacciona { De control. Realizan una unidad unidad de trabajo trabajo: : crean o actualizan objetos de entidad, validan datos, etc.
25
Cajero
TPV GUI
actor
actor
actor
Sistema Contabilidad
Calculador Impuestos
Calculo Precio
Registro Venta
Busqueda Elemento
1..*
Venta Elemento 26 Venta
Responsabilidad
Define el nombre/tipo de plano de planta Maneja la posicin del plano de planta Escala el plano de planta Incorpora paredes, puertas y ventanas
Colaborador
Pared
28
30
z Desarrollador
{Objetivo: j crear clase con interfaz clara y comprensible {Manera: ocultar detalles de implementacin {Beneficios: cambio de estructuras/algoritmos sin afectar {Coste: clases reutilizables ms caras a corto plazo
31
32
Descomposicin Funcional
z Mdulos construidos alrededor de las p operaciones z Datos globales o distribuidos entre mdulos z Entrada/Proceso/Salida z Organigramas de trabajo y flujo de datos
33
OOD
z Mdulos construidos alrededor de las clases z Clases escasamente acopladas, sin datos globales z Encapsulamiento y mensajes z Diagramas jerrquicos de clases
34
35
Identificar atributos
z El conjunto de atributos de una clase debe ser:
{Completo (contienen toda la informacin pertinente) {General (se aplican a todos los objetos de la clase) {Diferenciado (cada atributo representa un aspecto diferente de la clase)
36
Definir atributos
z Tipos Ti d de atributos t ib t
{Atmicos predefinidos (entero, real, carcter, pixel...) {Atmico enumerativo (color, da de la semana...) ) {Coleccin {Composicin (referencias objetos)
Identificar Mtodos
z Mtodo: algoritmo que utiliza y modifica los atributos de una clase z Un mtodo es desencadenado por un mensaje z Funcionalidad de la clase: conjunto de sus mtodos z El conjunto de mtodos debe ser:
{ Completo (realizan toda la funcionalidad de la clase) { General (se aplican a todos los objetos de la clase) { Diferenciado (cada mtodo debe ser simple y realizar una sola funcin)
38
Definir Mtodos
z Tipos Ti de d mtodos t d
{Modificador (asigna valor a un atributo) {Selector (devuelve el valor de un atributo) {Aplicable p a la clase ( (constructor) ) {Aplicable al objeto
Ejemplo
ElementoVenta
C tid d Entero Cantidad: E t getSubTotal() 1..* contenido-en 1 captura 1 1 ... finalizarVenta() introducirElemento(...) hacerNuevaCompra(...) realizarPago(...) 1 1 Busca-en catalogo descrito-por * 1 EspecificacionProducto Descripcion: Text Precio: Dinero ID: IDElemento ... 1 * 1..* 5contiene 1
Venta
Fecha: Date hora: Time completa: Logico
Catalogo g
... getEspecificacion(...) 1 5usa 1
Registro
Tienda
Direccin: Direccion nombre: Texto 1 anyadirVenta(...)
40
P Pago
Cantidad: Dinero
tiene 3Registra-completadas
Identificar Errores
z Qu puede salir mal durante la ejecucin de un mtodo? z Qu comprobaciones debe hacer cada mtodo? z Cmo interceptar y corregir las condiciones de error?
41
Patrones de Diseo
z Catlogo de soluciones que han probado ser buenas para ciertos problemas comunes de diseo. z Evita reinventar la rueda continuamente. zR Reutilizacin tili i de d buenas b prcticas, ti comn en otras t ingenieras. z Un patrn es una descripcin del problema y la esencia de su solucin, que se puede reutilizar en casos distintos. distintos z Los estudiaremos en el Tema 8.
42
Indice
z Modelos de Ciclo de Vida. z Anlisis. Anlisis z Diseo.
zNotaciones.
{UML
z Metodologas. Metodologas
43
UML
http://uml.org
z Unified Modeling Language Language. z Combinar y estandarizar una notacin para la descripcin de sistemas orientados a objetos a partir de los lenguajes de modelado ms conocidos:
{ Booch - OOD. OOD { Rumbaugh - OMT. { Jacobson - OOSE y Objectory.
UML
z Es un lenguaje grfico para visualizar visualizar, especificar especificar, construir y documentar las partes de un sistema de software desde distintos puntos de vista. z Ofrece una forma estndar de modelar sistemas software pudiendo utilizarse: software,
{ Con cualquier proceso de desarrollo. { A lo largo de todo el ciclo de vida. { Con C di distintas ti t t tecnologas l d de i implementacin l t i
z Puede usarse tambin en otras reas, , como la ingeniera de negocio, modelado de procesos, etc.
45
UML
z No es un mtodo, mtodo ni un proceso ni una metodologa metodologa. z No establece qu modelos construir. z Para un ptimo aprovechamiento, debe ser usado en un proceso:
{ guiado por casos de uso uso, { centrado en la arquitectura, { iterativo e { incremental.
46
UML
z UML es una familia de notaciones, tiles para describir distintos aspectos p p de un sistema:
{Esttico. Describe los elementos del sistema y sus relaciones. {Dinmico. Describe el comportamiento del sistema a lo largo del tiempo.
z Casos de Uso. Desde el punto de vista del usuario usuario.
47
UML
Tipos de Diagramas
UML
Modelos
48
Vistas
z Vista Vi t de d C Casos d de U Uso
{ Funcionalidad externa del sistema
z Vista Vi t Lgica L i
{ Estructura esttica y conducta dinmica del sistema
z Vista Vi t de d C Componentes t
{ Organizacin de las componentes
z Vista Vi t de d C Concurrencia i
{ Comunicaciones y sincronizacin
z Vista Vi t de d D Despliegue li
{ Arquitectura fsica
49
z Se p plasma en diagramas g
{ de Casos de Uso { de Actividad { de Secuencia
50
51
Vista Lgica
z Describe la funcionalidad interna z Dirigida a diseadores y desarrolladores z Define la estructura esttica
{Clases, objetos y relaciones
z Propiedades P i d d adicionales di i l
{Persistencia y concurrencia {Interfaces y estructura interna de las clases
52
Vista Lgica
z Se plasma en diagramas
{Estticos
z de Clases j z de Objetos
{Dinmicos
z de Estado z de Secuencia z de Colaboracin z de Actividad
53
Vista Lgica g
Diagramas estticos
Elemento
Diagrama ag a a de clases
Carbono Hidrgeno
:Hidrgeno
:Hidrgeno
Diagrama de Di d objetos
:Hidrgeno
:Carbono
:Carbono
:Hidrgeno
:Hidrgeno
:Hidrgeno
54
Vista Lgica
Diagrama g de Estados
[(info=driver.detectarDisco())!=NULL]/ disco=buscaDisco(info) [not driver. detectarAbierto()] NumActual = 1; C actual = disco.obtenerCancion(ordenActual) disco obtenerCancion(ordenActual) [dri iver.detectarA Abierto()]
Cerrado
e eject ()/ driver.cerrar () d ej ject ()/ driver.abrir () d )
endOfSong()/ NumActual+=1
Stop
Play
Pause()/ / Tpausa = driver.stop p()
C
[NumActual<= disco.numCanciones()]/ actual= disco.obtenerCancion (NumActual) driver.play(actual,0)
Abierto
P Pause
55
Vista Lgica g
Diagrama de Secuencia
56
Vista Lgica g
Diagrama de Colaboracin (comunicacin)
realizarPago(cantidad)
:Registro
1: realizarPago(cantidad)
:Venta
1.1: crear(cantidad)
:Pago
57
Vista Lgica g
Diagrama de Actividad
Put Coffee in Filter Put Filter in Machine Turn on Machine Add Water to Reservoir / coffeePot.turnOn Brew coffee light goes out Pour Coffee [found cola] Get cans of cola Drink [no cola]
58
Get Cups
Vista de Componentes
z Describe los mdulos del sistema y sus p dependencias. z Modelar la arquitectura software. z Dirigida Di i id a d desarrolladores. ll d z Se p plasma as a e en d diagramas. ag a as
{de Componentes
59
Vista de Componentes p
Ejemplo
60
http://www.agilemodeling.com/artifacts/componentDiagram.htm
Vista de Concurrencia
z Describe la divisin del sistema en procesos y procesadores z Dirigida a desarrolladores e integradores z Resuelve problemas de
{ uso eficiente de los recursos { ejecucin en paralelo (hilos) { comunicacin y sincronizacin de hilos
z Se plasma en diagramas
{ dinmicos { de Componentes { de Despliegue
61
Vista de Concurrencia
Ejemplo
:FactoryManager
job
:FactoryScheduler
A2,B2/2:completed(job) 1:start(job)
currentJob:TransferJob
<<local>> job
:FactoryJobMgr
B2:completed 1/B1:start(job)
A2:completed 1/A1:start(job)
:Robot
:Oven
62
Vista de Despliegue
z Muestra M t la l di distribucin t ib i f fsica i d del l sistema i t (ordenadores, dispositivos) y sus conexiones z Dirigida g a desarrolladores, , integradores g y probadores z Se plasma en
{el diagrama de Despliegue {el mapa de asignacin de componentes a la arquitectura fsica
63
Vista de Despliegue p g
Diagrama de Despliegue
64
Tipos de Diagramas
65
Tipos de Diagramas
Anlisis
Diseo
D. Casos de Uso. D. Secuencia del Sistema. D Clases Conceptuales D. Conceptuales. D. Clases Anlisis.
Indice
z Modelos de Ciclo de Vida. z Anlisis. Anlisis z Diseo. z Notaciones.
zMetodologas. Metodologas
67
Metodologas
z Una notacin no es suficiente. z Cmo se organiza el proyecto? (MCV) z Qu documentacin se genera? z Qu tcnicas se utilizan en cada fase? z Quin las realiza? z Herramientas de soporte?
68
Metodologas
Booch
( (OOAD) ) CASEIode (CCM) Coad-YourdonNi l (OOA,OOD) Nicola (OOA OOD) NE University (Demeter) Object Engin. (Fresco) Hewlett-Packard (Fusion) Graham (SOMA) Texas Instruments (IE\O) ICL (MTD) ParcPlace (OBA)
(OOSE) Olivetti (OGROUP) Martin-Odell (OOIE) TASKON (OORAM) ( ) Winter (OSMOSYS) Rumbaugh (OMT) LBMS (SE/OT) Shlaer/Mellor (OOSA) CCTA (SSADM) W Wirfs-Brock s oc (RDD) ( ) Lloyds Register (Z++)
Jacobson
69
Comienzo
Elaboracin tiempo
Construccin
Transicin
70
Visin
Esbozo de arqu.
funcionalidad inicial
Comienzo
Elaboracin
Construccin
Transicin
Iteraciones preliminares
Iteraciones de arquitectura
Iteraciones de desarrollo
Iteraciones de transicin
Release
Release ReleaseRel.
Release Release
71
72
Requisitos
Anlisis
Modelo de Anlisis
Diseo
Modelo de Diseo
Modelo de Despliegue g
Implementacin
Modelo de I l Implementacin t i
Prueba
Modelo de Pruebas
73
Diagramas de Objetos
Diagramas de Paquetes
Modelo de Anlisis
Diagramas de Casos de Uso Modelo de Casos de Uso Modelo de Anlisis Modelo De Diseo Modelo de D Despliegue li Modelo de Implementacin Modelo de Pruebas Diagramas de Clases Diagramas de Componentes Diagramas d Di de Despliegue Diagramas g de Secuencia Diagramas de Colaboracin Diagramas de Estado Diagramas de Actividad
75
Diagramas de Objetos
Diagramas de Paquetes
Modelo de Diseo
Diagramas de Casos de Uso Modelo de Casos de Uso Modelo de Anlisis Modelo De Diseo Modelo de D Despliegue li Modelo de Implementacin Modelo de Pruebas Diagramas de Clases Diagramas de Componentes Diagramas d Di de Despliegue Diagramas g de Secuencia Diagramas de Colaboracin Diagramas de Estado Diagramas de Actividad
76
Diagramas de Objetos
Diagramas de Paquetes
Modelo de Despliegue
Diagramas de Casos de Uso Modelo de Casos de Uso Modelo de Anlisis Modelo De Diseo Modelo de D Despliegue li Modelo de Implementacin Modelo de Pruebas Diagramas de Clases Diagramas de Componentes Diagramas d Di de Despliegue Diagramas g de Secuencia Diagramas de Colaboracin Diagramas de Estado Diagramas de Actividad
77
Diagramas de Objetos
Diagramas de Paquetes
Modelo de Implementacin
Diagramas de Casos de Uso Modelo de Casos de Uso Modelo de Anlisis Modelo De Diseo Modelo de D Despliegue li Modelo de Implementacin Modelo de Pruebas Diagramas de Clases Diagramas de Componentes Diagramas d Di de Despliegue Diagramas g de Secuencia Diagramas de Colaboracin Diagramas de Estado Diagramas de Actividad
78
Diagramas de Objetos
Diagramas de Paquetes
80
Bibliografa
z Applying A l i UML and d Patterns. P tt 2 d Edition 2nd Editi . Craig C i Larman, Prentice Hall, 2002. z Applying A l i UML in i the th Unified U ifi d Process. P Ivar I Jacobson, Rational Software. z Ingeniera I i del d l Software. S ft U enfoque Un f prctico ti 6 Edicin. R.S. Pressman, McGraw Hill. 2005. z Ingeniera I i del d l Software S ft O i t d a Objetos, Orientado Obj t Bruegge, Dutoit, Prentice Hall. 2002. z Anlisis A li i y Diseo Di Orientado O i t d a Objetos Obj t con UML y el Proceso Unificado. Schach. McGraw Hill. 2005 2005.
81