Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los datos se organizan como datos Los datos son puros detallados
sintetizados
Los datos cubren un marco de tiempo Los datos cubren un marco de tiempo
mucho mayor mucho menor.
Los datos se organizan para consultas Los datos están normalizadas y
rápidas estructuradas de tal forma que
provean un
almacenamiento eficiente de la
información
• Clase - el nombre
• Responsabilidades - lo que sabe y lo que hace
• Collaboraciones - quiénes le ayudan
Ejemplo: May
Jun
12
19
17
15
10
20
Food Gas
35
Jan
Food Gas
35
30
Jan
30 Jan 12 17
25
30 Jan 12 17
25
25 30 Feb 17 11
20 Jun
Feb 17 11
15
20 20 25 May Jun
Mar 22 29
15 20 Apr May
Mar 22 29
10
15
10 15 Mar Apr Apr 14 10
5 10 Mar Apr 14 10
Feb
May 12 17
10
5
0 5
5
Food Jan
Feb
May 12 17
0
Food Gas Motel
0 Gas
Motel
Food Gas Jan Jun 19 15
0
Food Gas Motel Motel Jun 19 15
Servidor
Lógica Lógica Lógica DBMS
Aplic. Aplic. Aplic.
• Problema:
* Componentes remotos debieran aparecer como
locales
* Cliente y Servidores no debieran preocuparse de la
comunicación
No es
Servicio Abstracto directamente
Cliente accesible al
servicio Cliente
Proxy representa
al Servicio y
Proxy Servicio
asegura el
1 1
acceso a él
servicio servicio
(misma interfaz)
servicio
Pre-proceso y
asignación
servicio
Post-proceso y
devolución
• Problema:
* Muchos servicios pueden ser remotos
* Las ubicaciones de estos pueden cambiar
* Se deben poder agregar, cambiar y suprimir servicios
dinámicamente
* Los detalles debieran quedar ocultos para el
desarrollador
Servicio_p
llama
llama
Call_servicio_p Servicio_i
El desarrollador implementa
las clases del núcleo y sus
aplicación interacciones reusando
funcionalidad ya existente
• Problemas:
* No existe metodología:
° cómo desarrollarlos
° Cómo usarlos
* Curva de aprendizaje
° En general lleva mucho tiempo y esfuerzo aprender a utilizar
un marco de forma eficiente. Cuanto más complejo el
marco, mayor es la curva de aprendizaje
PSM
(distintas Modelo Modelo Modelo Otros
plataformas) Corba Java/EJB XML/SOAP Modelos
y
Deployment Corba Java/EJB XML/SOAP Otros
Curso 2007 Ingeniería de Software Diseño 45
Desarrollo basado en componentes (1)
• Surgimiento a fines de los ’90, originado por el no
cumplimiento de las expectativas de reutilización que
había prometido el desarrollo OO, debido a:
* Clases demasiado detalladas, específicas y ligadas a las
aplicaciones
* Muchas veces hacía necesario disponer del código fuente
=> dificultades en comercialización
• Visión de componente: proveedor de servicios
* Entidad ejecutable e independiente
* Publica interfaz de servicios suministrados y las
interacciones son a través de ésta
* Generalmente también define interfaz de servicios que
debe proveer el sistema que lo utiliza
Curso 2007 Ingeniería de Software Diseño 46
Desarrollo basado en componentes (2)
• Distintos niveles de abstracción (Meyer ’99)
* Funcional: implementa una sola función (ej.matematica)
* Agrupamiento casual: colección de entidades
relacionadas débilmente (ej. declaraciones de datos,
funciones)
* Abstracciones de datos: abstracción o clase de datos
en OO (crear, modificar, acceder)
* Abstracciones de clúster: grupo de clases relacionadas
que trabajan conjuntamente (también marcos de trabajo
o frameworks)
* Abstracciones de sistemas: sistema autocontenido
(también COTS)
Curso 2007 Ingeniería de Software Diseño 47
4. Características de un buen
Diseño
• Independencia de Componentes
• Tratamiento de Anomalías
• Prevención de Fallas
10
9
8
7
6
5
4
3
2
1
20 25 30 35
Complejidad del Diseño del Sistema
Curso 2007 Ingeniería de Software Diseño 55
Reducir Complejidad (2)
• Generalidad de la solución
* con menos componentes más simples resolver el
problema
* nivel de abstracción
• Adaptabilidad de la solución
* cubrir con una solución distintos problemas
particulares
G1 G2 G3
G2 G3 {G4,G5} {A4,A5}
G4 G5 A5 {A1,G5} {A2,G5}
Conjunto de Corte
Arbol de Faltas
• Validación Matemática
• Medir la Calidad del Diseño
• Comparar Diseños
* Una Especificación, Varios Diseños
* Tablas Comparativas
• Revisiones de Diseño
* Preliminar
* Crítica
* De Programas