Arquitectura de Software -  · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del...

Preview:

Citation preview

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!

Recommended