Sie sind auf Seite 1von 26

Departamento de Sistemas Informticos y Programacin

Curso de doctorado 1999-2000


Patrones de diseo orientado a objetos
Software de calidad
Factores externos (los que ven los usuarios)
# Correccin
# Robustez/Fiabilidad
# Rendimiento/Eficiencia

Factores internos (los que ven los desarrolladores)


# Modularidad
# Flexibilidad/Extensibilidad
# Reusabilidad
# Compatibilidad (a travs de interfaces estndares/uniformes)
# Mantenimiento

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 2


Arquitectura software
El software es complejo y sujeto a cambios
Es necesario estructurar el software, definir una
arquitectura software:
# Cmo se juntan los componentes software
# De qu forma funciona el sistema
# Cules son los lmites del software (definicin de las
interfaces entre los componentes)

? La arquitectura es el elemento estable ante los cambios en


el ciclo de vida del software
? La clave est en separar interfaces de implementaciones

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 3


Arquitectura software

La separacin entre interfaces e implementacin


# Asla de los cambios
# Sirve de mecanismo (compilable) de unin entre
arquitectura e implementacin

Arquitectura Interfaces Implementacin

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 4


Arquitectura software
El papel de la arquitectura es proporcionar informacin de
diseo a los desarrolladores, para que stos puedan hacer
cambios y correcciones al software, sin romper la
arquitectura.
En cada escala de un sistema software se puede definir una
arquitectura y una implementacin:
# La implementacin es la realizacin de los componentes software
# La arquitectura es la abstraccin que define las interfaces entre
componentes y ayuda a los desarrolladores y mantenedores del
sistema a entender cmo se juntan los componentes
N La arquitectura no se limita al nivel de sistema (arquitectura de
sistemas)

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 5


Paradigmas de ingeniera software
Programacin estructurada
Separacin de diseo y codificacin
Asunciones:
# La mayor parte de los errores se producen durante el diseo de software
# Los requisitos son estables y bien conocidos (!!!)
El diseo se puede hacer de modo descendente (top-down)
Separacin de modelo de proceso y modelo de datos

Anlisis de
Diseo Programacin
requisitos

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 6


Paradigmas de ingeniera software
Programacin orientada a objetos
Proceso iterativo e incremental a travs de 3 elementos fundamentales:
Anlisis OO, Diseo OO y Programacin OO
Varias metodologas: Booch, Jacobson, Rumbaugh, Scher-Mellor, UML
Asunciones:
# Los objetos del dominio son las entidades ms estables del sistema
# Los objetos son entidades tangibles: el modelado con objetos reduce el hueco
semntico entre los modelos de tecnologa software y los modelos del dominio
de negocio

Mezcla modelos de procesos y datos


# Para minimizar y localizar el impacto de los cambios
N Falta la discriminacin entre interfaces e implementacin (!!!)

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 7


Paradigmas de ingeniera software
Arquitectura Software orientada a objetos
Asuncin principal:
# Los problemas del software se deben a una pobre definicin de los lmites
del software

Elementos:
# Arquitectura OO: Cmo se disea el software para gestionar el cambio y
la complejidad del software
Define varios lmites: categoras de objetos, particiones, interacciones, etc.
# Interfaces: especificacin detallada de los lmites arquitecturales
Por ejemplo, con CORBA IDL
# Implementacin: componentes software encapsulados por las interfaces,
que proporcionan funcionalidad y rendimiento

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 8


Paradigmas de ingeniera software
Arquitectura Software orientada a objetos
Al anlisis OO, un modelo de arquitectura OO aade:
# Flexibilidad para que el sistema evolucione ante nuevos requisitos
# proporcionando agrupaciones lgicas de los componentes software
# y una especificacin de cmo interaccionan

Las interfaces determinan qu mensajes puede haber en el sistema:


# Flujo de control:
permite estudiar cuellos de botella y extensibilidad del sistema
# Flujo de datos:
accesibilidad de la informacin y relaciones entre componentes sw

Uso de patrones como soporte a la arquitectura

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 9


Paradigmas de ingeniera software
Arquitectura Software orientada a objetos
Tratamiento de errores
# (Parte frecuentemente olvidada hasta que no se llega a la codificacin)
# Debe ser considerada una parte de la descripcin de las interfaces

Arquitecturas basadas en servicios


# Slo se puede acceder a un objeto por su interfaz (esto es, sin tener ningn
conocimiento sobre sus detalles de implementacin)
# Ventajas:
Los servicios estn totalmente desacoplados de los clientes que los usan
Los servicios se pueden compartir por varios clientes => reusabilidad
Posibilidad de reemplazar fcilmente un servidor por otro que ofrezca la misma
interfaz => evolucin y migracin
Apropiado en sistemas distribuidos

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 10


Anlisis, diseo y programacin OO
Los mtodos de OO se pueden aplicar en distintas fases del ciclo de vida del
software:
# El anlisis OO es el proceso de descubrimiento

Donde un equipo de desarrolladores modela y entiende los requisitos del sistema


# El diseo OO es el proceso de invencin y adaptacin
Donde el equipo de desarrolladores crea las abstracciones y mecanismos necesarios
para satisfacer los requisitos de comportamiento del sistema determinados durante el
anlisis
# La programacin OO es el proceso de realizacin
Donde el equipo de programadores codifica el diseo en un lenguaje de
programacin (y para un entorno determinado)
N El diseo OO, a diferencia de la programacin es relativamente
independiente del lenguaje de programacin usado

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 11


Diseo OO
Objetivos
Descomponer el sistema en mdulos
# identificar la arquitectura software mediante agrupaciones
los grupos deben maximizar la cohesin y minimizar el acoplamiento
Determinar las relaciones entre mdulos
# identificar y especificar las dependencias entre mdulos
herencia, composicin, uso, etc.
# determinar la forma de comunicacin entre mdulos
variables globales, llamadas a funciones, memoria compartida, paso de mensajes, RPC

Especificar las interfaces de los mdulos


# Las interfaces deben estar bien definidas
facilita la prueba independiente de los mdulos
mejora la comunicacin e integracin del grupo

Describir la funcionalidad de los mdulos


# Informalmente (comentarios o documentacin) o formalmente

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 12


Diseo OO
Conceptos
Composicin/Descomposicin
Abstraccin
# Modularidad
# Ocultacin de la informacin
# Jerarquas de mquinas virtuales
Separacin de Poltica y Mecanismo
Identificacin de subconjuntos y familias de programas
Reusabilidad
? El principal propsito de estos conceptos de diseo es gestionar la
complejidad del sistema software mejorando los factores de calidad del
software

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 13


Diseo OO
Composicin/Descomposicin
Conceptos comunes a todas las tcnicas de diseo software
Proceso:
1. Seleccionar un problema (una parte o todo el sistema)
2. Descomponer el problema seleccionado en uno o ms componentes usando el
mtodo de diseo elegido (funcional, estructurado, OO)
3. Determinar y representar cmo interactan los componentes (composicin)
4. Repetir los pasos 1 a 3 hasta que se cumpla un criterio de terminacin

Cuestin: A qu nivel de abstraccin deben especificarse los mdulos?


Subsistemas
Mquinas virtuales
Clases
Funciones

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 14


Diseo OO
Abstraccin
Motivacin: modo de gestionar la complejidad
# enfatizando las caractersticas esenciales
# suprimiendo los detalles de implementacin
Mecanismos de abstraccin tradicionales:
Abstraccin de nombres
Abstraccin de expresiones
Abstraccin procedimental (subrutinas)
Abstraccin de datos (ADTs)
Abstraccin de control (iteradores, bucles, multitarea, etc.)

En OO:
Modularidad
Ocultacin de la informacin
Mquinas virtuales

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 15


Diseo OO
Modularidad
Motivacin
Caracterstica esencial de todo buen diseo:
# permite reducir la complejidad global del sistema descentralizando la
arquitectura software
ejemplo: divide y vencers
# Mejora la escalabilidad y la productividad (los mdulos pueden
desarrollarse independientemente por varias personas)
separacin de asuntos

Para ser tiles y reusables, los mdulos deben tener:


# Interfaces abstractas bien especificadas
# Gran cohesin y poco acoplamiento

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 16


Diseo OO
Modularidad
Criterios para evaluar mtodos de diseo:
# Descomposicin modular
P.ej.: diseo funcional descendente (top-down)
# Composicin modular
Se pueden construir nuevos sistemas a partir de los existentes?
P.ej.: diseo ascendente (bottom-up)
# Entendimiento
Es fcil entender los mdulos por separado? cun acoplados estn los mdulos?
# Continuidad modular
Pequeos cambios en la especificacin afectan a un nmero limitado de mdulos
# Proteccin modular
Los problemas en ejecucin estn confinados a un nmero pequeo de mdulos
relacionados
# Compatibilidad modular
Los mdulos tienen interfaces bien definidos, uniformes o estndar

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 17


Diseo OO
Modularidad
Principios para asegurar diseos modulares:
# Soporte del lenguaje para unidades modulares
Los mdulos deben corresponder a unidades sintcticas del lenguaje usado

# Pocas interfaces
Cada mdulo debe comunicarse con tan pocos como sea posible

# Interfaces pequeas (acoplamiento dbil)


Si dos mdulos se comunican, deben intercambiar la menor informacin posible

# Interfaces explcitas
Cuando dos mdulos se comunican, debe estar claro en el texto de uno o de ambos

# Ocultacin de la informacin
Toda la informacin sobre un mdulo debe ser privada al mdulo a menos que se haya
declarado especficamente como pblica

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 18


Diseo OO
Ocultacin de la informacin
Motivacin:
# Los detalles de las decisiones de diseo que puedan cambiar deben
ocultarse detrs de interfaces abstractas
# Es una manera de mejorar la abstraccin
Informacin que suele ocultarse:
# Representaciones de datos
# Algoritmos
# Formatos de E/S
# Mecanismos y polticas
# Interfaces de mdulos de bajo nivel

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 19


Diseo OO
Mquinas virtuales
Motivacin:
# Reducir la complejidad global: un sistema software se puede
descomponer en unidades de mquinas virtuales
Una mquina virtual proporciona un conjunto de
instrucciones extendido:
# Tipos de datos adicionales e instrucciones asociadas
# Extensiones incrementales a APIs existentes
Ejemplos:
# Arquitectura de computadores:
compilador -> ensamblador -> cdigo objeto -> microcdigo -> puertas,
trasnsitores, seales, ...
# Pilas de protocolos de comunicacin: OSI, Internet

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 20


Diseo OO
Mquinas virtuales
Aspectos a tener en cuenta:
# Asegurar un rendimiento adecuado
En el nivel N el rendimiento no ser bueno si no lo es por debajo de ese nivel
# Eliminar dependencias entre niveles
Para incrementar la reutilizacin
N Por eso se suelen usar arquitecturas en capas o niveles de abstraccin

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 21


Diseo OO
Mquinas virtuales
Jerarqua de mquinas virtuales:
# Una jerarqua reduce las interacciones entre mdulos al restringir la
topologa de las relaciones entre mquinas virtuales
# Ventajas:
Facilita el desarrollo independiente de niveles o capas
Aisla las ramificaciones de un cambio
Permite el prototipado rpido
# Relaciones que definen jerarquas:
Usa
En todos los mtodos de diseo
Est-compuesto-de
Es-Un
Particular a la OO
Tiene-Un

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 22


Diseo OO
Polticas y mecanismos separados
Motivacin:
# Separacin de aspectos entre qu/cuando y cmo

Varias polticas se pueden implementar mediante un conjunto de


mecanismos compartidos
# P. ej.: planificacin de procesos y paginacin en memoria virtual

La misma poltica se puede implementar con varios mecanismos:


# P.ej. un flujo de bytes fiable, sin duplicacin puede ser proporcionado por
varios protocolos de comunicacin
N Qu es poltica y qu un mecanismo es una cuestin de perspectiva

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 23


Diseo OO
Familias de programas y subconjuntos
Una familia de programas es una coleccin de mdulos
reusables que forman el armazn de una aplicacin:
# Subsistema de E/S de flujos (streams) de Unix System V
# Armazones de GUI como Java AWT

Motivacin:
# Las familias de programas son tiles para implementar
subconjuntos
# Los subconjuntos reducen costes, tiempo, recursos humanos, etc.
Facilitan la extensin y contraccin del sistema software
Promociona la reusabilidad y anticipa cambios potenciales

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 24


Diseo OO
Familias de programas y subconjuntos
Las familias de programas soportan:
# Diferentes servicios para mercados diferentes
alfabetos diferentes, formatos de E/S diferentes, etc.
# Diferentes plataformas hardware o software
compiladores o sistemas operativos
# Diferentes compromisos en recursos
velocidad vs. memoria
# Diferentes recursos internos
comparticin de estructuras de datos y bibliotecas de rutinas
# Diferentes eventos externos
interfaz de dispositivo de E/S Unix
# Compatibilidad hacia atrs

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 25


Programacin OO
Tcnicas y mecanismos
Abstraccin de datos y ocultacin de la informacin
Tipos activos (ms que pasivos)
Genericidad
Herencia y vinculacin dinmica
Programacin por contrato
Aserciones y manejo de excepciones
? Estas tcnicas permiten mejorar la calidad del software

JPM, UCM 1999 Diseo de arquitecturas SW orientado a objetos 26

Das könnte Ihnen auch gefallen