Está en la página 1de 41

Arquitectura de Software

(Estilos Arquitectónicos)

Universidad de los Andes


Demián Gutierrez
Mayo 2011
1
Diseño Arquitectónico

Arquitectura
del Software
Diseño
Arquitectónico

Estilos Frameworks
Arquitectónicos (Marcos)

Patrones de Bibliotecas /
Diseño Componentes

Clases /
Funciones

2
Diseño Arquitectónico

¿Qué es un estilo?
-
¿Qué es un estilo
arquitectónico?

3
Estilos Arquitectónicos

Deconstructivismo

Art Deco
4
Estilos 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...
5
Estilos Arquitectónicos

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

La arquitectura de un sistema de software


puede basarse en uno (o en varios)
modelos o estilos arquitectónicos bien
conocidos
Fuente: Sommerville (Cap 11) 6
Estilos Arquitectónicos

Un estilo arquitectónico describe:


Un conjunto de componentes
(con sus responsabilidades)

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

Modelos que permiten comprender las propiedades de


un sistema general en función de las propiedades
conocidas de las partes que lo integran
Fuente: Pressman (Cap 10) 7
Estilos 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?

8
¿Otros aspectos de la gestión de proyectos?
Una reflexión final sobre lo profundo del abismo

Seguridad Confiabilidad Rendimiento Usabilidad

Eficiencia
Facilidad de
Mantenibilidad (memoria,
Prueba
ejecución)

Portabilidad Disponibilidad Reusabilidad Escalabilidad

Modificabilidad Extensibilidad otras...

¿De qué forma impacta el uso un estilo en las


propiedades del sistema?
9
Estilos Arquitectónicos

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
¿Tip: Recuerdan el ejemplo del sistema
de empaquetamiento de Sommerville y
(TODO EL
la discusión subsecuente? SISTEMA)

Fuente: http://en.wikipedia.org/wiki/Monolithic_application 10
Estilos Arquitectónicos
(Repositorio / Pizarrón)

Aplicación / Aplicación / Aplicación /


Modulo 1 Modulo 2 Modulo 3

Repositorio
(Base de Datos, Sistema de Archivos,
Memoria Compartida, etcétera)

Aplicación / Aplicación /
...
Modulo 4 Modulo N

Repositorio / Pizarron
11
Estilos Arquitectónicos
(Cliente / Servidor)

Petición

Respuesta

Cliente 1

Red Servidor 1
...
Internet,
Cliente 2 LAN, WAN
...

Servidor N
Cliente N

Cliente Servidor
12
Estilos Arquitectónicos
(Cliente / Servidor)

Petición

Respuesta

Red

Cliente
Servidor

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

Cliente “Liviano” vs Cliente Pesado


13
Estilos Arquitectónicos
(Cliente / Servidor - WEB)

Fuente Imagen:
http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web 14
Estilos Arquitectónicos
(Cliente / Servidor - WEB)

Fuente Imagen:
http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web 15
Estilos Arquitectónicos
(Tuberías y Filtros)

Filtros Tuberías
(Transformación (Flujo de
de Datos / Datos /
Información) Información)
Filtro 3

Filtro 1 Filtro 4 Filtro 5

Filtro 2

Tuberías y Filtros
16
Estilos Arquitectónicos
(Tuberías y Filtros)

Tuberías y Filtros
17
Estilos Arquitectónicos
(Tuberías y Filtros)

Tuberías y Filtros
18
Arquitectura (Ejemplo)

API
(Application
Capa 1 programming
Mas Seguridad / Protección

interface)
Interfaz
Menos Abstracción

Capa 2

...

Capa N

Arquitectura por Capas


19
Arquitectura (Ejemplo)

Capa de
Presentación
Capa de
Proceso /
(Interfaz
Negocio
Gráfica de Capa de
Usuario) Persistencia BD
(Lógica /
Reglas de
(HTML, Swing,
Negocio)
Qt, GTK,
etcétera)

Arquitectura a tres Capas


(Muy utilizado en aplicaciones empresariales) 20
Arquitectura (Ejemplo con más detalle)

Servlets Aplicación

Modelo
de
Dominio
CledaTags

MVC

Hibernate
CledaMVC

JDBC
Navegador
(Struts1) Documentos
WEB
o BD
Echo2

CledaCore Motor
de
Workflow
(CledaFlow, CledaScheduler y
CledaBase)

Arquitectura a tres Capas


(Muy utilizado en aplicaciones empresariales) 21
Estilos Arquitectónicos
(Arquitectura por Capas)

Arquitectura por Capas


22
Estilos Arquitectónicos
(Arquitectura por Capas)

Arquitectura por Capas


23
Estilos Arquitectónicos
(Control Centralizado - Síncrono)

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

Control Centralizado
24
Estilos Arquitectónicos
(Control Centralizado - Asíncrono)

Procesos Procesos
Tipo 1 Tipo 4
(Ej: Sensores) (Ej: Actuadores)

Controlador
del Sistema

Procesos Procesos Procesos


Tipo 2 Tipo 3 Tipo 5
(Ej: Cálculo) (Ej: Fallos) (Ej: Fallos)

Control Centralizado
25
Estilos Arquitectónicos
(Sistemas Dirigidos por Eventos)

Cada subsistema genera eventos según su condición y define que


eventos de otros subsistemas desea atender

Subsistema Subsistema Subsistema


...
1 2 N

Manejador de Eventos

El manejador de eventos se encarga de enviar los eventos


generados a aquellos sistemas interesados en recibirlos
26
Estilos Arquitectónicos
(Interprete / Máquina Virtual)

Datos
Programa
(Estado del
a Interpretar
Programa)

Hardware Simulado
(CPU, dispositivos, etc)

Máquina Virtual

Hardware Real
(CPU, dispositivos, memoria, etc)
27
Estilos Arquitectónicos
(Interprete / Máquina Virtual)

“Write once, run


anywhere”
Sun Microsystems

28
Estilos Arquitectónicos
(Interprete / Máquina Virtual)

“Write once, run


anywhere”
Sun Microsystems

29
Estilos Arquitectónicos
(Interprete / Máquina Virtual)
Código Código Código Código Código
Java Scala Clojure JRuby Jython
Foo.java Foo.scl Foo.clj Foo.ruby Foo.phy

Compilador Compilador Compilador Compilador Compilador


Java Scala Clojure JRuby Jython
(javac) (...) (...) (...) (...)

Java Byte Code

+
Unix Linux Windows Mac Java
Runtime
JVM JVM JVM JVM

La flexibilidad de la arquitectura Java


30
Estilos Arquitectónicos
(RPC / RMI)

RPC: Remote Procedure Call


RMI: Remote Method Invocation
31
Estilos Arquitectónicos
(RPC / RMI)

RPC: Remote Procedure Call


RMI: Remote Method Invocation
32
Estilos Arquitectónicos
(Arquitecturas de Objetos Distribuidos / CORBA)

Objeto1 Objeto2 Objeto3 Objeto N


(Instancia) (Instancia) (Instancia) (Instancia)

Nodo 1 Nodo 2 Nodo N

Red (Bus software)

El nodo cliente utiliza (de


forma transparente) los
objetos que existe y están
corriendo en los demás nodos
Nodo Cliente
33
Estilos Arquitectónicos
(Sist. Distribuidos / Arquitecturas Peer To Peer)

P2 P6

P5
Un par puede
jugar un rol de P1
cliente y/o de
servidor,
dependiendo P7
P4
de las
necesidades
del momento

P3 P8
P9

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 34
Estilos Arquitectónicos
(Sist. Distribuidos / Arquitecturas Peer To Peer)

P2 P6

P5

Un “servidor” P1
puede servir
para coordinar
el Servidor / P7
descubrimiento Coordinador
de los pares

P3 P8
P9

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
Estilos Arquitectónicos
(Arquitectura basada en Plugins)

API
(Application programming interface)
Interfaz bien definida

Fuente: http://en.wikipedia.org/wiki/Plugin 36
Estilos Arquitectónicos
(Plugins / Eclipse)

Una estrategia basada en plugins hace que un


sistema pueda ser fácilmente extendido y
complementado por terceras partes
37
Estilos Arquitectónicos
(Plugins / Eclipse)

38
Estilos 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
39
Lecturas Recomendadas

Sommerville, Ingeniería del Software, Capítulos 11, 12


y 13 (En ese orden de prioridades)

Pressman, Ingeniería del Software, Capítulo 10

Mary Shaw, David Garlan, Software Architecture


Perspectives on an Emerging Discipline
(Está en la biblioteca)

Patrones Arquitectónicos
http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)

40
Gracias

¡Gracias!

41

También podría gustarte