SlideShare una empresa de Scribd logo
Introducción a la Ingeniería de
Software
Arquitectura de Software
2
Bibliografía
• 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
3
Arquitectura de Software
Especificación de Requerimientos del sistema (SRS)
Sistema instalado y funcionando
En este camino hay mucho por
hacer.
¿Comenzamos a programar
para terminar lo antes posible?
- ¿Cuáles serían los riesgos?
4
Arquitectura de Software
Especificación de Requerimientos del sistema (SRS)
Sistema instalado y funcionando
-Arquitectura de Software
-Diseño detallado
-Implementación
-Verificación
No es un
proceso en
cascada. No se
está definiendo
un proceso.
5
Arquitectura de Software
Los sistemas complejos están compuestos de
subsistemas que interactúan bajo el control de un
diseño de sistema
Arquitectura de Software
 Los subsistemas que componen el sistema,
 las interfaces y
 las reglas de interacción entre ellos.
6
Definición
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
7
Importancia
Ventajas de diseñar y documentar explícitamente
una arquitectura de software:
 Comunicación entre stakeholders
 Decisiones tempranas de diseño
 Reuso a gran escala
Bass, et al, Software Architecture in
Practice 2ed.
Addison-Wesley.
8
¿Qué Afecta y qué la Determina?
• La arquitectura de software afecta la
 Performance
 Seguridad (security y safety)
 Disponibilidad
 Mantenibilidad
 …
• Entonces, el estilo y estructura particular elegido
para una aplicación dependen fuertemente de
los requerimientos no funcionales.
9
Conflictos entre Soluciones
• El sistema debe ser “muy” performante y “muy”
mantenible
• ¿Cuál es el conflicto al momento de elegir el
estilo arquitectónico?
• ¿Cómo se puede solucionar?
 Solución de compromiso
 Diferentes estilos para distintas partes del sistema
10
¿Qué tan Fácil es Modificarla?
• Sears
EEUU
527 metros
• Petronas
Malasia
452 metros
• Taipei 101
China
508 metros
11
¿Qué tan Fácil es Modificarla?
Me gustaría que el
ascensor quedara del
otro lado
Estaría bárbaro que el
puente estuviera 23
pisos más arriba, la
vista sería mejor
12
¿Qué tan Fácil es Modificarla?
Burj Dubai, otros metros más arriba, Emiratos Árabes
13
Aún más Complicado
14
Patrones de Software
• Propósito
 Compartir una solución probada,
 ampliamente aplicable
 a un problema particular de diseño.
 El patrón se presenta en una forma estándar que
permite que sea fácilmente reutilizado.
• Cinco piezas importantes de un patrón
 Nombre
 Contexto
 Problema
 Solución
 Consecuencias (positivas y negativas)
15
Estilos, Patrones e Idioms
• Los patrones de diseño se agrupan en tres tipos
 Estilos arquitectónicos: Soluciones de organización
a nivel del sistema
 Patrones de diseño: Soluciones a problemas
detallados de diseño de software
 Idioms: Soluciones útiles para problemas específicos
en algún lenguaje de programación
16
Estilos Arquitectónicos
• Un estilo arquitectónico
 expresa un esquema de organización estructural para
sistemas de software.
 Provee un conjunto de tipos de elementos
predefinidos,
 especifica sus responsabilidades e
 incluye reglas y guías para organizar las relaciones
entre ellos Capa n
Capa n - 1
Capa 2
Capa 1
17
Patrones de Diseño
• Un patrón de diseño
 provee un esquema para refinar los elementos de un
sistema de software o las relaciones entre ellos.
 Describe una estructura recurrente de elementos de
diseño interconectados que soluciona un problema
general de diseño dentro de un contexto particular
• Mencionen algún patrón de diseño que
conozcan
18
Idioms
• Un idiom
 es un patrón de bajo nivel, específico para un
lenguaje de programación.
 Describe como implementar aspectos particulares de
elementos o de las relaciones entre ellos usando las
características de un lenguaje particular.
Arquitectura de Software
Estilos Arquitectónicos
20
Beneficios de Usar Estilos
• Permite seleccionar una solución entendible y
probada a ciertos problemas, definiendo los
principios organizativos del sistema
• Al basar la arquitectura en estilos que son
conocidos las personas entienden más
fácilmente las características importantes de la
misma
21
Formas de Uso de los Estilos
• Solución para el diseño del sistema
 Algún estilo sirve.
 Se adopta y se usa como una de las estructuras
centrales de la arquitectura.
• Base para una adaptación
 Algún estilo soluciona parcialmente los problemas.
 Se puede buscar adaptar el estilo para las
restricciones particulares que se tienen.
22
Formas de Uso de los Estilos (2)
• Inspiración para una solución relacionada
 Ningún estilo sirve.
 Sin embargo, entender problemas que solucionan
ciertos estilos puede llevar a entender mejor el
problema actual.
 Entonces, se puede encontrar una solución que de
alguna forma está relacionada con estilos existentes
• Motivación para un nuevo estilo
 El problema no es atacado por ningún estilo
encontrado
 Es una buena oportunidad para encontrar una
solución general al problema y crear un nuevo estilo
23
Algunos Estilos
• Shared Data (Datos Compartidos)
 Pizarrón (Blackboard)
• Cliente-Servidor
• Capas Jerárquicas
• Descomposición 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)
24
Shared-Data
• Generalidades
 Hay un almacenamiento central de datos y un
conjunto de componentes que operan sobre éste.
 Interacción - intercambio de datos persistentes
 Múltiples accesos a los datos
 Al menos un almacenamiento compartido
 Si se avisa al consumidor de nuevos datos de interés
es un Pizarrón (Blackboard)
 Si es el consumidor quien busca los datos es un
Repositorio
25
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.
• Actividades como respaldos, seguridad, control de
acceso y recuperación están centralizadas.
• Sin embargo, diferentes componentes podría tener
distintas políticas de recuperación, respaldo, etc.
26
Pizarrón (Blackboard)
• Fuentes de Conocimiento
 Procesos independientes que corresponden a particiones del
conocimiento del mundo y del dominio dependientes de la
aplicación
 Responden a cambios en el pizarrón
• Estructura de datos del Pizarrón
 Estado completo de la solución del problema
 único medio por el cual las Fuentes de conocimiento interactúan
para llegar a la solución
• Control
 Guiado enteramente por el estado del pizarrón
 Las Fuentes de conocimiento responden oportunamente cuando
los cambios en el pizarrón aplican
 Puede implementarse en las FC, en el pizarrón, en un
componente separado o cualquier combinación de éstos.
27
Pizarrón (Blackboard)
Pizarrón
FC 1
FC 7
FC 6
FC 2
FC 3
FC 4
FC 5
Cálculos
Memoria (Compartida)
28
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 máquina.
• Los clientes conocen a los servidores pero no a otros
clientes y los servidores no tienen porqué conocer a los
clientes
• la asignación de procesos a procesadores no tiene
porqué ser 1:1
29
Cliente-Servidor (2)
Network
SC1SC2
CC1 CC2 CC3
CC5 CC6CC4
Server
computer
Client
computer
s1, s2 s3, s4
c5, c6, c7
c1 c2 c3, c4
c8, c9 c10,c11,c12
Ci = clientes
Si = servidores
30
Capas Jerárquicas
• 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
31
Capas Jerárquicas (2)
• Modelo estricto: una capa sólo utiliza servicios
de la inmediata inferior.
• Modelo relajado: se pueden “saltar” capas.
• Definición de protocolos mediante los que
interactúan las capas
32
Ventajas y Desventajas
• Ventajas
 Facilita la comprensión
 Facilita mantenimiento
 Facilita reutilización
 Facilita portabilidad
• Desventajas
 No siempre es fácil estructurar en capas ni identificar
los niveles de abstracción a partir de los
Requerimientos.
 la interpretación de comandos en múltiples niveles
puede afectar el desempeño.
33
Descomposición O.O.
• Se descompone el sistema en un conjunto de
objetos que se comunican.
• Representación de datos y operaciones
asociadas se encapsulan en un objeto.
• Herencia, polimorfismo, sobrecarga de
operadores, enlace dinámico.
34
Ventajas y Desventajas
• Ventajas
 La implementación de los objetos puede ser
cambiada sin afectar a otros objetos.
 Promueve la reutilización de componentes.
 Muchos objetos representan entidades de la realidad
por lo que es fácil 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.
35
Tubos y Filtros
• Se descompone el sistema en módulos funcionales
• Interacción - sucesiva transformación de flujos de datos
• Los datos llegan a un filtro, se transforman y son pasados a través
de tubos al siguiente filtro
• Un único filtro puede pasar datos a múltiples tubos y recibir datos
de múltiples tubos
• Cada filtro es independiente del resto y no conoce la identidad de
los otros filtros
• La transformación del filtro puede comenzar antes de terminar de
leer la entrada
• Respetando el grafo, no importa la secuencia (paralelismo)
Filtro
Tubo
36
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 cuál es el formato de los datos.
• Tiene que ser “genérico” si las componentes son
reusadas.
 Sistemas interactivos son difíciles de construir con
este estilo.
 Ineficiente si hace más de lo que debe o si los filtros
repiten chequeos
37
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
 Control basado en eventos
• Cada subsistema puede responder a eventos externos
– Eventos generados por otros subsistemas
– Eventos generados por el ambiente del sistema
38
Control Centralizado (1)
• El control centralizado se puede dividir en dos
clases
 Llamada-Retorno Principal
Subr. A Subr.B Subr.C
Subsistema
Llamado/Retorno
39
Control Centralizado (2)
• Modelo Gerente
 Una componente es el gerente del sistema y controla
a los otros procesos del sistema
Controlador del Sistema
A
B
F
E
C
D
40
Control Basado en Eventos
• En los modelos centralizados las decisiones de
control suelen estar determinadas por valores
de alguna variable de estado del sistema
• En cambio, el control basado en eventos es
guiado por eventos generados externamente
• Ejemplos
 Modelos emisión (broadcast). Se emiten los eventos
a todos los subsistemas.
 Modelos guiados por interrupciones. Se usan en
sistemas de tiempo real. Las interrupciones son
pasadas por un manejador de interrupciones a otras
componentes para su procesamiento.
41
Publicar-Suscribir
• Sistema de componentes independientes que
anuncian y se suscriben a eventos
• Interacción vía 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 invocación implícita
42
Arquitecturas de Sistemas Distribuidos
• Ventajas
 Se comparten recursos.
 Apertura. Normalmente estos sistemas están
diseñados con protocolos estándar.
 Concurrencia.
 Escalabilidad
 Tolerancia a fallas
El procesamiento de la información es distribuido entre varias
computadoras.
43
Arquitecturas de Sistemas Distribuidos (2)
• Desventajas
 Complejidad
 Seguridad
 Difíciles de gestionar
 Muy poco predecibles
• Ejemplos
 Cliente-servidor
 Objetos distribuidos
 Peer-to-peer
 Service oriented architecture (SOA)
44
Middleware
• Las componentes pueden ser
 Implementadas en diferentes lenguajes
 Ejecutarse en distintos tipos de procesadores
 Usar diferentes modelos de datos
 Representar de forma diferente la información
 Usar distintos protocolos de comunicación
• Entonces, se necesita software para gestionar la
comunicación y el intercambio de datos entre
componentes
 Dicho software se denomina middleware
• Esta en el medio de las diferentes componentes distribuidas
45
Middleware (2)
• Normalmente son usados middleware que son
comprados comercialmente ya que son de
propósito general.
46
Cliente-Servidor
• El diseño de sistemas cliente-servidor debería
reflejar la estructura lógica de la aplicación.
• Una forma de mirar a una aplicación es la
siguiente:
Capa de Presentación
Capa de Procesamiento
Capa Gestión de Datos
47
Cliente-Servidor (2)
• Capa de presentación
 Presentación de información al usuario e interacción
con el mismo
• Capa de procesamiento
 Implementación de la lógica de la aplicación
• Capa gestión de datos
 Operaciones de bases de datos y archivos
• En sistemas distribuidos es importante distinguir
claramente esta separación ya que es posible
distribuir cada capa en computadoras diferentes
48
Cliente-Servidor en 2 Niveles
• Es la arquitectura más simple cliente-servidor
• Varios clientes y un servidor (o varios servidores
idénticos)
• 2 formas diferentes:
 Cliente fino
• El procesamiento de la información y la gestión de los datos
ocurre en el servidor. El cliente sólo es responsable de
ejecutar el software de presentación.
 Cliente grueso
• El servidor es responsable sólo de la gestión de los datos. El
cliente ejecuta el procesamiento de la aplicación (la lógica
de la aplicación) y la presentación.
49
Cliente Fino, Grueso y Applet
• Cliente fino
 Procesamiento pesado del lado del servidor
 Procesamiento pesado en la red
• Cliente grueso
 Mejor distribución del procesamiento
 La administración del sistema es más compleja
• Cuando el software de aplicación cambia hay que reinstalar
la aplicación en cada computadora cliente
• Java Applets descargables
 Están en el medio entre cliente fino y grueso
 Luego de descargar el applet se ejecuta parte de la
lógica de la aplicación en el cliente
50
Algunos Problemas
• En 2 niveles hay que distribuir las tres capas
(presentación, lógica y datos) en dos sistemas
de computadoras
 Pueden surgir problemas de
• escalabilidad y rendimiento con el cliente fino
• o de gestión del sistema si se usa cliente grueso
• Para evitar estos problemas una alternativa es
usar una arquitectura cliente-servidor en 3
niveles
51
Cliente-Servidor en 3 Niveles
• La presentación, la lógica y los datos se
separan como procesos lógicos diferentes
distribuidos en distintas máquinas
• Ejemplo: Sistema bancario por internet
Client
e
Client
e
Client
e
Client
e
Servidor web
Provisión de
servicios
de cuenta
Servidor de BD
SQL
Base Datos
Cuenta
Cliente
HTTP
Consulta SQL
52
Comparación
• La arquitectura en 3 niveles
 Es más escalable que la de 2 niveles
 Reduce el tráfico en la red en comparación con
cliente fino
 La capa de procesamiento de la aplicación es
fácilmente actualizada ya que está localizada
centralmente
• Cliente servidor en múltiples niveles
 Ejemplo: aplicación que necesita acceder a múltiples
fuentes de datos (integración de datos)
53
Ejemplos
Arquitectura Aplicaciones
Arquitectura C/S
dos niveles
cliente fino
• Aplicaciones legadas en las cuales no se puede separar el
procesamiento de la gestión de los datos
• Aplicaciones intensivas en las computaciones con poco o
nada de gestión de datos (ej: compiladores)
• Aplicaciones intensivas en manejo de datos (browsing y
consultas) con poco o nada de procesamiento de aplicación
Arquitectura C/S
dos niveles
cliente grueso
• Aplicaciones donde el procesamiento de la aplicación es
provisto off-the-shelf en el cliente
• Aplicaciones donde se hacen intensivos procesamientos
computacionales de los datos (ej: visualización de datos)
Arquitectura C/S
tres niveles o
múltiples niveles
• Aplicaciones de gran escala con cientos o miles de clientes
• Aplicaciones en donde tanto los datos como el
procesamiento son volátiles
• Aplicaciones con fuentes de datos múltiples
54
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 específicos y deben conocer como contactar a estos
servidores
• Enfoque más general
 Remover la distinción entre clientes y servidores
 Diseñar la arquitectura como una de objetos distribuidos
55
Objetos Distribuidos (2)
• Se compone de objetos que proveen servicios a
otros objetos y usan servicios de otros objetos
 No hay distinción entre clientes y servidores
 Pueden ser distribuidos entre distintas computadoras
en una red y se comunican a través de middleware
• Este tipo de middleware se conoce como Object Request
Broker (ORB), por ejemplo, CORBA.
 Es más complejo de diseñar que cliente-servidor
Software bus
o1 o2 o3 o4
o5 o6
S(o1) S(o2) S(o3) S(o4)
S(o5) S(o6)
56
Peer-to-Peer
• Sistemas descentralizados donde las
computaciones pueden ser realizadas en
cualquier nodo de la red
 En principio no hay distinción entre clientes y
servidores
 El sistema se diseña para usar el poder de
almacenamiento y procesamiento de múltiples
computadoras en una red
 Los protocolos que permiten la comunicación entre
nodos están embebidos en la propia aplicación
• Cada nodo debe correr una copia de la aplicación
57
Peer-to-Peer (2)
• Ejemplos
 Sistemas para compartir archivos
 Mensajería instantánea
 Seti@home
• Y otros @home
 Se está comenzando a usar también 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
58
Peer-to-Peer (3)
• Algunos problemas
 Overhead
 Seguridad
 Confianza
• Entonces, son más usados en sistemas que no
son críticos respecto a la información
59
Service Oriented Architecture (SOA)
• Organizaciones que quieren hacer su
información accesible a otros programas
pueden hacerlo definiendo y publicando una
interface de servicio web
• Un servicio web es una representación
estándar para algún recurso computacional o de
información que puede ser usado por otros
sistemas
60
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
61
Comparación SOA y Objetos Distribuidos
• Propaganda pública de la disponibilidad del servicio
• Potencialmente el enlace con el servicio puede ser en
tiempo de ejecución
• Oportunidad de crear nuevos servicios a través de
composición de otros servicios
• Pago por uso de servicios, por su uso más que por su
provisión
 Esto sustituye componentes caras raramente usadas
• Aplicaciones más chicas y compactas
• Aplicaciones que pueden ser reactivas y adaptar su
operación de acuerdo a su medio mediante el cambio de
enlaces a servicios durante la ejecución
62
Web Services Estándares
• Los servicios se basan en estándares basados
en XML
 Entonces, pueden funcionar en cualquier plataforma y
ser escritos en cualquier lenguaje
• Estándares más conocidos:
 SOAP - Simple Object Access Protocol
 WSDL - Web Services Description Language
 UDDI - Universal Description, Discovery and
Integration.
63
Ejemplo
• Un sistema de información para un auto provee
al conductor con información acerca del clima,
las condiciones del tráfico, información local,
etc. Esto está vinculado con la radio del auto de
forma que la información es entregada como
una señal en un canal específico de la radio
• El auto está equipado con un recibidor GPS
para conocer su posición y, basado en esa
posición, el sistema accede a un rango de
servicios de información. La información debe
ser entregada en el lenguaje especificado por el
conductor
64
Ejemplo (2)
User inter face
Locator
Discovers car
position
Weather
info
Receives request
from user
Receiver
Receives
information stream
from services
Transmitter
Sends position and
information request
to services
Radio
Translates dig ital
info stream to
radio signal
In-car software system
Mobile Info Service
Facilities
info
Translator
Road
locator
Traffic
info
Collates information
Road traffic info
command
gps coord
gps
coord gps coordgps coord
Language
info
Info
stream
Service discovery
Finds available
services
65
Evaluación 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 versión del producto
• Software Engineering Institute (SEI) propone:
 Architecture Tradeoff Analysis Method (ATAM)
 Software Architecture Analysis Method (SAAM)

Más contenido relacionado

La actualidad más candente

Metodología de desarrollo de software rad
 Metodología de desarrollo de software rad Metodología de desarrollo de software rad
Metodología de desarrollo de software rad
marcosxm
 
Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx
AlvareL
 
Estimación de Proyectos de Software
Estimación de Proyectos de SoftwareEstimación de Proyectos de Software
Estimación de Proyectos de Software
Daniel Valdivieso
 
Fundamentos arquitectura del software
Fundamentos arquitectura del softwareFundamentos arquitectura del software
Fundamentos arquitectura del software
venezuela2015
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
Nécio de Lima Veras
 
Uml (presentación 6)
Uml (presentación 6)Uml (presentación 6)
Uml (presentación 6)
programadorjavablog
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rup
Xochitl Saucedo Muñoz
 
Modelo cascada
Modelo cascadaModelo cascada
Modelo cascada
masilog
 
Unidad I Requerimientos
Unidad I RequerimientosUnidad I Requerimientos
Unidad I Requerimientos
guest409adc
 
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de software
sergio
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
Micky Jerzy
 
S212 Pf Pcu
S212 Pf PcuS212 Pf Pcu
S212 Pf Pcu
guestd0e1ff
 
Modelo 4+1
Modelo 4+1Modelo 4+1
Trabajo final diseño y análisis de sistemas.docx1
Trabajo final diseño y análisis de sistemas.docx1Trabajo final diseño y análisis de sistemas.docx1
Trabajo final diseño y análisis de sistemas.docx1
Juleysi China
 
Architecture business cycle ( abc )
Architecture business cycle ( abc )Architecture business cycle ( abc )
Architecture business cycle ( abc )
Dr Reeja S R
 
El ciclo de vida de los sistemas
El ciclo de vida de los sistemasEl ciclo de vida de los sistemas
El ciclo de vida de los sistemas
Ahiezer Apostol
 
Aseguramiento de la Calidad del Software
Aseguramiento de la Calidad del SoftwareAseguramiento de la Calidad del Software
Aseguramiento de la Calidad del Software
Tensor
 
Metricas
MetricasMetricas
Metricas
CECY50
 
Proceso de diseño
Proceso de diseñoProceso de diseño
Proceso de diseño
Juan Pablo Bustos Thames
 
Analisis y especificacion de requerimientos
Analisis y especificacion de requerimientosAnalisis y especificacion de requerimientos
Analisis y especificacion de requerimientos
UPTP
 

La actualidad más candente (20)

Metodología de desarrollo de software rad
 Metodología de desarrollo de software rad Metodología de desarrollo de software rad
Metodología de desarrollo de software rad
 
Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx
 
Estimación de Proyectos de Software
Estimación de Proyectos de SoftwareEstimación de Proyectos de Software
Estimación de Proyectos de Software
 
Fundamentos arquitectura del software
Fundamentos arquitectura del softwareFundamentos arquitectura del software
Fundamentos arquitectura del software
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 
Uml (presentación 6)
Uml (presentación 6)Uml (presentación 6)
Uml (presentación 6)
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rup
 
Modelo cascada
Modelo cascadaModelo cascada
Modelo cascada
 
Unidad I Requerimientos
Unidad I RequerimientosUnidad I Requerimientos
Unidad I Requerimientos
 
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de software
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
S212 Pf Pcu
S212 Pf PcuS212 Pf Pcu
S212 Pf Pcu
 
Modelo 4+1
Modelo 4+1Modelo 4+1
Modelo 4+1
 
Trabajo final diseño y análisis de sistemas.docx1
Trabajo final diseño y análisis de sistemas.docx1Trabajo final diseño y análisis de sistemas.docx1
Trabajo final diseño y análisis de sistemas.docx1
 
Architecture business cycle ( abc )
Architecture business cycle ( abc )Architecture business cycle ( abc )
Architecture business cycle ( abc )
 
El ciclo de vida de los sistemas
El ciclo de vida de los sistemasEl ciclo de vida de los sistemas
El ciclo de vida de los sistemas
 
Aseguramiento de la Calidad del Software
Aseguramiento de la Calidad del SoftwareAseguramiento de la Calidad del Software
Aseguramiento de la Calidad del Software
 
Metricas
MetricasMetricas
Metricas
 
Proceso de diseño
Proceso de diseñoProceso de diseño
Proceso de diseño
 
Analisis y especificacion de requerimientos
Analisis y especificacion de requerimientosAnalisis y especificacion de requerimientos
Analisis y especificacion de requerimientos
 

Similar a 6 arquitectura desoftware

Capitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_webCapitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_web
gabiar1708
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
ing-jefersonbrito
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de Coste
CAMILO
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
OscargiovanniAndiaMo
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
Hector Manuel Vanegas Solis
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
CAMILO
 
050608 architect academy webcast 1
050608 architect academy webcast 1050608 architect academy webcast 1
050608 architect academy webcast 1
juliank13
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
Juan Pablo Bustos Thames
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de Coste
CAMILO
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y Coste
CAMILO
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de doste
CAMILO
 
PROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSPROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOS
CAMILO
 
Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de Costo
CAMILO
 
Desarrollo de sistemas de información
Desarrollo de sistemas de informaciónDesarrollo de sistemas de información
Desarrollo de sistemas de información
Eder Martin Shapiama
 
Clase1
Clase1Clase1
Clase7
Clase7Clase7
Clase7
juanca84
 
Clase7 unidad1
Clase7 unidad1Clase7 unidad1
Clase7 unidad1
zurda21
 
S12-DAW-2022S1.pptx
S12-DAW-2022S1.pptxS12-DAW-2022S1.pptx
S12-DAW-2022S1.pptx
Luis Fernando Aguas Bucheli
 
Ingenieria de sistemas basada en modelos
Ingenieria de sistemas basada en modelosIngenieria de sistemas basada en modelos
Ingenieria de sistemas basada en modelos
Bryan Thomas
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de software
Jose Diaz Silva
 

Similar a 6 arquitectura desoftware (20)

Capitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_webCapitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_web
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de Coste
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
 
050608 architect academy webcast 1
050608 architect academy webcast 1050608 architect academy webcast 1
050608 architect academy webcast 1
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de Coste
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y Coste
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de doste
 
PROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSPROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOS
 
Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de Costo
 
Desarrollo de sistemas de información
Desarrollo de sistemas de informaciónDesarrollo de sistemas de información
Desarrollo de sistemas de información
 
Clase1
Clase1Clase1
Clase1
 
Clase7
Clase7Clase7
Clase7
 
Clase7 unidad1
Clase7 unidad1Clase7 unidad1
Clase7 unidad1
 
S12-DAW-2022S1.pptx
S12-DAW-2022S1.pptxS12-DAW-2022S1.pptx
S12-DAW-2022S1.pptx
 
Ingenieria de sistemas basada en modelos
Ingenieria de sistemas basada en modelosIngenieria de sistemas basada en modelos
Ingenieria de sistemas basada en modelos
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de software
 

6 arquitectura desoftware

  • 1. Introducción a la Ingeniería de Software Arquitectura de Software
  • 2. 2 Bibliografía • 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
  • 3. 3 Arquitectura de Software Especificación de Requerimientos del sistema (SRS) Sistema instalado y funcionando En este camino hay mucho por hacer. ¿Comenzamos a programar para terminar lo antes posible? - ¿Cuáles serían los riesgos?
  • 4. 4 Arquitectura de Software Especificación de Requerimientos del sistema (SRS) Sistema instalado y funcionando -Arquitectura de Software -Diseño detallado -Implementación -Verificación No es un proceso en cascada. No se está definiendo un proceso.
  • 5. 5 Arquitectura de Software Los sistemas complejos están compuestos de subsistemas que interactúan bajo el control de un diseño de sistema Arquitectura de Software  Los subsistemas que componen el sistema,  las interfaces y  las reglas de interacción entre ellos.
  • 6. 6 Definición 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
  • 7. 7 Importancia Ventajas de diseñar y documentar explícitamente una arquitectura de software:  Comunicación entre stakeholders  Decisiones tempranas de diseño  Reuso a gran escala Bass, et al, Software Architecture in Practice 2ed. Addison-Wesley.
  • 8. 8 ¿Qué Afecta y qué la Determina? • La arquitectura de software afecta la  Performance  Seguridad (security y safety)  Disponibilidad  Mantenibilidad  … • Entonces, el estilo y estructura particular elegido para una aplicación dependen fuertemente de los requerimientos no funcionales.
  • 9. 9 Conflictos entre Soluciones • El sistema debe ser “muy” performante y “muy” mantenible • ¿Cuál es el conflicto al momento de elegir el estilo arquitectónico? • ¿Cómo se puede solucionar?  Solución de compromiso  Diferentes estilos para distintas partes del sistema
  • 10. 10 ¿Qué tan Fácil es Modificarla? • Sears EEUU 527 metros • Petronas Malasia 452 metros • Taipei 101 China 508 metros
  • 11. 11 ¿Qué tan Fácil es Modificarla? Me gustaría que el ascensor quedara del otro lado Estaría bárbaro que el puente estuviera 23 pisos más arriba, la vista sería mejor
  • 12. 12 ¿Qué tan Fácil es Modificarla? Burj Dubai, otros metros más arriba, Emiratos Árabes
  • 14. 14 Patrones de Software • Propósito  Compartir una solución probada,  ampliamente aplicable  a un problema particular de diseño.  El patrón se presenta en una forma estándar que permite que sea fácilmente reutilizado. • Cinco piezas importantes de un patrón  Nombre  Contexto  Problema  Solución  Consecuencias (positivas y negativas)
  • 15. 15 Estilos, Patrones e Idioms • Los patrones de diseño se agrupan en tres tipos  Estilos arquitectónicos: Soluciones de organización a nivel del sistema  Patrones de diseño: Soluciones a problemas detallados de diseño de software  Idioms: Soluciones útiles para problemas específicos en algún lenguaje de programación
  • 16. 16 Estilos Arquitectónicos • Un estilo arquitectónico  expresa un esquema de organización estructural para sistemas de software.  Provee un conjunto de tipos de elementos predefinidos,  especifica sus responsabilidades e  incluye reglas y guías para organizar las relaciones entre ellos Capa n Capa n - 1 Capa 2 Capa 1
  • 17. 17 Patrones de Diseño • Un patrón de diseño  provee un esquema para refinar los elementos de un sistema de software o las relaciones entre ellos.  Describe una estructura recurrente de elementos de diseño interconectados que soluciona un problema general de diseño dentro de un contexto particular • Mencionen algún patrón de diseño que conozcan
  • 18. 18 Idioms • Un idiom  es un patrón de bajo nivel, específico para un lenguaje de programación.  Describe como implementar aspectos particulares de elementos o de las relaciones entre ellos usando las características de un lenguaje particular.
  • 20. 20 Beneficios de Usar Estilos • Permite seleccionar una solución entendible y probada a ciertos problemas, definiendo los principios organizativos del sistema • Al basar la arquitectura en estilos que son conocidos las personas entienden más fácilmente las características importantes de la misma
  • 21. 21 Formas de Uso de los Estilos • Solución para el diseño del sistema  Algún estilo sirve.  Se adopta y se usa como una de las estructuras centrales de la arquitectura. • Base para una adaptación  Algún estilo soluciona parcialmente los problemas.  Se puede buscar adaptar el estilo para las restricciones particulares que se tienen.
  • 22. 22 Formas de Uso de los Estilos (2) • Inspiración para una solución relacionada  Ningún estilo sirve.  Sin embargo, entender problemas que solucionan ciertos estilos puede llevar a entender mejor el problema actual.  Entonces, se puede encontrar una solución que de alguna forma está relacionada con estilos existentes • Motivación para un nuevo estilo  El problema no es atacado por ningún estilo encontrado  Es una buena oportunidad para encontrar una solución general al problema y crear un nuevo estilo
  • 23. 23 Algunos Estilos • Shared Data (Datos Compartidos)  Pizarrón (Blackboard) • Cliente-Servidor • Capas Jerárquicas • Descomposición 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)
  • 24. 24 Shared-Data • Generalidades  Hay un almacenamiento central de datos y un conjunto de componentes que operan sobre éste.  Interacción - intercambio de datos persistentes  Múltiples accesos a los datos  Al menos un almacenamiento compartido  Si se avisa al consumidor de nuevos datos de interés es un Pizarrón (Blackboard)  Si es el consumidor quien busca los datos es un Repositorio
  • 25. 25 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. • Actividades como respaldos, seguridad, control de acceso y recuperación están centralizadas. • Sin embargo, diferentes componentes podría tener distintas políticas de recuperación, respaldo, etc.
  • 26. 26 Pizarrón (Blackboard) • Fuentes de Conocimiento  Procesos independientes que corresponden a particiones del conocimiento del mundo y del dominio dependientes de la aplicación  Responden a cambios en el pizarrón • Estructura de datos del Pizarrón  Estado completo de la solución del problema  único medio por el cual las Fuentes de conocimiento interactúan para llegar a la solución • Control  Guiado enteramente por el estado del pizarrón  Las Fuentes de conocimiento responden oportunamente cuando los cambios en el pizarrón aplican  Puede implementarse en las FC, en el pizarrón, en un componente separado o cualquier combinación de éstos.
  • 27. 27 Pizarrón (Blackboard) Pizarrón FC 1 FC 7 FC 6 FC 2 FC 3 FC 4 FC 5 Cálculos Memoria (Compartida)
  • 28. 28 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 máquina. • Los clientes conocen a los servidores pero no a otros clientes y los servidores no tienen porqué conocer a los clientes • la asignación de procesos a procesadores no tiene porqué ser 1:1
  • 29. 29 Cliente-Servidor (2) Network SC1SC2 CC1 CC2 CC3 CC5 CC6CC4 Server computer Client computer s1, s2 s3, s4 c5, c6, c7 c1 c2 c3, c4 c8, c9 c10,c11,c12 Ci = clientes Si = servidores
  • 30. 30 Capas Jerárquicas • 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
  • 31. 31 Capas Jerárquicas (2) • Modelo estricto: una capa sólo utiliza servicios de la inmediata inferior. • Modelo relajado: se pueden “saltar” capas. • Definición de protocolos mediante los que interactúan las capas
  • 32. 32 Ventajas y Desventajas • Ventajas  Facilita la comprensión  Facilita mantenimiento  Facilita reutilización  Facilita portabilidad • Desventajas  No siempre es fácil estructurar en capas ni identificar los niveles de abstracción a partir de los Requerimientos.  la interpretación de comandos en múltiples niveles puede afectar el desempeño.
  • 33. 33 Descomposición O.O. • Se descompone el sistema en un conjunto de objetos que se comunican. • Representación de datos y operaciones asociadas se encapsulan en un objeto. • Herencia, polimorfismo, sobrecarga de operadores, enlace dinámico.
  • 34. 34 Ventajas y Desventajas • Ventajas  La implementación de los objetos puede ser cambiada sin afectar a otros objetos.  Promueve la reutilización de componentes.  Muchos objetos representan entidades de la realidad por lo que es fácil 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.
  • 35. 35 Tubos y Filtros • Se descompone el sistema en módulos funcionales • Interacción - sucesiva transformación de flujos de datos • Los datos llegan a un filtro, se transforman y son pasados a través de tubos al siguiente filtro • Un único filtro puede pasar datos a múltiples tubos y recibir datos de múltiples tubos • Cada filtro es independiente del resto y no conoce la identidad de los otros filtros • La transformación del filtro puede comenzar antes de terminar de leer la entrada • Respetando el grafo, no importa la secuencia (paralelismo) Filtro Tubo
  • 36. 36 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 cuál es el formato de los datos. • Tiene que ser “genérico” si las componentes son reusadas.  Sistemas interactivos son difíciles de construir con este estilo.  Ineficiente si hace más de lo que debe o si los filtros repiten chequeos
  • 37. 37 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  Control basado en eventos • Cada subsistema puede responder a eventos externos – Eventos generados por otros subsistemas – Eventos generados por el ambiente del sistema
  • 38. 38 Control Centralizado (1) • El control centralizado se puede dividir en dos clases  Llamada-Retorno Principal Subr. A Subr.B Subr.C Subsistema Llamado/Retorno
  • 39. 39 Control Centralizado (2) • Modelo Gerente  Una componente es el gerente del sistema y controla a los otros procesos del sistema Controlador del Sistema A B F E C D
  • 40. 40 Control Basado en Eventos • En los modelos centralizados las decisiones de control suelen estar determinadas por valores de alguna variable de estado del sistema • En cambio, el control basado en eventos es guiado por eventos generados externamente • Ejemplos  Modelos emisión (broadcast). Se emiten los eventos a todos los subsistemas.  Modelos guiados por interrupciones. Se usan en sistemas de tiempo real. Las interrupciones son pasadas por un manejador de interrupciones a otras componentes para su procesamiento.
  • 41. 41 Publicar-Suscribir • Sistema de componentes independientes que anuncian y se suscriben a eventos • Interacción vía 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 invocación implícita
  • 42. 42 Arquitecturas de Sistemas Distribuidos • Ventajas  Se comparten recursos.  Apertura. Normalmente estos sistemas están diseñados con protocolos estándar.  Concurrencia.  Escalabilidad  Tolerancia a fallas El procesamiento de la información es distribuido entre varias computadoras.
  • 43. 43 Arquitecturas de Sistemas Distribuidos (2) • Desventajas  Complejidad  Seguridad  Difíciles de gestionar  Muy poco predecibles • Ejemplos  Cliente-servidor  Objetos distribuidos  Peer-to-peer  Service oriented architecture (SOA)
  • 44. 44 Middleware • Las componentes pueden ser  Implementadas en diferentes lenguajes  Ejecutarse en distintos tipos de procesadores  Usar diferentes modelos de datos  Representar de forma diferente la información  Usar distintos protocolos de comunicación • Entonces, se necesita software para gestionar la comunicación y el intercambio de datos entre componentes  Dicho software se denomina middleware • Esta en el medio de las diferentes componentes distribuidas
  • 45. 45 Middleware (2) • Normalmente son usados middleware que son comprados comercialmente ya que son de propósito general.
  • 46. 46 Cliente-Servidor • El diseño de sistemas cliente-servidor debería reflejar la estructura lógica de la aplicación. • Una forma de mirar a una aplicación es la siguiente: Capa de Presentación Capa de Procesamiento Capa Gestión de Datos
  • 47. 47 Cliente-Servidor (2) • Capa de presentación  Presentación de información al usuario e interacción con el mismo • Capa de procesamiento  Implementación de la lógica de la aplicación • Capa gestión de datos  Operaciones de bases de datos y archivos • En sistemas distribuidos es importante distinguir claramente esta separación ya que es posible distribuir cada capa en computadoras diferentes
  • 48. 48 Cliente-Servidor en 2 Niveles • Es la arquitectura más simple cliente-servidor • Varios clientes y un servidor (o varios servidores idénticos) • 2 formas diferentes:  Cliente fino • El procesamiento de la información y la gestión de los datos ocurre en el servidor. El cliente sólo es responsable de ejecutar el software de presentación.  Cliente grueso • El servidor es responsable sólo de la gestión de los datos. El cliente ejecuta el procesamiento de la aplicación (la lógica de la aplicación) y la presentación.
  • 49. 49 Cliente Fino, Grueso y Applet • Cliente fino  Procesamiento pesado del lado del servidor  Procesamiento pesado en la red • Cliente grueso  Mejor distribución del procesamiento  La administración del sistema es más compleja • Cuando el software de aplicación cambia hay que reinstalar la aplicación en cada computadora cliente • Java Applets descargables  Están en el medio entre cliente fino y grueso  Luego de descargar el applet se ejecuta parte de la lógica de la aplicación en el cliente
  • 50. 50 Algunos Problemas • En 2 niveles hay que distribuir las tres capas (presentación, lógica y datos) en dos sistemas de computadoras  Pueden surgir problemas de • escalabilidad y rendimiento con el cliente fino • o de gestión del sistema si se usa cliente grueso • Para evitar estos problemas una alternativa es usar una arquitectura cliente-servidor en 3 niveles
  • 51. 51 Cliente-Servidor en 3 Niveles • La presentación, la lógica y los datos se separan como procesos lógicos diferentes distribuidos en distintas máquinas • Ejemplo: Sistema bancario por internet Client e Client e Client e Client e Servidor web Provisión de servicios de cuenta Servidor de BD SQL Base Datos Cuenta Cliente HTTP Consulta SQL
  • 52. 52 Comparación • La arquitectura en 3 niveles  Es más escalable que la de 2 niveles  Reduce el tráfico en la red en comparación con cliente fino  La capa de procesamiento de la aplicación es fácilmente actualizada ya que está localizada centralmente • Cliente servidor en múltiples niveles  Ejemplo: aplicación que necesita acceder a múltiples fuentes de datos (integración de datos)
  • 53. 53 Ejemplos Arquitectura Aplicaciones Arquitectura C/S dos niveles cliente fino • Aplicaciones legadas en las cuales no se puede separar el procesamiento de la gestión de los datos • Aplicaciones intensivas en las computaciones con poco o nada de gestión de datos (ej: compiladores) • Aplicaciones intensivas en manejo de datos (browsing y consultas) con poco o nada de procesamiento de aplicación Arquitectura C/S dos niveles cliente grueso • Aplicaciones donde el procesamiento de la aplicación es provisto off-the-shelf en el cliente • Aplicaciones donde se hacen intensivos procesamientos computacionales de los datos (ej: visualización de datos) Arquitectura C/S tres niveles o múltiples niveles • Aplicaciones de gran escala con cientos o miles de clientes • Aplicaciones en donde tanto los datos como el procesamiento son volátiles • Aplicaciones con fuentes de datos múltiples
  • 54. 54 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 específicos y deben conocer como contactar a estos servidores • Enfoque más general  Remover la distinción entre clientes y servidores  Diseñar la arquitectura como una de objetos distribuidos
  • 55. 55 Objetos Distribuidos (2) • Se compone de objetos que proveen servicios a otros objetos y usan servicios de otros objetos  No hay distinción entre clientes y servidores  Pueden ser distribuidos entre distintas computadoras en una red y se comunican a través de middleware • Este tipo de middleware se conoce como Object Request Broker (ORB), por ejemplo, CORBA.  Es más complejo de diseñar que cliente-servidor Software bus o1 o2 o3 o4 o5 o6 S(o1) S(o2) S(o3) S(o4) S(o5) S(o6)
  • 56. 56 Peer-to-Peer • Sistemas descentralizados donde las computaciones pueden ser realizadas en cualquier nodo de la red  En principio no hay distinción entre clientes y servidores  El sistema se diseña para usar el poder de almacenamiento y procesamiento de múltiples computadoras en una red  Los protocolos que permiten la comunicación entre nodos están embebidos en la propia aplicación • Cada nodo debe correr una copia de la aplicación
  • 57. 57 Peer-to-Peer (2) • Ejemplos  Sistemas para compartir archivos  Mensajería instantánea  Seti@home • Y otros @home  Se está comenzando a usar también 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
  • 58. 58 Peer-to-Peer (3) • Algunos problemas  Overhead  Seguridad  Confianza • Entonces, son más usados en sistemas que no son críticos respecto a la información
  • 59. 59 Service Oriented Architecture (SOA) • Organizaciones que quieren hacer su información accesible a otros programas pueden hacerlo definiendo y publicando una interface de servicio web • Un servicio web es una representación estándar para algún recurso computacional o de información que puede ser usado por otros sistemas
  • 60. 60 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
  • 61. 61 Comparación SOA y Objetos Distribuidos • Propaganda pública de la disponibilidad del servicio • Potencialmente el enlace con el servicio puede ser en tiempo de ejecución • Oportunidad de crear nuevos servicios a través de composición de otros servicios • Pago por uso de servicios, por su uso más que por su provisión  Esto sustituye componentes caras raramente usadas • Aplicaciones más chicas y compactas • Aplicaciones que pueden ser reactivas y adaptar su operación de acuerdo a su medio mediante el cambio de enlaces a servicios durante la ejecución
  • 62. 62 Web Services Estándares • Los servicios se basan en estándares basados en XML  Entonces, pueden funcionar en cualquier plataforma y ser escritos en cualquier lenguaje • Estándares más conocidos:  SOAP - Simple Object Access Protocol  WSDL - Web Services Description Language  UDDI - Universal Description, Discovery and Integration.
  • 63. 63 Ejemplo • Un sistema de información para un auto provee al conductor con información acerca del clima, las condiciones del tráfico, información local, etc. Esto está vinculado con la radio del auto de forma que la información es entregada como una señal en un canal específico de la radio • El auto está equipado con un recibidor GPS para conocer su posición y, basado en esa posición, el sistema accede a un rango de servicios de información. La información debe ser entregada en el lenguaje especificado por el conductor
  • 64. 64 Ejemplo (2) User inter face Locator Discovers car position Weather info Receives request from user Receiver Receives information stream from services Transmitter Sends position and information request to services Radio Translates dig ital info stream to radio signal In-car software system Mobile Info Service Facilities info Translator Road locator Traffic info Collates information Road traffic info command gps coord gps coord gps coordgps coord Language info Info stream Service discovery Finds available services
  • 65. 65 Evaluación 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 versión del producto • Software Engineering Institute (SEI) propone:  Architecture Tradeoff Analysis Method (ATAM)  Software Architecture Analysis Method (SAAM)