Вы находитесь на странице: 1из 41

Arquitectura de Software

(Estilos Arquitectnicos)

Universidad de los Andes


Demin Gutierrez Mayo 2011 1

Diseo Arquitectnico
Arquitectura del Software

Diseo Arquitectnico

Estilos
Arquitectnicos

Frameworks (Marcos)

Patrones de Diseo

Bibliotecas / Componentes

Clases / Funciones
2

Diseo Arquitectnico

Qu es un estilo? Qu es un estilo arquitectnico?


3

Estilos Arquitectnicos

Deconstructivismo

Art Deco
4

Estilos Arquitectnicos

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 Arquitectnicos

Un estilo arquitectnico define una familia de sistemas (cierto tipo de sistemas) en trminos de patrones estructurales, de control, de comunicacin, etctera La arquitectura de un sistema de software puede basarse en uno (o en varios) modelos o estilos arquitectnicos bien conocidos
Fuente: Sommerville (Cap 11)
6

Estilos Arquitectnicos

Un estilo arquitectnico describe:


Un conjunto de componentes (con sus responsabilidades) Un conjunto de conectores entre componentes (comunicacin, coordinacin, cooperacin, etctera) Restricciones que definen cmo se integran los componentes para formar el sistema Modelos que permiten comprender las propiedades de un sistema general en funcin de las propiedades conocidas de las partes que lo integran
Fuente: Pressman (Cap 10)
7

Estilos Arquitectnicos

Para todas las arquitecturas (estilos arquitectnicos) mostrados a continuacin es necesario preguntarse:

Qu ventajas tiene el estilo? Qu desventajas tiene? En qu contextos aplica?

Otros aspectos de la gestin de proyectos?


Una reflexin final sobre lo profundo del abismo
Seguridad Confiabilidad Rendimiento Usabilidad

Mantenibilidad

Eficiencia (memoria, ejecucin)

Facilidad de Prueba

Portabilidad

Disponibilidad

Reusabilidad

Escalabilidad

Modificabilidad

Extensibilidad

otras...

De qu forma impacta el uso un estilo en las propiedades del sistema?


9

Estilos Arquitectnicos Una arquitectura monoltica describe una aplicacin en la que toda la funcionalidad del sistema (ej. acceso a datos, interfaz de usuario, lgica, etctera) est implementada y mezclada en una sola capa. Esto, en la gran mayora de los casos, no es una buena idea... Por qu?
Tip: Recuerdan el ejemplo del sistema de empaquetamiento de Sommerville y la discusin subsecuente?

Sistema (TODO EL SISTEMA)


10

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

Estilos Arquitectnicos (Repositorio / Pizarrn)


Aplicacin / Modulo 1 Aplicacin / Modulo 2 Aplicacin / Modulo 3

Repositorio
(Base de Datos, Sistema de Archivos, Memoria Compartida, etctera)

Aplicacin / Modulo 4

...

Aplicacin / Modulo N

Repositorio / Pizarron

11

Estilos Arquitectnicos (Cliente / Servidor)


Peticin Respuesta Cliente 1

Red
Cliente 2

Servidor 1

...

Internet, LAN, WAN

...

Cliente N

Servidor N

Cliente Servidor

12

Estilos Arquitectnicos (Cliente / Servidor)


Peticin Respuesta

Red Cliente Servidor

Liviano: Lgica de la Aplicacin solamente del lado del servidor Pesado: Lgica de la Aplicacin parcial o totalmente del lado del cliente

Cliente Liviano vs Cliente Pesado

13

Estilos Arquitectnicos (Cliente / Servidor - WEB)

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

14

Estilos Arquitectnicos (Cliente / Servidor - WEB)

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

15

Estilos Arquitectnicos (Tuberas y Filtros)


Filtros (Transformacin de Datos / Informacin) Filtro 3 Tuberas (Flujo de Datos / Informacin)

Filtro 1

Filtro 4

Filtro 5

Filtro 2

Tuberas y Filtros
16

Estilos Arquitectnicos (Tuberas y Filtros)

Tuberas y Filtros
17

Estilos Arquitectnicos (Tuberas y Filtros)

Tuberas y Filtros
18

Arquitectura (Ejemplo) API


Capa 1 (Application programming interface) Mas Seguridad / Proteccin Menos Abstraccin

Interfaz

Capa 2

...
Capa N

Arquitectura por Capas

19

Arquitectura (Ejemplo)

Capa de Presentacin (Interfaz Grfica de Usuario) (HTML, Swing, Qt, GTK, etctera)

Capa de Proceso / Negocio (Lgica / Reglas de Negocio)

Capa de Persistencia

BD

Arquitectura a tres Capas (Muy utilizado en aplicaciones empresariales)


20

Arquitectura (Ejemplo con ms detalle)

Servlets

Aplicacin Modelo de Dominio

CledaTags

Navegador WEB

MVC CledaMVC (Struts1) o Echo2

Hibernate

Documentos

JDBC

BD

CledaCore

Motor de Workflow (CledaFlow, CledaScheduler y CledaBase)

Arquitectura a tres Capas (Muy utilizado en aplicaciones empresariales)


21

Estilos Arquitectnicos (Arquitectura por Capas)

Arquitectura por Capas

22

Estilos Arquitectnicos (Arquitectura por Capas)

Arquitectura por Capas

23

Estilos Arquitectnicos (Control Centralizado - Sncrono)

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 Arquitectnicos (Control Centralizado - Asncrono)


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

Controlador del Sistema

Procesos Tipo 2 (Ej: Clculo)

Procesos Tipo 3 (Ej: Fallos)

Procesos Tipo 5 (Ej: Fallos)

Control Centralizado
25

Estilos Arquitectnicos (Sistemas Dirigidos por Eventos)


Cada subsistema genera eventos segn su condicin y define que eventos de otros subsistemas desea atender

Subsistema 1

Subsistema 2

...

Subsistema N

Manejador de Eventos

El manejador de eventos se encarga de enviar los eventos generados a aquellos sistemas interesados en recibirlos
26

Estilos Arquitectnicos (Interprete / Mquina Virtual)

Programa a Interpretar

Datos (Estado del Programa)

Hardware Simulado (CPU, dispositivos, etc) Mquina Virtual Hardware Real (CPU, dispositivos, memoria, etc)
27

Estilos Arquitectnicos (Interprete / Mquina Virtual)

Write once, run anywhere Sun Microsystems

28

Estilos Arquitectnicos (Interprete / Mquina Virtual)

Write once, run anywhere Sun Microsystems

29

Estilos Arquitectnicos (Interprete / Mquina Virtual)


Cdigo Java Foo.java Cdigo Scala Foo.scl Cdigo Clojure Foo.clj Cdigo JRuby Foo.ruby Cdigo Jython Foo.phy

Compilador Java (javac)

Compilador Scala (...)

Compilador Clojure (...)

Compilador JRuby (...)

Compilador Jython (...)

Java Byte Code

+
Unix JVM Linux JVM Windows JVM Mac JVM Java Runtime

La flexibilidad de la arquitectura Java


30

Estilos Arquitectnicos (RPC / RMI)

RPC: Remote Procedure Call RMI: Remote Method Invocation


31

Estilos Arquitectnicos (RPC / RMI)

RPC: Remote Procedure Call RMI: Remote Method Invocation


32

Estilos Arquitectnicos (Arquitecturas de Objetos Distribuidos / CORBA)


Objeto1 (Instancia) Objeto2 (Instancia) Objeto3 (Instancia) Objeto N (Instancia)

Nodo 1

Nodo 2

Nodo N

Red (Bus software) El nodo cliente utiliza (de forma transparente) los objetos que existe y estn corriendo en los dems nodos

Nodo Cliente
33

Estilos Arquitectnicos (Sist. Distribuidos / Arquitecturas Peer To Peer)


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

P4

P3

P9

P8

Cada uno de los pares descubre a sus otros pares y establecen conexiones al mismo nivel (no de forma jerrquica) cooperando para lograr un objetivo determinado

34

Estilos Arquitectnicos (Sist. Distribuidos / Arquitecturas Peer To Peer)


P2 P5 Un servidor puede servir para coordinar el descubrimiento de los pares P1 Servidor / Coordinador P7 P6

P3

P9

P8

Cada uno de los pares descubre a sus otros pares y establecen conexiones al mismo nivel (no de forma jerrquica) cooperando para lograr un objetivo determinado

35

Estilos Arquitectnicos (Arquitectura basada en Plugins) API


(Application programming interface) Interfaz bien definida

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

36

Estilos Arquitectnicos (Plugins / Eclipse)

Una estrategia basada en plugins hace que un sistema pueda ser fcilmente extendido y complementado por terceras partes

37

Estilos Arquitectnicos (Plugins / Eclipse)

38

Estilos Arquitectnicos (Arquitecturas de Referencia) Normalmente se obtienen por medio del estudio de una clase de aplicacin (de un dominio en particular) Representan una arquitectura ideal que incluye todas las caractersticas que cierto tipo (clase) de sistema podra incorporar
39

Lecturas Recomendadas

Sommerville, Ingeniera del Software, Captulos 11, 12 y 13 (En ese orden de prioridades) Pressman, Ingeniera del Software, Captulo 10 Mary Shaw, David Garlan, Software Architecture Perspectives on an Emerging Discipline (Est en la biblioteca)
http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)

Patrones Arquitectnicos

40

Gracias

Gracias!

41

Вам также может понравиться