Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico...
Transcript of Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico...
![Page 1: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/1.jpg)
1
Arquitectura de Software(Estilos Arquitectónicos)
Universidad de los AndesDemián Gutierrez
Mayo 2011
![Page 2: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/2.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/3.jpg)
3
Diseño Arquitectónico
¿Qué es un estilo?-
¿Qué es un estilo arquitectónico?
![Page 4: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/4.jpg)
4
Esti los Arquitectónicos
Art Deco
Deconstructivismo
![Page 5: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/5.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/6.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/7.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/8.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/9.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/10.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/11.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/12.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/13.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/14.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/15.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/16.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/17.jpg)
17
Esti los Arquitectónicos(Tuberías y Fi ltros)
Tuberías y Filtros
![Page 18: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/18.jpg)
18
Esti los Arquitectónicos(Tuberías y Fi ltros)
Tuberías y Filtros
![Page 19: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/19.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/20.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/21.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/22.jpg)
22
Esti los Arquitectónicos(Arquitectura por Capas)
Arquitectura por Capas
![Page 23: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/23.jpg)
23
Esti los Arquitectónicos(Arquitectura por Capas)
Arquitectura por Capas
![Page 24: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/24.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/25.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/26.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/27.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/28.jpg)
28
Esti los Arquitectónicos(Interprete / Máquina Virtual)
“Write once, run anywhere”
Sun Microsystems
![Page 29: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/29.jpg)
29
Esti los Arquitectónicos(Interprete / Máquina Virtual)
“Write once, run anywhere”
Sun Microsystems
![Page 30: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/30.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/31.jpg)
31
Esti los Arquitectónicos(RPC / RMI)
RPC: Remote Procedure Call
RMI: Remote Method Invocation
![Page 32: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/32.jpg)
32
Esti los Arquitectónicos(RPC / RMI)
RPC: Remote Procedure Call
RMI: Remote Method Invocation
![Page 33: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/33.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/34.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/35.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/36.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/37.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/38.jpg)
38
Esti los Arquitectónicos(Plugins / Ecl ipse)
![Page 39: Arquitectura de Software - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/39.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/40.jpg)
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 - codecompiling.net · 2 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Bibliotecas / Componentes Patrones de Diseño Clases](https://reader033.fdocument.pub/reader033/viewer/2022052310/60984c1f1174be31334304d7/html5/thumbnails/41.jpg)
41
Gracias
¡Gracias!