Arquitectura de Software

Documentos relacionados
Modelos de los sistemas distribuidos. Jorge Iván Meza Martínez

Arquitecturas de Software

Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms

Ingeniería del Software. Diseño. Diseño en el PUD. Diseño de software. Patrones arquitectónicos. Diseño Orientado a Objetos en UML


Arquitectura cliente/servidor

Anexo 4 Documento de Arquitectura

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Modelo de Objetos Distribuidos

Estilos de Arquitectura y. Patrones de Diseño Arquitectónico. Patrones de Arquitectura

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

1. Introducción 2. Historia 3. Características clave 4. Cuestiones de diseño

Capítulo II. Arquitectura del Software

Tema 2: Implementación del núcleo de un Sistema Operativo

Arquitectura Cliente/Servidor

Arquitectura cliente/servidor

Unidad 1: Conceptos generales de Sistemas Operativos.

SISTEMAS DE INFORMACIÓN II TEORÍA

Estilos Arquitectónicos


Tema 1. Arquitectura Cliente/Servidor

Capítulo 5. Cliente-Servidor.

Capas de la arquitectura de referencia

Desarrollo y servicios web Sesión 18

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Sistemas de Operación II

La obra se proporciona bajo los términos de esta licencia pública de Sisoft de México

Panorámica de la asignatura

Patrones de Diseño Orientados a Objetos 2 Parte

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

Módulo 2. Inicio con Java

Plataforma desarrollo Java Formación elearning tutorizada en castellano. Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java

Estilos Arquitectónicos

INFRAESTRUCTURA Y COMUNICACIONES DGA

Programador en Plataforma Java y XML

Universidad Mayor de San Andrés Facultad de Ciencias Puras y Naturales Carrera de Informática. ired. Sistema de Inventario de Red

FAMILIA PROFESIONAL: Informática y Comunicación CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIMEDIA DAM 350 HORAS

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Documento de Arquitectura de Software. KunaySoft. Autores: Juan Camilo González Vargas. Javier Leonardo Parra Laguna

Introducción. - Gráfica tomada del Artículo de José David Parra

Diseño de Redes LAN Introducción a Redes. Derman Zepeda Vega dzepeda@unan.edu.ni

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1)

Arquitectura de Aplicaciones

Contenidos. Sistemas operativos Tema 3: Estructura del sistema operativo. Componentes típicos de un SO. Gestión de procesos.

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes.

Ingº CIP Fabian Guerrero Medina Master Web Developer-MWD

Generador GeneXus JAVA

Sistema RTUQM DESCRIPCIÓN

POSGRADO EXPERTO.NET DESARROLLO DE SOFTWARE

OpenProdoc. ECM Open Source

Ingeniería del Software

FAMILIA PROFESIONAL: Informática y Comunicación CICLO SUPERIOR DESARROLLO DE APLICACIONES WEB DAW 350 HORAS


GUÍA TÉCNICA. Desarrollo de Proyectos en Plataforma Liferay en el Gobierno de Extremadura

Software Computacional y su clasificación

Capítulo III. Análisis y diseño.

CAPITULO IV CONCLUSIONES Y RECOMENDACIONES

Diseño de Base de Datos

Descripción. Este Software cumple los siguientes hitos:

CAPÍTULO 3 Servidor de Modelo de Usuario

Activa Sistemas. Software Libre en la gestión empresarial

ARC 101 Architecture Overview Diagram

Visión General de GXportal. Última actualización: 2009

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Resumen obtenido de: Roger S. Pressman, Ingeniería de Software. Un enfoque práctico, quinta edición, Introducción al Diseño de Software

Capítulo I. Marco Teórico

Tema 1. Introducción a Java EE

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

[CASI v.0109] Pág. 1

GUÍA TÉCNICA. Desarrollo de Sistemas de Información la plataforma Business Intellingence Pentaho

Servidores de aplicaciones. Sesión 1: Introducción a los servidores de aplicaciones. Instalación de BEA WebLogic

INTRODUCCION. Ing. Camilo Zapata Universidad de Antioquia

Documento técnico Sistemas según el principio de modularidad Automatización modular con terminales de válvulas

Programación de Sistemas

picojava TM Características

Análisis y diseño del sistema CAPÍTULO 3

CAPÍTULO 1 Instrumentación Virtual

JACK Ardour Hydrogen Rosegarden ZynAddSubFX Pure data Blender

Concepto de Arquitectura en Desarrollo Software. Arquitectura física Distribución de nodos en la red. Concepto de Arquitectura software Moderno

Sumario... 5 Prólogo Unidad didáctica 1. Introducción a la computación distribuida Objetivos de la Unidad... 12

CUALIFICACIÓN PROGRAMACIÓN DE SISTEMAS INFORMÁTICOS PROFESIONAL. Nivel 3. Versión 5 Situación RD 1201/2007 Actualización

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V

INFORME TÉCNICO ADQUISICIÓN DE LICENCIA DE SOFTWARE PARA VIRTUALIZACION

REQUERIMIENTOS NO FUNCIONALES

Herramientas Libres para Desarrollo de Aplicaciones en la Industria del Software. Por Gustavo González

Planificaciones Arquitectura de Software. Docente responsable: DIEZ EDUARDO LUIS. 1 de 6

Facultad de Sistemas e Informática

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

Lección 8 Introducción a las llamadas a procedimientos remotos (RPC) Universidad de Oviedo / Dpto. de Informática

Tema 1. Conceptos fundamentales de los Sistemas Operativos

Figure 7-1: Phase A: Architecture Vision

Experiencias con J2EE

Transcripción:

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