Documentos de Académico
Documentos de Profesional
Documentos de Cultura
6 ArquitecturaDeSoftware
6 ArquitecturaDeSoftware
Software
Arquitectura de Software
Bibliografa
Arquitectura de Software
Especificacin de Requerimientos del sistema (SRS)
Arquitectura de Software
Especificacin de Requerimientos del sistema (SRS)
No es un
proceso en
cascada. No
se est
definiendo un
proceso.
-Arquitectura de Software
-Diseo detallado
-Implementacin
-Verificacin
Arquitectura de Software
Los sistemas complejos estn compuestos de
subsistemas que interactan bajo el control de un
diseo de sistema
Arquitectura de Software
Los subsistemas que componen el sistema,
las interfaces y
las reglas de interaccin entre ellos.
Definicin
A software architecture for a system is the structure or
structures of the system, which consist of elements, their
externally visible properties, and the relationships among
them.
Documenting software architectures, views and beyond
Importancia
Ventajas de disear y documentar explcitamente
una arquitectura de software:
Comunicacin entre stakeholders
Decisiones tempranas de diseo
Reuso a gran escala
Qu Afecta y qu la Determina?
La arquitectura de software afecta la
Performance
Seguridad (security y safety)
Disponibilidad
Mantenibilidad
10
11
12
An ms Complicado
13
Patrones de Software
Propsito
Nombre
Contexto
Problema
Solucin
Consecuencias (positivas y negativas)
14
15
Estilos Arquitectnicos
Un estilo arquitectnico
expresa un esquema de organizacin estructural para
sistemas de software.
Provee un conjunto de tipos de elementos
predefinidos,
especifica sus responsabilidades e
incluye reglas y guas para organizar las relaciones
entre ellos
Capa n
Capa n - 1
Capa 2
Capa 1
16
Patrones de Diseo
Un patrn de diseo
provee un esquema para refinar los elementos de un
sistema de software o las relaciones entre ellos.
Describe una estructura recurrente de elementos de
diseo interconectados que soluciona un problema
general de diseo dentro de un contexto particular
17
Idioms
Un idiom
es un patrn de bajo nivel, especfico para un
lenguaje de programacin.
Describe como implementar aspectos particulares de
elementos o de las relaciones entre ellos usando las
caractersticas de un lenguaje particular.
18
Arquitectura de Software
Estilos Arquitectnicos
20
21
22
Algunos Estilos
Shared Data (Datos Compartidos)
Pizarrn (Blackboard)
Cliente-Servidor
Capas Jerrquicas
Descomposicin Orientada a Objetos
Tubos y Filtros
Control Centralizado
Control Basado en Eventos
Arquitecturas de Sistemas Distribuidos
Cliente-Servidor
Objetos Distribuidos
Peer-To-Peer
Service Oriented Architecture (SOA)
23
Shared-Data
Generalidades
Hay un almacenamiento central de datos y un
conjunto de componentes que operan sobre ste.
Interaccin - intercambio de datos persistentes
Mltiples accesos a los datos
Al menos un almacenamiento compartido
Si se avisa al consumidor de nuevos datos de inters
es un Pizarrn (Blackboard)
Si es el consumidor quien busca los datos es un
Repositorio
24
Ventajas y Desventajas
Forma eficiente de compartir grandes cantidades de
datos.
No se transmiten datos de un componente a otro.
Pizarrn (Blackboard)
Fuentes de Conocimiento
Procesos independientes que corresponden a particiones del
conocimiento del mundo y del dominio dependientes de la
aplicacin
Responden a cambios en el pizarrn
Control
Guiado enteramente por el estado del pizarrn
Las Fuentes de conocimiento responden oportunamente cuando
los cambios en el pizarrn aplican
Puede implementarse en las FC, en el pizarrn, en un
componente separado o cualquier combinacin de stos.
26
Pizarrn (Blackboard)
Memoria (Compartida)
FC 2
FC 1
FC 3
Pizarrn
FC 7
FC 4
FC 6
FC 5
Clculos
27
Cliente-Servidor
El sistema se descompone en servicios y sus
servidores asociados y en clientes que acceden y usan
dichos servicios.
Estilo compuesto por:
Servidores que ofrecen servicios.
Clientes que usan servicios ofrecidos por los servidores.
Una red que permite que los clientes accedan a los servidores.
Esto no es estrictamente necesario ya que clientes y servidores
pueden estar en una misma mquina.
Cliente-Servidor (2)
Ci = clientes
CC1
c1
Si = servidores
CC2
c2
CC3
Network
s1,s2
s3,s4
Server
computer
SC1
SC2
c5,c6,c7
c3,c4
CC4
c8,c9
CC5
c10,c11,c12
Client
computer
CC6
29
Capas Jerrquicas
El sistema se organiza en capas.
Cada una provee un conjunto de servicios a las
capas superiores y requiere servicios de las
inferiores.
Capa n
Capa n - 1
Capa 2
Capa 1
30
31
Ventajas y Desventajas
Ventajas
Facilita la comprensin
Facilita mantenimiento
Facilita reutilizacin
Facilita portabilidad
Desventajas
No siempre es fcil estructurar en capas ni identificar
los niveles de abstraccin a partir de los
Requerimientos.
la interpretacin de comandos en mltiples niveles
puede afectar el desempeo.
32
Descomposicin O.O.
Se descompone el sistema en un conjunto de
objetos que se comunican.
Representacin de datos y operaciones
asociadas se encapsulan en un objeto.
Herencia, polimorfismo, sobrecarga de
operadores, enlace dinmico.
33
Ventajas y Desventajas
Ventajas
La implementacin de los objetos puede ser
cambiada sin afectar a otros objetos.
Promueve la reutilizacin de componentes.
Muchos objetos representan entidades de la realidad
por lo que es fcil entender la estructura del sistema.
Desventajas
Para usar servicios se debe conocer el nombre de la
interface de otro objeto.
Los cambios en las interfaces afectan a todos los
objetos que la usan.
34
Tubos y Filtros
Tubo
Filtro
35
Ventajas y Desventajas
Ventajas
Se pueden reutilizar los filtros.
Es intuitivo pensar en secuencias de procesamientos
de datos.
Agregar nuevas transformaciones de forma que el
sistema evolucione es sencillo.
Desventajas
Acordar cul es el formato de los datos.
Tiene que ser genrico si las componentes son
reusadas.
Sistemas interactivos son difciles de construir con
este estilo.
Ineficiente si hace ms de lo que debe o si los filtros
repiten chequeos
36
Modelos de Control
Modelos de control a nivel de la arquitectura se
preocupan del flujo de control entre subsistemas
Control centralizado
Un subsistema controla al resto
37
Principal
Subr. A
Subr.B
Subr.C
Subsistema
Llamado/Retorno
38
C
Controlador del Sistema
D
F
E
39
Publicar-Suscribir
Sistema de componentes independientes que
anuncian y se suscriben a eventos
Interaccin va eventos anunciados
Los componentes se suscriben a eventos
Es trabajo del run-time asegurarse que cada
evento publicado sea entregado a todos los
suscriptores de dicho evento
Una forma es la invocacin implcita
41
Ventajas
Se comparten recursos.
Apertura. Normalmente estos sistemas estn
diseados con protocolos estndar.
Concurrencia.
Escalabilidad
Tolerancia a fallas
42
Complejidad
Seguridad
Difciles de gestionar
Muy poco predecibles
Ejemplos
Cliente-servidor
Objetos distribuidos
Peer-to-peer
Service oriented architecture (SOA)
43
Middleware
Las componentes pueden ser
44
Middleware (2)
Normalmente son usados middleware que son
comprados comercialmente ya que son de
propsito general.
45
Cliente-Servidor
El diseo de sistemas cliente-servidor debera
reflejar la estructura lgica de la aplicacin.
Una forma de mirar a una aplicacin es la
siguiente:
Capa de Presentacin
Capa de Procesamiento
46
Cliente-Servidor (2)
Capa de presentacin
Presentacin de informacin al usuario e interaccin
con el mismo
Capa de procesamiento
Implementacin de la lgica de la aplicacin
Cliente-Servidor en 2 Niveles
Es la arquitectura ms simple cliente-servidor
Varios clientes y un servidor (o varios servidores
idnticos)
2 formas diferentes:
Cliente fino
El procesamiento de la informacin y la gestin de los datos
ocurre en el servidor. El cliente slo es responsable de
ejecutar el software de presentacin.
Cliente grueso
El servidor es responsable slo de la gestin de los datos. El
cliente ejecuta el procesamiento de la aplicacin (la lgica de
la aplicacin) y la presentacin.
48
Cliente grueso
Mejor distribucin del procesamiento
La administracin del sistema es ms compleja
Cuando el software de aplicacin cambia hay que reinstalar
la aplicacin en cada computadora cliente
Algunos Problemas
En 2 niveles hay que distribuir las tres capas
(presentacin, lgica y datos) en dos sistemas
de computadoras
Pueden surgir problemas de
escalabilidad y rendimiento con el cliente fino
o de gestin del sistema si se usa cliente grueso
Cliente-Servidor en 3 Niveles
La presentacin, la lgica y los datos se separan
como procesos lgicos diferentes distribuidos en
distintas mquinas
Ejemplo: Sistema bancario por internet
Client
e
Client
e
Client
e
HTTP
Servidor de BD
Servidor web
Provisin de
servicios
de cuenta
Consulta SQL
Base Datos
SQL Cuenta
Cliente
Client
e
51
Comparacin
La arquitectura en 3 niveles
Es ms escalable que la de 2 niveles
Reduce el trfico en la red en comparacin con
cliente fino
La capa de procesamiento de la aplicacin es
fcilmente actualizada ya que est localizada
centralmente
Ejemplos
Arquitectura
Aplicaciones
Arquitectura C/S
dos niveles
cliente fino
Arquitectura C/S
dos niveles
cliente grueso
Arquitectura C/S
tres niveles o
mltiples niveles
53
Objetos Distribuidos
En la arquitectura cliente-servidor los clientes y los
servidores son distintos
Los clientes reciben servicios de los servidores y no de otros
clientes
Los servidores pueden actuar como clientes de otros servidores
pero no requieren servicios de clientes
Los clientes deben conocer los servicios ofrecidos por
servidores especficos y deben conocer como contactar a estos
servidores
Enfoque ms general
Remover la distincin entre clientes y servidores
Disear la arquitectura como una de objetos distribuidos
54
o2
o3
S(o2)
o4
S(o3)
S(o4)
Software bus
o5
o6
S(o5)
S(o6)
55
Peer-to-Peer
Sistemas descentralizados donde las
computaciones pueden ser realizadas en
cualquier nodo de la red
En principio no hay distincin entre clientes y
servidores
El sistema se disea para usar el poder de
almacenamiento y procesamiento de mltiples
computadoras en una red
Los protocolos que permiten la comunicacin entre
nodos estn embebidos en la propia aplicacin
Cada nodo debe correr una copia de la aplicacin
56
Peer-to-Peer (2)
Ejemplos
Sistemas para compartir archivos
Mensajera instantnea
Seti@home
Y otros @home
Peer-to-Peer (3)
Algunos problemas
Overhead
Seguridad
Confianza
58
59
SOA (2)
El servicio es independiente de las aplicaciones
que lo usan
Se pueden construir aplicaciones mediante el
uso de distintos servicios
Hay varios modelos de servicios distintos.
Conceptualmente todos operan de acuerdo al
siguiente modelo
60
Estndares ms conocidos:
SOAP - Simple Object Access Protocol
WSDL - Web Services Description Language
UDDI - Universal Description, Discovery and
Integration.
62
Ejemplo
Un sistema de informacin para un auto provee
al conductor con informacin acerca del clima,
las condiciones del trfico, informacin local,
etc. Esto est vinculado con la radio del auto de
forma que la informacin es entregada como
una seal en un canal especfico de la radio
El auto est equipado con un recibidor GPS
para conocer su posicin y, basado en esa
posicin, el sistema accede a un rango de
servicios de informacin. La informacin debe
ser entregada en el lenguaje especificado por el
conductor
63
Ejemplo (2)
Road traffi c info
Weather
info
Facilities
info
gps coord
Road
locator
gps
coord
gps coord
Info
stream
Language
info
Traffi c
info
Collates information
Service discovery
Finds available
services
command
gps coord
Receiver
Transmitter
User interface
Receives
information stream
from services
Receives request
from user
Radio
Translates dig
ital
info stream to
radio signal
Locator
Discovers car
position
In-car software system
64
Evaluacin de Arquitecturas
Cambiar la arquitectura de un producto ya construido
requiere mucho esfuerzo
Entonces, es importante evaluar la arquitectura antes de
implementarla completamente
Verificar los requisitos de calidad establecidos
Evaluaciones a posteriori resultan tiles como forma de
aprendizaje y estudio de posibilidades de mejora, por ej.
para una nueva versin del producto
Software Engineering Institute (SEI) propone:
Architecture Tradeoff Analysis Method (ATAM)
Software Architecture Analysis Method (SAAM)
65