Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Software
Software arquitecture
Bibliografa
Software Engineering 7ed
Addison Wesley
Ian Sommerville
Documenting Software Architectures Views and Beyond Addison-Wesley
Paul Clements et al.
Software Systems Architecture Working with stakeholders using
viewpoints and perspectives Addison-Wesley
Nick Rozanski y Eoin Woods
Especificacin de Requerimientos del sistema
(SRS)
2
Arquitectura de Software
Sistema instalado y funcionando
3
Arquitectura de Software
Especificacin de Requerimientos del sistema (SRS)
-Arquitectura de Software
-Diseo detallado
No es un proceso
en cascada. No se -Implementacin
est definiendo -Verificacin
un proceso.
4
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
5
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.
6
Importancia
Ventajas de disear y documentar explcitamente una
arquitectura de software:
Comunicacin entre stakeholders
7
Bass, et al, Software Architecture
in Practice 2ed. Addison-Wesley.
Qu Afecta y qu la Determina?
La arquitectura de software afecta la
Performance
Seguridad (security y safety)
Disponibilidad
Mantenibilidad
8
Entonces, el estilo y estructura particular elegido
para una aplicacin dependen fuertemente de los
requerimientos no funcionales.
Conflictos entre Soluciones
El sistema debe ser muy performante y muy
mantenible
9
Cmo se puede solucionar?
Solucin de compromiso
Diferentes estilos para distintas partes del sistema
10
Qu tan Fcil es Modificarla?
Sears
EEUU
527 metros
Petronas
Malasia
452 metros
Taipei 101
China
508 metros
Me gustara
11
Qu tan Fcil es Modificarla?
que el ascensor quedara
del otro lado
12
Qu tan Fcil es Modificarla?
Burj Dubai, otros metros ms arriba, Emiratos rabes
13
An ms Complicado
14
Patrones de Software
Propsito
Compartir una solucin probada,
ampliamente aplicable
a un problema particular de diseo.
El patrn se presenta en una forma estndar que
permite que sea fcilmente reutilizado.
Cinco piezas importantes de un patrn
Nombre
15
Contexto
Problema
Solucin
Consecuencias (positivas y negativas)
Estilos, Patrones e Idioms
Los patrones de diseo se agrupan en tres tipos
Estilos arquitectnicos: Soluciones de organizacin
a nivel del sistema
16
Patrones de diseo: Soluciones a problemas
detallados de diseo de software
17
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
18
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
19
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.
20
Arquitectura de Software
Estilos Arquitectnicos
Beneficios de Usar Estilos
Permite seleccionar una solucin entendible y
probada a ciertos problemas, definiendo los
principios organizativos del sistema
22
Base para una adaptacin
Algn estilo soluciona parcialmente los problemas.
Se puede buscar adaptar el estilo para las
restricciones particulares que se tienen.
Formas de Uso de los Estilos (2)
Inspiracin para una solucin relacionada
Ningn estilo sirve.
23
Sin embargo, entender problemas que solucionan
ciertos estilos puede llevar a entender mejor el
problema actual.
Entonces, se puede encontrar una solucin que de
alguna forma est relacionada con estilos existentes
Shared-Data
Generalidades
26
Hay un almacenamiento central de datos y un
conjunto de componentes que operan sobre ste.
27
Ventajas y Desventajas
Forma eficiente de compartir grandes cantidades de
datos.
No se transmiten datos de un componente a otro.
Sin embargo, los subsistemas deben estar de acuerdo
en el modelo de datos del repositorio.
Las componentes que producen datos no necesitan
conocer como van a ser usados esos datos.
28
Actividades como respaldos, seguridad, control de
acceso y recuperacin estn centralizadas.
Sin embargo, diferentes componentes podra tener
distintas polticas de recuperacin, respaldo, etc.
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
29
Estructura de datos del Pizarrn
Estado completo de la solucin del problema
nico medio por el cual las Fuentes de conocimiento interactan
para llegar a la solucin
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.
30
Memoria (Compartida)
FC 2
FC 1 FC 3
Pizarrn
FC 7
FC 4
FC 6 FC 5
31
Pizarrn (Blackboard) Cliente-
Clculos
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.
32
Esto no es estrictamente necesario ya que clientes y servidores pueden
estar en una misma mquina.
Los clientes conocen a los servidores pero no a otros
clientes y los servidores no tienen porqu conocer a los
clientes
la asignacin de procesos a procesadores no tiene
porqu ser 1:1
Cliente-Servidor (2)
33
34
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
35
Capa 2
Capa 1
36
Definicin de protocolos mediante los que
interactan las capas
37
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.
38
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.
Ventajas
39
Ventajas y Desventajas
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.
40
Tubos y Filtros
Se descompone el sistema en mdulos funcionales
Interaccin - sucesiva transformacin de flujos de datos
Los datos llegan a un filtro, se transforman y son pasados a travs
de tubos al siguiente filtro
Un nico filtro puede pasar datos a mltiples tubos y recibir datos
de mltiples tubos
Cada filtro es independiente del resto y no conoce la identidad de
los otros filtros
Ventajas y Desventajas
La transformacin del filtro puede comenzar antes de terminar de
leer la entrada
Respetando el grafo, no importa la secuencia (paralelismo)
Tubo
Filtro 35
Ventajas
Se pueden reutilizar los filtros.
Es intuitivo pensar en secuencias de procesamientos
de datos.
42
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
Modelos de Control
43
Ventajas y Desventajas
Modelos de control a nivel de la arquitectura se
preocupan del flujo de control entre subsistemas
Control centralizado
Un subsistema controla al resto
44
Control Centralizado (1)
El control centralizado se puede dividir en dos clases
45
Llamada-Retorno Principal
Subsistema
Llamado/Retorno
Control Centralizado (2)
46
Modelo Gerente
Una componente es el gerente del sistema y controla a los
otros procesos del sistema
B
C
50
Ventajas
Se comparten recursos.
Apertura. Normalmente estos sistemas estn diseados
con protocolos estndar. Concurrencia.
Escalabilidad
Tolerancia a fallas
Arquitecturas de Sistemas Distribuidos (2)
Desventajas Complejidad
Seguridad
51
Difciles de gestionar
Muy poco predecibles
Ejemplos
Cliente-servidor
Objetos distribuidos
Peer-to-peer
Service oriented architecture (SOA)
Middleware
52
Las componentes pueden ser
Implementadas en diferentes lenguajes
Ejecutarse en distintos tipos de procesadores
Usar diferentes modelos de datos
Representar de forma diferente la informacin
Usar distintos protocolos de comunicacin
Entonces, se necesita software para gestionar la
comunicacin y el intercambio de datos entre
componentes
Dicho software se denomina middleware
53
Esta en el medio de las diferentes componentes distribuidas
Middleware (2)
Normalmente son usados middleware que son
comprados comercialmente ya que son de propsito
general.
54
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 P
rocesamiento
55
Cliente- Servidor (2)
Capa Gestin de Datos
Capa de presentacin
Presentacin de informacin al usuario e interaccin con
el mismo
Capa de procesamiento
Implementacin de la lgica de la aplicacin
Capa gestin de datos
Operaciones de bases de datos y archivos
56
En sistemas distribuidos es importante distinguir
claramente esta separacin ya que es posible
distribuir cada capa en computadoras diferentes
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
57
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.
Client
e
61
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
62
Ejemplo: aplicacin que necesita acceder a mltiples
fuentes de datos (integracin de datos)
Ejemplos
Arquitectura Aplicaciones
Arquitectura C/S Aplicaciones legadas en las cuales no se puede
separar el procesamiento de la gestin de los datos
dos niveles cliente
Aplicaciones intensivas en las computaciones con poco
fino o nada de gestin de datos (ej: compiladores)
Aplicaciones intensivas en manejo de datos (browsing y
consultas) con poco o nada de procesamiento de aplicacin
63
Arquitectura C/S Aplicaciones donde el procesamiento de la aplicacin
dos niveles cliente es provisto off-the-shelf en el cliente
Aplicaciones donde se hacen intensivos
grueso
procesamientos computacionales de los datos (ej:
visualizacin de datos)
Aplicaciones de gran escala con cientos o miles de
Arquitectura C/S clientes
tres niveles o Aplicaciones en donde tanto los datos como el
mltiples niveles procesamiento son voltiles
Aplicaciones con fuentes de datos mltiples
Objetos Distribuidos
En la arquitectura cliente-servidor los clientes y los servidores
son distintos
64
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
65
Se compone de objetos que proveen servicios a
otros objetos y usan servicios de otros objetos
No hay distincin entre clientes y servidores
Pueden ser distribuidos entre distintas computadoras en
una red y se comunican a travs de middleware
66
Este tipo de middleware se conoce como Object Request Broker (ORB),
por ejemplo, CORBA.
Peer-to-Peer
Sistemas descentralizados donde las computaciones
pueden ser realizadas en cualquier nodo de la red
67
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
Peer-to-Peer (2)
Ejemplos
Sistemas para compartir archivos
68
Mensajera instantnea
Seti@home
Y otros @home
Se est comenzando a usar tambin en el rea de
negocios
Intel y Boeing han implementado sistemas intensivos en las
computaciones con arquitecturas p2p
Se pueden clasificar en sistemas descentralizados o
semi-centralizados
Peer-to-Peer (3)
69
Algunos problemas
Overhead
Seguridad
Confianza
Entonces, son ms usados en sistemas que no son
crticos respecto a la informacin
Service Oriented Architecture (SOA)
Organizaciones que quieren hacer su informacin
accesible a otros programas pueden hacerlo
70
definiendo y publicando una interface de servicio
web
71
Se pueden construir aplicaciones mediante el uso de
distintos servicios
Hay varios modelos de servicios distintos.
Conceptualmente todos operan de acuerdo al
siguiente modelo
72
Comparacin SOA y Objetos Distribuidos
73
Aplicaciones ms chicas y compactas
Aplicaciones que pueden ser reactivas y adaptar su
operacin de acuerdo a su medio mediante el cambio de
enlaces a servicios durante la ejecucin
Web Services Estndares
Los servicios se basan en estndares basados en
XML
Entonces, pueden funcionar en cualquier plataforma y ser
escritos en cualquier lenguaje
74
Estndares ms conocidos:
SOAP - Simple Object Access Protocol
WSDL - Web Services Description Language
UDDI - Universal Description, Discovery and Integration.
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
75
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
76
77
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
78
Software Engineering Institute (SEI) propone:
Architecture Tradeoff Analysis Method (ATAM)
Software Architecture Analysis Method (SAAM)
79