Arquitectura de Software (Estilos Arquitectónicos) Universidad de los Andes Demián Gutierrez Mayo 2011 1
Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software Estilos Arquitectónicos Frameworks (Marcos) Patrones de Diseño Bibliotecas / Componentes Clases / Funciones 2
Diseño Arquitectónico Qué es un estilo? - Qué es un estilo arquitectónico? 3
Deconstructivismo Art Deco 4
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
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 La arquitectura de un sistema de software puede basarse en uno (o en varios) modelos o estilos arquitectónicos bien conocidos Fuente: Sommerville (Cap 11) 6
Un estilo arquitectónico describe: Un conjunto de componentes (con sus responsabilidades) 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 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) 7
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? 8
Otros aspectos de la gestión de proyectos? Una reflexión final sobre lo profundo del abismo Seguridad Confiabilidad Rendimiento Usabilidad Mantenibilidad Eficiencia (memoria, ejecución) Facilidad de Prueba Portabilidad Disponibilidad Reusabilidad Escalabilidad Modificabilidad Extensibilidad otras... De qué forma impacta el uso un estilo en las propiedades del sistema? 9
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é? Tip: Recuerdan el ejemplo del sistema de empaquetamiento de Sommerville y la discusión subsecuente? Sistema (TODO EL SISTEMA) Fuente: http://en.wikipedia.org/wiki/monolithic_application 10
(Repositorio / Pizarrón) Aplicación / Modulo 1 Aplicación / Modulo 2 Aplicación / Modulo 3 Repositorio (Base de Datos, Sistema de Archivos, Memoria Compartida, etcétera) Aplicación / Modulo 4... Aplicación / Modulo N Repositorio / Pizarron 11
(Cliente / Servidor) Petición Respuesta Cliente 1 Cliente 2... Red Internet, LAN, WAN Servidor 1... Cliente N Servidor N Cliente Servidor 12
(Cliente / Servidor) Petición Respuesta Red Cliente Servidor 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 Cliente Liviano vs Cliente Pesado 13
(Cliente / Servidor - WEB) Fuente Imagen: http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web 14
(Cliente / Servidor - WEB) Fuente Imagen: http://www.mailxmail.com/curso-php-mysql-sql-8/arquitectura-base-datos-web 15
(Tuberías y Filtros) Filtros (Transformación de Datos / Información) Filtro 3 Tuberías (Flujo de Datos / Información) Filtro 1 Filtro 4 Filtro 5 Filtro 2 Tuberías y Filtros 16
(Tuberías y Filtros) Tuberías y Filtros 17
(Tuberías y Filtros) Tuberías y Filtros 18
Arquitectura (Ejemplo) Mas Seguridad / Protección Menos Abstracción Capa 1 Capa 2... API (Application programming interface) Interfaz Capa N Arquitectura por Capas 19
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) 20
Arquitectura (Ejemplo con más detalle) Servlets Aplicación CledaTags Modelo de Dominio Navegador WEB MVC CledaMVC (Struts1) o Echo2 Documentos Hibernate JDBC BD CledaCore Motor de Workflow (CledaFlow, CledaScheduler y CledaBase) Arquitectura a tres Capas (Muy utilizado en aplicaciones empresariales) 21
(Arquitectura por Capas) Arquitectura por Capas 22
(Arquitectura por Capas) Arquitectura por Capas 23
(Control Centralizado - Síncrono) 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
(Control Centralizado - Asíncrono) Procesos Tipo 1 (Ej: Sensores) Procesos Tipo 4 (Ej: Actuadores) Controlador del Sistema Procesos Tipo 2 (Ej: Cálculo) Procesos Tipo 3 (Ej: Fallos) Procesos Tipo 5 (Ej: Fallos) Control Centralizado 25
(Sistemas Dirigidos por Eventos) Cada subsistema genera eventos según su condición 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
(Interprete / Máquina Virtual) Programa a Interpretar Datos (Estado del Programa) Hardware Simulado (CPU, dispositivos, etc) Máquina Virtual Hardware Real (CPU, dispositivos, memoria, etc) 27
(Interprete / Máquina Virtual) Write once, run anywhere Sun Microsystems 28
(Interprete / Máquina Virtual) Write once, run anywhere Sun Microsystems 29
(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 Compilador Java (javac) Compilador Scala (...) Compilador Clojure (...) Compilador JRuby (...) Compilador Jython (...) Java Byte Code + Unix Linux Windows Mac JVM JVM JVM JVM Java Runtime La flexibilidad de la arquitectura Java 30
(RPC / RMI) RPC: Remote Procedure Call RMI: Remote Method Invocation 31
(RPC / RMI) RPC: Remote Procedure Call RMI: Remote Method Invocation 32
(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 están corriendo en los demás nodos Nodo Cliente 33
(Sist. Distribuidos / Arquitecturas Peer To Peer) Un par puede jugar un rol de cliente y/o de servidor, dependiendo de las necesidades del momento P1 P2 P4 P5 P6 P7 P3 P9 P8 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 34
(Sist. Distribuidos / Arquitecturas Peer To Peer) P2 P6 P5 Un servidor puede servir para coordinar el descubrimiento de los pares P1 Servidor / Coordinador P7 P3 P9 P8 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
(Arquitectura basada en Plugins) API (Application programming interface) Interfaz bien definida Fuente: http://en.wikipedia.org/wiki/plugin 36
(Plugins / Eclipse) Una estrategia basada en plugins hace que un sistema pueda ser fácilmente extendido y complementado por terceras partes 37
(Plugins / Eclipse) 38
(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 39
Lecturas Recomendadas Sommerville, Ingeniería del Software, Capítulos 11, 12 y 13 (En ese orden de prioridades) Pressman, Ingeniería del Software, Capítulo 10 Mary Shaw, David Garlan, Software Architecture Perspectives on an Emerging Discipline (Está en la biblioteca) Patrones Arquitectónicos http://en.wikipedia.org/wiki/architectural_pattern_(computer_science) 40
Gracias Gracias! 41