41
1 Arquitectura de Software (Estilos Arquitectónicos) Universidad de los Andes Demián Gutierrez Mayo 2011

Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

Embed Size (px)

Citation preview

Page 1: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

1

Arquitectura de Software(Estilos Arquitectónicos)

Universidad de los AndesDemián Gutierrez

Mayo 2011

Page 2: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 3: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

3

Diseño Arquitectónico

¿Qué es un estilo?-

¿Qué es un estilo arquitectónico?

Page 4: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

4

Esti los Arquitectónicos

Art Deco

Deconstructivismo

Page 5: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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...

Page 6: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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)

Page 7: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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)

Page 8: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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?

Page 9: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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...

Page 10: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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?

Page 11: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 12: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 13: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 14: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

14

Esti los Arquitectónicos(Cliente / Servidor - WEB)

Fuente Imagen:http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web

Page 15: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

15

Esti los Arquitectónicos(Cliente / Servidor - WEB)

Fuente Imagen:http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web

Page 16: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 17: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

17

Esti los Arquitectónicos(Tuberías y Fi ltros)

Tuberías y Filtros

Page 18: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

18

Esti los Arquitectónicos(Tuberías y Fi ltros)

Tuberías y Filtros

Page 19: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 20: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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)

Page 21: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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)

Page 22: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

22

Esti los Arquitectónicos(Arquitectura por Capas)

Arquitectura por Capas

Page 23: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

23

Esti los Arquitectónicos(Arquitectura por Capas)

Arquitectura por Capas

Page 24: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 25: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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)

Page 26: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 27: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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)

Page 28: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

28

Esti los Arquitectónicos(Interprete / Máquina Virtual)

“Write once, run anywhere”

Sun Microsystems

Page 29: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

29

Esti los Arquitectónicos(Interprete / Máquina Virtual)

“Write once, run anywhere”

Sun Microsystems

Page 30: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 31: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

31

Esti los Arquitectónicos(RPC / RMI)

RPC: Remote Procedure Call

RMI: Remote Method Invocation

Page 32: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

32

Esti los Arquitectónicos(RPC / RMI)

RPC: Remote Procedure Call

RMI: Remote Method Invocation

Page 33: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 34: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 35: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 36: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

36

Esti los Arquitectónicos(Arquitectura basada en Plugins)

Fuente: http://en.wikipedia.org/wiki/Plugin

API(Application programming interface)

Interfaz bien definida

Page 37: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 38: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

38

Esti los Arquitectónicos(Plugins / Ecl ipse)

Page 39: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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

Page 40: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

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)

Page 41: Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases / Funciones Frameworks

41

Gracias

¡Gracias!