Vous êtes sur la page 1sur 5

10/04/2015

Estilos y Patrones
Arquitectnicos
Lic. Ariel Trellini

Llamando a las cosas por su nombre

Departamento de Ciencias e Ingeniera de la Computacin


Universidad Nacional del Sur
Arquitectura y Diseo de Sistemas 2

Estilos y Patrones Arquitectnicos

Estilos y Patrones Arquitectnicos

Bibliografa

Introduccin
Arquitectura
de Software

Software Architecture - Foundations, Theory


and Practice

Lic. Ariel Trellini DCIC UNS

Taylor, Medvidovic, Dashofy

Cmo un sistema se puede descomponer de la mejor forma posible


Cules son sus componentes
Cmo se comunican dichos componentes
Cmo fluye la informacin
Cmo los elementos de un sistema pueden evolucionar
independientemente
Cmo se puede describir todo esto a travs de notaciones formales e
informales

2009 - Wiley

A medida que los ingenieros de software fueron construyendo diferentes sistemas a


lo largo de muchos dominios de aplicacin, observaron que, bajo determinadas
circunstancias, ciertas decisiones de diseo regularmente resultan en soluciones
con propiedades superiores: ms elegantes, efectivas, eficientes, confiables,
evolucionables y escalables.

Software Architecture in Practice


3rd Edition

Esta experiencia y conocimiento comn se generaliz y fue adoptando

Bass, Clements, Kazman

distintas formas dependiendo del contexto de aplicacin con el fin de

2012 - Addison-Wesley

ser reutilizado: arquitecturas de software especficas de un dominio,


estilos arquitectnicos y patrones arquitectnicos
Arquitectura y Diseo de Sistemas 3

Lic. Ariel Trellini DCIC UNS

Arquitectura y Diseo de Sistemas 4

Estilos y Patrones Arquitectnicos Definiciones

Estilos y Patrones Arquitectnicos

Definiciones

Patrones de Diseo

Lmites difusos

Gua de alto nivel

El eje de scope no es
tan lineal como
parece

La comunidad OO ha estado explorando el uso de patrones de diseo para


describir abstracciones recurrentes en el desarrollo de software basado en
objetos
Generalmente en el marco de la Orientacin a Objetos
Se concentran en soluciones de diseo comunes aplicables a nivel de
clases, procedimientos y estructuras de datos.
Expresan esquemas para definir estructuras de diseo y sus relaciones con
las que construir un componente de software.
Catlogos ms conocidos

Arquitectura y Diseo de Sistemas 5

Lic. Ariel Trellini DCIC UNS

Lic. Ariel Trellini DCIC UNS

GoF: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma,


Helm, Johnson, Vlissides)
GRASP: General Responsibility Assignment Software Patterns (Craig Larman)

Arquitectura y Diseo de Sistemas 6

Lic. Ariel Trellini DCIC UNS

10/04/2015

Estilos y Patrones Arquitectnicos Definiciones

Estilos y Patrones Arquitectnicos Definiciones

Arquitectura de Software Especfica de un Dominio (DSSA)

Estilos Arquitectnicos

Nuclea conocimiento sustancial, adquirido a partir de una extensa


experiencia, sobre cmo estructurar aplicaciones completas dentro de un
dominio particular.
Desde el punto de vista operacional, podra definirse como la combinacin
de:

La arquitectura de referencia para un dominio de aplicacin


Una librera de componentes de software para dicha arquitectura, conteniendo
componentes reusables basados en la experiencia en el dominio
Un mtodo para elegir y configurar los componentes para que trabajen dentro
de una instancia de la arquitectura de referencia.

Estn ntimamente relacionadas con las arquitecturas para una familia de


productos (recuerdan el caso de estudio de Phillips?)
Estn especializadas para un dominio particular y slo son valiosas para
aplicaciones dentro de dicho dominio

Arquitectura y Diseo de Sistemas 7

Lic. Ariel Trellini DCIC UNS

Un estilo arquitectnico es una coleccin de decisiones de


diseo arquitectnicas que tiene un nombre especfico y que:
1. Es aplicables a un contexto de desarrollo dado
2. Restringe decisiones de diseo arquitectnicas que son
especficas a un sistema particular dentro de aquel contexto
3. Elicita cualidades beneficiosas en cada sistema resultante
Taylor, Medvidovic and Dashofy

Son la forma de caracterizar lecciones aprendidas en el diseo de sistemas


de software
Proveen decisiones de diseo generales que restringen y pueden necesitar
ser refinadas en decisiones de diseo adicionales y ms especficas para
que sean aplicadas en un sistema.

Arquitectura y Diseo de Sistemas 8

Estilos y Patrones Arquitectnicos Definiciones

Estilos y Patrones Arquitectnicos Definiciones

Estilos Arquitectnicos (cont.)

Estilos Arquitectnicos (cont.)

Propiedades

Tipos de componentes y conectores


Por ejemplo: clases, invocaciones, pipes, clientes, etc.

Reglas de composicin

Un vocabulario para los elementos de diseo

Un estilo tiene restricciones topolgicas que determinan cmo se puede hacer la


composicin de los elementos
Por ejemplo: los elementos de un layer se pueden comunicarse slo con los del
layer inferior

Semntica para esos elementos

Beneficios

Reso de diseos
Soluciones maduras aplicadas a problemas nuevos
Una parte importante del cdigo que implementa la arquitectura puede pasarse
de un sistema a otro
Comunicacin ms efectiva
Portabilidad de soluciones

Arquitectura y Diseo de Sistemas 9

Lic. Ariel Trellini DCIC UNS

Estilos y Patrones Arquitectnicos Definiciones

Aislar a los solicitantes unos de otros para


permitir que sean agregados o eliminados
independientemente. Hacer que los solicitantes
slo dependan de los proveedores de servicio

Provee un conjunto de decisiones especficas de diseo que han sido


identificadas como efectivas para organizar ciertas clases de sistemas de sw
o, ms tpicamente, subsistemas especficos.
Estas decisiones de diseo pueden pensarse como configurables, ya que
necesitan ser instanciadas con los componentes y conectores particulares a
una aplicacin.

Arquitectura y Diseo de Sistemas 11

Hacer que los proveedores no tengan


conocimiento sobre la identidad de os
solicitantes para permitir que los sirvan
transparentemente a muchos (posiblemente
cambiantes) solicitantes
Permitir que mltiples proveedores de
servicios se creen de forma dinmica para
sacar carga a los proveedores existentes si la
demanda de servicios aumenta por encima
de un determinado umbral

Qu estilo arquitectnico
se est describiendo?

Arquitectura y Diseo de Sistemas 10

Cliente - Servidor

Lic. Ariel Trellini DCIC UNS

Estilos y Patrones Arquitectnicos Definiciones

Un patrn arquitectnico es una coleccin de decisiones de


diseo arquitectnicas que tiene un nombre especfico y que son
aplicables a problemas de diseo recurrentes, y son
parametrizadas para tener en cuenta diferentes contextos de
desarrollo de software en los cuales el problema aparece.
Taylor, Medvidovic and Dashofy

Ejemplo: El siguiente conjunto de decisiones de diseo asegura la provisin


efectiva de servicio a mltiples usuarios del sistema en un ambiente
distribuido

Separar fsicamente los componentes de sw


usados para requerir servicios de aquellos
usados para proveer servicios, con el objetivo de
proveer una distribucin y escalamiento
apropiados (tanto en la cantidad de proveedores
de servicio como de solicitantes de servicios)

Patrones Arquitectnicos

Lic. Ariel Trellini DCIC UNS

Lic. Ariel Trellini DCIC UNS

Cules son las diferencias entre estilos arquitectnicos y patrones


arquitectnicos?

Los dos conceptos son similares y no siempre es posible identificar un lmite


ntido entre ellos.
Estilos Arquitectnico

Patrones Arquitectnico

Aplican a un contexto de
desarrollo:

Aplican a problemas de diseo


especficos:

sistemas altamente distribuidos,


sistemas intensivos en GUI

El estado del sistema debe


presentarse de mltiples formas
La lgica de negocio debe estar
separada del acceso a datos

Abstraccin

Son muy abstractos para


producir un diseo concreto del
sistema.

Son fragmentos arquitectnicos


parametrizados que pueden ser
pensados como una pieza concreta
de diseo.

Relacin

Un sistema diseado de acuerdo


a las reglas de un nico estilo
puede involucrar el uso de
mltiples patrones

Un nico patrn puede ser aplicado


a sistemas diseados de acuerdo a
los lineamientos de mltiples estilos

Alcance

Arquitectura y Diseo de Sistemas 12

Lic. Ariel Trellini DCIC UNS

10/04/2015

Estilos y Patrones Arquitectnicos

Estilos y Patrones Arquitectnicos

Estilos Arquitectnicos

Ejemplo: Lunar Lander

Repasaremos la propuesta en Software Architecture, Foundations


Theory and Practice

Juego popular en los aos 70

Estilos Simples

http://moonlander.seb.ly/

Reglas

Traditional Language-Influenced Styles

Layered

Dataflow Styles

Main Program and Subroutines


Object-Oriented

Virtual Machines
Client-Server

Batch-Sequential
Pipe and Filters

Shared Memory

Interpreter

Implicit Invocation

Peer to Peer

Blackboard
Rule-Based

Intepreter
Mobile Code

Publish-Subscriber
Event Based

El piloto controla el descenso de un lunar lander estilo Apollo


Controla la aceleracin del descenso
Combustible limitado
Altitud inicial y velocidad preseteadas
Si aterriza con una velocidad de descenso < 5, gana aunque no tenga
combustible

Estilos Complejos
C2

Distributed Objects

Arquitectura y Diseo de Sistemas 13

Lic. Ariel Trellini DCIC UNS

Estilos y Patrones Arquitectnicos

Arquitectura y Diseo de Sistemas 14

Lic. Ariel Trellini DCIC UNS

Estilos y Patrones Arquitectnicos Main Program and Subroutine

Estilos Influenciados por el Lenguaje


Main Program and Subroutines

Influenciado por la Programacin


Estructurada

Envo de mensaje / respuesta

Se cede el control y se espera


la respuesta

Main

Sub1

Sub1

Sub1

Descripcin

Descomposicin basada en la separacin de pasos de procesamiento


funcionales

Componentes

Programa principal y subrutinas

Conectores

Llamadas a procedimientos / funciones

Elementos de datos

Valores de entrada/salida de las subrutinas

Topologa

La organizacin esttica de los componentes es jerrquica. La estructura


es un grafo dirigido

Restricciones
adicionales

Ninguna

Cualidades

Modularidad: Las subrutinas pueden ser reemplazadas con diferentes


implementacin mientras su interfaz no sea afectada

Usos tpicos

Pequeos programas. Uso pedaggico.

Precauciones

Arquitectura y Diseo de Sistemas 15

Lic. Ariel Trellini DCIC UNS

Generalmente falla al escalar a grandes aplicaciones


Inadecuada atencin a estructuras de datos
Requiere bastante esfuerzo para introducir nuevos requerimientos
Reuso limitado de funciones y procedimientos

Arquitectura y Diseo de Sistemas 16

Estilos y Patrones Arquitectnicos Main Program and Subroutine

Estilos y Patrones Arquitectnicos

Ejemplo: Lunar Lander

Object Oriented

Diseo basado en
descomposicin funcional
Programa principal

In: Out: aceleracin

In: altitud, aceleracin,


combustible, tiempo,
velocidad
Out: altitud, combustible,
velocidad

Arquitectura y Diseo de Sistemas 17

Promueve el uso de las principales caractersticas de la OO

Muestra saludos e
instrucciones
Cicla llamando a los
componentes

In: altitud, combustible,


tiempo, velocidad
Out: -

Lic. Ariel Trellini DCIC UNS

Lic. Ariel Trellini DCIC UNS

Information hiding
Encapsulamiento
Herencia / Polimorfismo

Information Hiding: Las decisiones de diseo que es probable


que cambien, son ocultadas en un mdulo o conjunto de
pequeos mdulos
Parnas, 1972

Arquitectura y Diseo de Sistemas 18

Lic. Ariel Trellini DCIC UNS

10/04/2015

Estilos y Patrones Arquitectnicos Object Oriented

Estilos y Patrones Arquitectnicos Object Oriented

Descripcin

Estado y funciones (sobre dicho estado) encapsulados en objetos. Los objetos


deben ser instanciados antes que sus mtodos sean invocados.

Componentes

Objetos (instancias de las clases)

Conectores

Invocacin a mtodos (llamadas a procedimientos para manipular el estado)

Elementos de datos

Parmetros de los mtodos

Topologa

Puede variar. Los componentes pueden compartir datos y funciones a travs


de jerararquas de herencia

Restricciones
adicionales

Cualidades

Usos tpicos

Precauciones

Ejemplo: Lunar Lander

Generalmente, memoria compartida (para soportar el uso de punteros).


nico thread (por defecto)
Conocer la identidad de los objetos

CALCULAR
In: Velocidad de
combustin,
Spacecraft
Out: Spacecraft

Integridad de las operaciones sobre los datos (estn co-localizadas)


Abstraccin: Ocultamiento de los detalles de implementacin
Reuso a gran escala
Correspondencia con objetos del dominio
Correlacin entre las entidades en el mundo real y las entidades en la app.
Apps que tienen estructuras de datos complejas y dinmicas.
El uso en aplicaciones distribuidas requiere acceso remoto a los objetos.
Relativa ineficiencia para apps de alta performance
Carencia de principios de diseo resulta en apps altamente complejas.
No todo es un objeto

Arquitectura y Diseo de Sistemas 19

Lic. Ariel Trellini DCIC UNS

Estilos y Patrones Arquitectnicos

GET altitud,
combustible,
tiempo y velocidad

SET altitud,
combustible,
tiempo y
velocidad

Arquitectura y Diseo de Sistemas 20

Lic. Ariel Trellini DCIC UNS

Estilos y Patrones Arquitectnicos Virtual Machine

Layered Styles
Descripcin

Secuencia ordenada de capas. Cada capa (virtual machine) ofrece servicios a


subcomponentes de la capa encima de ella.

Componentes

Capas, generlamente conteniendo subcomponentes

Conectores

Llamadas a procedimientos

Elementos de datos

Parmetros pasados entre las capas

Dichos servicios pueden ser accedidos


por programas que residen en la capa
superior

Topologa

Lineal

Restricciones
adicionales

Ninguna

Encapsula la implementacin de los


servicios de la capa

Cualidades

Virtual Machine

Una capa ofrece un conjunto de


servicios

Dos modos

Usos tpicos

Estricto
No estricto

Precauciones

Arquitectura y Diseo de Sistemas 21

Lic. Ariel Trellini DCIC UNS

Dependencias claras y acotadas


Encapsulamiento
Basado en niveles de abstraccin
Reusabilidad, Portabilidad
Sistemas Operativos
Stacks de protocolos de red
Aplicaciones empresariales
Performance
No siempre se puede encontrar la abstraccin correcta

Arquitectura y Diseo de Sistemas 22

Estilos y Patrones Arquitectnicos Virtual Machine

Estilos y Patrones Arquitectnicos

Ejemplo: Lunar Lander

Client-Server

Mltiples clientes independientes


accediendo al mismo server

Especializacin de Virtual Machine de


2 capas:

Arquitectura y Diseo de Sistemas 23

Lic. Ariel Trellini DCIC UNS

Capa 1: Client

Capa 2: Server

Conexin por red

Lic. Ariel Trellini DCIC UNS

Clients conocen al Server


Server no conoce a los Clients

Arquitectura y Diseo de Sistemas 24

Lic. Ariel Trellini DCIC UNS

10/04/2015

Estilos y Patrones Arquitectnicos Client Server

Estilos y Patrones Arquitectnicos Client - Server

Descripcin

Clientes le envan requerimientos al servidor, el cual los ejecuta y enva la


respuesta (de ser necesario). La comunicacin es iniciada por el cliente.

Componentes

Clientes y Servidor

Conectores

Llamadas a procedimientos remotos (o equivalente)

Elementos de datos

Parmetros y valores de retorno

Topologa

Dos niveles. Mltiples clientes haciendo requerimientos al server

Restricciones
adicionales

Prohibida la comunicacin entre clientes

Cualidades

Usos tpicos

Precauciones

Sencilla y muy utilizada


Centralizacin de cmputos y datos en el server.
Mantenible

Apps con datos y/ o procesamiento centralizados y clientes GUI


Stacks de protocolos de red
Aplicaciones empresariales

Condiciones de la red vs crecimiento de clientes.

Ejemplo: Lunar Lander Multiplayer

Arquitectura y Diseo de Sistemas 25

Lic. Ariel Trellini DCIC UNS

Estilos y Patrones Arquitectnicos

Arquitectura y Diseo de Sistemas 26

Estilos y Patrones Arquitectnicos

Dataflow Styles

Batch-Sequential

Caractersticas

La estructura del sistema est basada en transformaciones sucesivas a


datos de input.

Los datos entran al sistema y fluyen a travs de los componentes hasta


su destino final.

Los componentes son de runtime

Normalmente un programa controla la ejecucin de los componentes


(lenguaje de control)

Descripcin

Programas separados y ejecutados en orden. Los datos son pasados como


un lote de un programa al siguiente.

Componentes

Programas independientes

Conectores

Distintos tipos de interfaces: desde humana hasta web services

Elementos de datos

Lotes de datos pasados de un programa al siguiente.

Topologa

Lineal

Restricciones
adicionales

Se ejecuta un programa a la vez, hasta que termina.

Cualidades

Sencillez
Ejecuciones independientes

Usos tpicos

Procesamiento de transacciones en sistemas financieros

Precauciones

Cuando se requiere interaccin entre componentes.


Cuando se requiere concurrencia entre componentes.

Arquitectura y Diseo de Sistemas 27

Lic. Ariel Trellini DCIC UNS

Lic. Ariel Trellini DCIC UNS

Arquitectura y Diseo de Sistemas 28

Lic. Ariel Trellini DCIC UNS

Estilos y Patrones Arquitectnicos Batch-Sequential

Ejemplo: Viejo procesamiento de transacciones financieras

Ejemplo: Lunar Lander

Arquitectura y Diseo de Sistemas 29

Lic. Ariel Trellini DCIC UNS