Arquitectura de Software (Estilos Arquitectnicos) Universidad de - - PowerPoint PPT Presentation

arquitectura de software
SMART_READER_LITE
LIVE PREVIEW

Arquitectura de Software (Estilos Arquitectnicos) Universidad de - - PowerPoint PPT Presentation

Arquitectura de Software (Estilos Arquitectnicos) Universidad de los Andes Demin Gutierrez Mayo 2011 1 Diseo Arquitectnico Arquitectura del Software Diseo Arquitectnico Frameworks Estilos (Marcos) Arquitectnicos Patrones


slide-1
SLIDE 1

1

Arquitectura de Software

(Estilos Arquitectónicos)

Universidad de los Andes

Demián Gutierrez Mayo 2011

slide-2
SLIDE 2

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

slide-3
SLIDE 3

3

Diseño Arquitectónico

¿Qué es un estilo?

  • ¿Qué es un estilo

arquitectónico?

slide-4
SLIDE 4

4

Estilos Arquitectónicos

Art Deco Deconstructivismo

slide-5
SLIDE 5

5

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

slide-6
SLIDE 6

6

Estilos 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)

slide-7
SLIDE 7

7

Estilos 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)

slide-8
SLIDE 8

8

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?

slide-9
SLIDE 9

9

¿Otros aspectos de la gestión de proyectos?

Una reflexión final sobre lo profundo del abismo

Seguridad Rendimiento Usabilidad Confiabilidad Escalabilidad Portabilidad Reusabilidad Disponibilidad Facilidad de Prueba Eficiencia (memoria, ejecución) Mantenibilidad

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

Modificabilidad Extensibilidad

  • tras...
slide-10
SLIDE 10

10

Estilos 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?

slide-11
SLIDE 11

11

Estilos 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

slide-12
SLIDE 12

12

Estilos Arquitectónicos (Cliente / Servidor)

Cliente 1 Cliente 2 Cliente N

...

Servidor 1 Servidor N

...

Petición Respuesta

Red

Internet, LAN, WAN

Cliente Servidor

slide-13
SLIDE 13

13

Estilos Arquitectónicos (Cliente / Servidor) Cliente “Liviano” vs Cliente Pesado

Cliente Servidor 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

slide-14
SLIDE 14

14

Estilos Arquitectónicos (Cliente / Servidor - WEB)

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

slide-15
SLIDE 15

15

Estilos Arquitectónicos (Cliente / Servidor - WEB)

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

slide-16
SLIDE 16

16

Estilos Arquitectónicos (Tuberías y Filtros)

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

Tuberías y Filtros

slide-17
SLIDE 17

17

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

slide-18
SLIDE 18

18

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

slide-19
SLIDE 19

19

Arquitectura (Ejemplo) Arquitectura por Capas

Capa 1 Capa 2 Capa N

...

API

(Application programming interface)

Interfaz

Mas Seguridad / Protección Menos Abstracción

slide-20
SLIDE 20

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)

slide-21
SLIDE 21

21

Arquitectura (Ejemplo con más detalle)

BD

Motor de Workflow (CledaFlow, CledaScheduler y CledaBase) Hibernate JDBC Documentos MVC CledaMVC (Struts1)

  • Echo2

Modelo de Dominio Servlets Navegador WEB CledaTags CledaCore Aplicación

Arquitectura a tres Capas (Muy utilizado en aplicaciones empresariales)

slide-22
SLIDE 22

22

Estilos Arquitectónicos (Arquitectura por Capas) Arquitectura por Capas

slide-23
SLIDE 23

23

Estilos Arquitectónicos (Arquitectura por Capas) Arquitectura por Capas

slide-24
SLIDE 24

24

Estilos 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

slide-25
SLIDE 25

25

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

Controlador del Sistema

Procesos Tipo 1 (Ej: Sensores) Procesos Tipo 2 (Ej: Cálculo) Procesos Tipo 4 (Ej: Actuadores) Procesos Tipo 3 (Ej: Fallos) Procesos Tipo 5 (Ej: Fallos)

slide-26
SLIDE 26

26

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

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

slide-27
SLIDE 27

27

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

Programa a Interpretar Máquina Virtual Hardware Real (CPU, dispositivos, memoria, etc) Hardware Simulado (CPU, dispositivos, etc) Datos (Estado del Programa)

slide-28
SLIDE 28

28

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

“Write once, run anywhere” Sun Microsystems

slide-29
SLIDE 29

29

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

“Write once, run anywhere” Sun Microsystems

slide-30
SLIDE 30

30

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

Código Java Foo.java Código Scala Foo.scl Código Clojure Foo.clj Código JRuby Foo.ruby Código Jython Foo.phy Java Byte Code Compilador Clojure (...) Compilador Scala (...) Compilador Jython (...) Compilador JRuby (...) Compilador Java (javac) Unix Linux Windows Mac JVM JVM JVM JVM Java Runtime

+

La flexibilidad de la arquitectura Java

slide-31
SLIDE 31

31

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

slide-32
SLIDE 32

32

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

slide-33
SLIDE 33

33

Estilos 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

  • bjetos que existe y están

corriendo en los demás nodos

slide-34
SLIDE 34

34

Estilos Arquitectónicos (Sist. Distribuidos / Arquitecturas Peer To Peer)

P1 P7 P4 P6 P2 P8 P3 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

slide-35
SLIDE 35

35

Estilos 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 P7 Servidor / Coordinador P6 P2 P8 P3 P5 P9 Un “servidor” puede servir para coordinar el descubrimiento de los pares

slide-36
SLIDE 36

36

Estilos Arquitectónicos (Arquitectura basada en Plugins)

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

API

(Application programming interface) Interfaz bien definida

slide-37
SLIDE 37

37

Estilos Arquitectónicos (Plugins / Eclipse) Una estrategia basada en plugins hace que un sistema pueda ser fácilmente extendido y complementado por terceras partes

slide-38
SLIDE 38

38

Estilos Arquitectónicos (Plugins / Eclipse)

slide-39
SLIDE 39

39

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

slide-40
SLIDE 40

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ónicos

http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)

slide-41
SLIDE 41

41

Gracias

¡Gracias!