1
Arquitectura de Software
(Estilos Arquitectónicos)
Universidad de los Andes
Demián Gutierrez Mayo 2011
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
1
(Estilos Arquitectónicos)
Universidad de los Andes
Demiá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
4
Estilos Arquitectónicos
Art Deco Deconstructivismo
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...
6
Estilos Arquitectónicos
Fuente: Sommerville (Cap 11)
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
Fuente: Pressman (Cap 10)
8
Estilos Arquitectónicos
Para todas las arquitecturas (estilos arquitectónicos) mostrados a continuación es necesario preguntarse:
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
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?
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
12
Estilos Arquitectónicos (Cliente / Servidor)
Cliente 1 Cliente 2 Cliente N
Servidor 1 Servidor N
Petición Respuesta
Internet, LAN, WAN
Cliente Servidor
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
14
Estilos Arquitectónicos (Cliente / Servidor - WEB)
Fuente Imagen: http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web
15
Estilos Arquitectónicos (Cliente / Servidor - WEB)
Fuente Imagen: http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web
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
17
Estilos Arquitectónicos (Tuberías y Filtros) Tuberías y Filtros
18
Estilos Arquitectónicos (Tuberías y Filtros) Tuberías y Filtros
19
Arquitectura (Ejemplo) Arquitectura por Capas
Capa 1 Capa 2 Capa N
API
(Application programming interface)
Interfaz
Mas Seguridad / Protección Menos Abstracció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 detalle)
BD
Motor de Workflow (CledaFlow, CledaScheduler y CledaBase) Hibernate JDBC Documentos MVC CledaMVC (Struts1)
Modelo de Dominio Servlets Navegador WEB CledaTags CledaCore Aplicación
Arquitectura a tres Capas (Muy utilizado en aplicaciones empresariales)
22
Estilos Arquitectónicos (Arquitectura por Capas) Arquitectura por Capas
23
Estilos Arquitectónicos (Arquitectura por Capas) Arquitectura por Capas
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
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)
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
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)
28
Estilos Arquitectónicos (Interprete / Máquina Virtual)
29
Estilos Arquitectónicos (Interprete / Máquina Virtual)
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
31
Estilos Arquitectónicos (RPC / RMI) RPC: Remote Procedure Call RMI: Remote Method Invocation
32
Estilos Arquitectónicos (RPC / RMI) RPC: Remote Procedure Call RMI: Remote Method Invocation
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
corriendo en los demás nodos
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
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
36
Estilos Arquitectónicos (Arquitectura basada en Plugins)
Fuente: http://en.wikipedia.org/wiki/Plugin
API
(Application programming interface) Interfaz bien definida
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
38
Estilos Arquitectónicos (Plugins / Eclipse)
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
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)
41
Gracias