1
Arquitectura de Software(Estilos Arquitectónicos)
Universidad de los AndesDemián Gutierrez
Mayo 2011
2
Diseño Arquitectónico
Diseño Arquitectónico
Arquitectura del Software
Bibliotecas /Componentes
Patrones de Diseño
Clases / Funciones
Frameworks(Marcos)
Estilos Arquitectónicos
3
Diseño Arquitectónico
¿Qué es un estilo?-
¿Qué es un estilo arquitectónico?
4
Esti los Arquitectónicos
Art Deco
Deconstructivismo
5
Esti los Arquitectónicos
Los ingenieros civiles, cuando tienen que construir un puente
generalmente seleccionan un tipo de puente determinado que se adapte a las
necesidades del contexto y del
problema a resolver...
6
Esti los Arquitectónicos
La arquitectura de un sistema de software puede basarse en uno (o en varios)
modelos o estilos arquitectónicos bien conocidos
Un estilo arquitectónico define una familia de sistemas (cierto tipo de sistemas) en términos de patrones estructurales, de
control, de comunicación, etcétera
Fuente: Sommerville (Cap 11)
7
Esti los Arquitectónicos
Un conjunto de conectores entre componentes (comunicación, coordinación, cooperación, etcétera)
Restricciones que definen cómo se integran los componentes para formar el sistema
Un conjunto de componentes(con sus responsabilidades)
Modelos que permiten comprender las propiedades de un sistema general en función de las propiedades
conocidas de las partes que lo integran
Un estilo arquitectónico describe:
Fuente: Pressman (Cap 10)
8
Esti los Arquitectónicos
Para todas las arquitecturas (estilos arquitectónicos) mostrados a
continuación es necesario preguntarse:
¿Qué ventajas tiene el estilo?¿Qué desventajas tiene?
¿En qué contextos aplica?
9
¿Otros aspectos de la gestión de proyectos?Una ref lexión f inal sobre lo profundo del abismo
Seguridad Rendimiento UsabilidadConfiabilidad
EscalabilidadPortabilidad ReusabilidadDisponibilidad
Facilidad dePrueba
Eficiencia(memoria,ejecución)
Mantenibilidad
¿De qué forma impacta el uso un estilo en las propiedades del sistema?
Modificabilidad Extensibilidad otras...
10
Esti los Arquitectónicos
Fuente: http://en.wikipedia.org/wiki/Monolithic_application
Una arquitectura monolítica describe una aplicación en la que toda la
funcionalidad del sistema (ej. acceso a datos, interfaz de usuario, lógica,
etcétera) está implementada y mezclada en una sola capa.
Esto, en la gran mayoría de los casos, no es una buena idea... ¿Por qué?
Sistema(TODO EL SISTEMA)
¿Tip: Recuerdan el ejemplo del sistema de empaquetamiento de Sommerville y
la discusión subsecuente?
11
Esti los Arquitectónicos(Repositorio / Pizarrón)
Aplicación / Modulo 1
Aplicación / Modulo 2
Aplicación / Modulo 3
Aplicación / Modulo 4
...Aplicación / Modulo N
Repositorio
(Base de Datos, Sistema de Archivos, Memoria Compartida, etcétera)
Repositorio / Pizarron
12
Esti los Arquitectónicos(Cliente / Servidor)
Cliente 1
Cliente 2
Cliente N
...
Servidor 1
Servidor N
...
Petición
Respuesta
RedInternet,
LAN, WAN
Cliente Servidor
13
Esti los Arquitectónicos(Cliente / Servidor)
Cliente “Liviano” vs Cliente Pesado
ClienteServidor
Petición
Respuesta
Red
Liviano: Lógica de la Aplicación solamente del lado del servidor
Pesado: Lógica de la Aplicación parcial o totalmente del lado del cliente
14
Esti los Arquitectónicos(Cliente / Servidor - WEB)
Fuente Imagen:http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web
15
Esti los Arquitectónicos(Cliente / Servidor - WEB)
Fuente Imagen:http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web
16
Esti los Arquitectónicos(Tuberías y Fi ltros)
Filtro 1
Filtro 2
Filtro 3
Filtro 5Filtro 4
Tuberías(Flujo de Datos /
Información)
Filtros(Transformación
de Datos / Información)
Tuberías y Filtros
17
Esti los Arquitectónicos(Tuberías y Fi ltros)
Tuberías y Filtros
18
Esti los Arquitectónicos(Tuberías y Fi ltros)
Tuberías y Filtros
19
Arquitectura (Ejemplo)
Arquitectura por Capas
Capa 1
Capa 2
Capa N
...
API (Application
programming interface)
Interfaz
Mas S
eguridad / Protección
Menos A
bstracción
20
Arquitectura (Ejemplo)
Capa de Presentación
(Interfaz Gráfica de Usuario)
(HTML, Swing, Qt, GTK, etcétera)
Capa de Proceso / Negocio
(Lógica / Reglas de Negocio)
Capa de Persistencia BD
Arquitectura a tres Capas
(Muy utilizado en aplicaciones empresariales)
21
Arquitectura (Ejemplo con más detal le)
BD
Motorde
Workflow(CledaFlow, CledaScheduler y
CledaBase)
Hib
ern
ate
JDB
C
Documentos
MVCCledaMVC(Struts1)
oEcho2
Modelode
Dominio
Servlets
NavegadorWEB
CledaTags
CledaCore
Aplicación
Arquitectura a tres Capas
(Muy utilizado en aplicaciones empresariales)
22
Esti los Arquitectónicos(Arquitectura por Capas)
Arquitectura por Capas
23
Esti los Arquitectónicos(Arquitectura por Capas)
Arquitectura por Capas
24
Esti los Arquitectónicos(Control Centralizado - Síncrono)
Control Centralizado
Programa Principal
Rutina 1 Rutina 2 Rutina 3
Rutina 1.1 Rutina 1.2 Rutina 2.1 Rutina 2.1 Rutina 3.1 Rutina 3.2
25
Esti los Arquitectónicos(Control Centralizado - Asíncrono)
Control Centralizado
Controladordel Sistema
ProcesosTipo 1
(Ej: Sensores)
ProcesosTipo 2
(Ej: Cálculo)
ProcesosTipo 4
(Ej: Actuadores)
ProcesosTipo 3
(Ej: Fallos)
ProcesosTipo 5
(Ej: Fallos)
26
Esti los Arquitectónicos(Sistemas Dirigidos por Eventos)
Cada subsistema genera eventos según su condición y define que eventos de otros subsistemas desea atender
Manejador de Eventos
Subsistema 1
Subsistema 2
...Subsistema
N
El manejador de eventos se encarga de enviar los eventos generados a aquellos sistemas interesados en recibirlos
27
Esti los Arquitectónicos(Interprete / Máquina Virtual)
Programaa Interpretar
Máquina Virtual
Hardware Real(CPU, dispositivos, memoria, etc)
Hardware Simulado(CPU, dispositivos, etc)
Datos(Estado del Programa)
28
Esti los Arquitectónicos(Interprete / Máquina Virtual)
“Write once, run anywhere”
Sun Microsystems
29
Esti los Arquitectónicos(Interprete / Máquina Virtual)
“Write once, run anywhere”
Sun Microsystems
30
Esti los Arquitectónicos(Interprete / Máquina Virtual)
CódigoJava
Foo.java
CódigoScala
Foo.scl
CódigoClojureFoo.clj
CódigoJRuby
Foo.ruby
CódigoJython
Foo.phy
Java Byte Code
CompiladorClojure
(...)
CompiladorScala(...)
CompiladorJython
(...)
CompiladorJRuby
(...)
CompiladorJava
(javac)
Unix Linux Windows Mac
JVM JVM JVM JVM
JavaRuntime
+
La flexibilidad de la arquitectura Java
31
Esti los Arquitectónicos(RPC / RMI)
RPC: Remote Procedure Call
RMI: Remote Method Invocation
32
Esti los Arquitectónicos(RPC / RMI)
RPC: Remote Procedure Call
RMI: Remote Method Invocation
33
Esti los Arquitectónicos(Arquitecturas de Objetos Distribuidos / CORBA)
Objeto1 (Instancia)
Nodo 1 Nodo 2 Nodo N
Objeto2 (Instancia)
Objeto3 (Instancia)
Objeto N (Instancia)
Red (Bus software)
Nodo Cliente
El nodo cliente utiliza (de forma transparente) los
objetos que existe y están corriendo en los demás nodos
34
Esti los Arquitectónicos(Sist. Distribuidos / Arquitecturas Peer To Peer)
P1
P7P4
P6P2
P8P3
P5
P9
Un par puede jugar un rol de cliente y/o de
servidor, dependiendo
de las necesidades del momento
Cada uno de los pares descubre a sus otros pares y establecen conexiones al mismo nivel (no de forma
jerárquica) cooperando para lograr un objetivo determinado
35
Esti los Arquitectónicos(Sist. Distribuidos / Arquitecturas Peer To Peer)
Cada uno de los pares descubre a sus otros pares y establecen conexiones al mismo nivel (no de forma
jerárquica) cooperando para lograr un objetivo determinado
P1
P7Servidor /Coordinador
P6P2
P8P3
P5
P9
Un “servidor” puede servir
para coordinar el
descubrimiento de los pares
36
Esti los Arquitectónicos(Arquitectura basada en Plugins)
Fuente: http://en.wikipedia.org/wiki/Plugin
API(Application programming interface)
Interfaz bien definida
37
Esti los Arquitectónicos(Plugins / Ecl ipse)
Una estrategia basada en plugins hace que un sistema pueda ser fácilmente extendido y
complementado por terceras partes
38
Esti los Arquitectónicos(Plugins / Ecl ipse)
39
Esti los Arquitectónicos(Arquitecturas de Referencia)
Normalmente se obtienen por medio del estudio de una clase de aplicación
(de un dominio en particular)
Representan una arquitectura ideal que
incluye todas las características que cierto
tipo (clase) de sistema podría incorporar
40
Lecturas Recomendadas
Pressman, Ingeniería del Software, Capítulo 10
Mary Shaw, David Garlan, Software Architecture Perspectives on an Emerging Discipline
(Está en la biblioteca)
Sommerville, Ingeniería del Software, Capítulos 11, 12 y 13 (En ese orden de prioridades)
Patrones Arquitectónicoshttp://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)
41
Gracias
¡Gracias!