ingenieria de software distruido

9
Ingenieria de Software distruido Objetivo Conocer los conflictos clave que debe considerar al diseñoar e implementar los sistemas de software Entenderá la noción de software como servicio y proporcionará acceso basado en Web a sistemas de aplicación de implementación remota. Ventajas de usar un enfoque distribuido para el desarrollo de sistemas: 1. Compartición de recurso: a. Sistema de distribución permite compartir los recursos de HW y SW. 2. Apertura a. Sistemas abiertos que permite el diseño del entorno a protocolo de estándar combinando con el equipo. 3. Concurrencia a. Es un proceso que nos permite ejecutar al mismo tiempo computadoras independientes en red. 4. Escalabilidad a. Son escalables que tiene la capacidad del sistema en aumentar los nuevos recursos para enfrentar demandas de las mandas. 5. Tolerancia a fallas a. La disponibilidad de muchas computadoras y el potencial de reproducir la información significa que los sistemas distribuidos pueden tolerar algunas fallas del HW y SW. Conflictos de los sistemas de distribuidos Los sistemas son más complejas de los sistemas que se ejecutan en un solo proveedor, con la complejidad surge para la práctica que tiene un modelo de descendente de control. Los diseños más importantes que se debe considerarse en la ingeniería. 1. Transparencia a. ¿en qué medida el sistema distribuido debe aparecer al usuario con un solo sistema? ¿cuándo es útil para los usuarios entender que el sistema es distribuido? 2. Apertura

Upload: nataly

Post on 05-Feb-2016

214 views

Category:

Documents


0 download

DESCRIPTION

Ingenieria de Software Distruido

TRANSCRIPT

Page 1: Ingenieria de Software Distruido

Ingenieria de Software distruido

Objetivo

Conocer los conflictos clave que debe considerar al diseñoar e implementar los sistemas de software

Entenderá la noción de software como servicio y proporcionará acceso basado en Web a sistemas de aplicación de implementación remota.

Ventajas de usar un enfoque distribuido para el desarrollo de sistemas:

1. Compartición de recurso:a. Sistema de distribución permite compartir los recursos de HW y SW.

2. Apertura a. Sistemas abiertos que permite el diseño del entorno a protocolo de estándar

combinando con el equipo.3. Concurrencia

a. Es un proceso que nos permite ejecutar al mismo tiempo computadoras independientes en red.

4. Escalabilidada. Son escalables que tiene la capacidad del sistema en aumentar los nuevos

recursos para enfrentar demandas de las mandas.5. Tolerancia a fallas

a. La disponibilidad de muchas computadoras y el potencial de reproducir la información significa que los sistemas distribuidos pueden tolerar algunas fallas del HW y SW.

Conflictos de los sistemas de distribuidos

Los sistemas son más complejas de los sistemas que se ejecutan en un solo proveedor, con la complejidad surge para la práctica que tiene un modelo de descendente de control.

Los diseños más importantes que se debe considerarse en la ingeniería.

1. Transparenciaa. ¿en qué medida el sistema distribuido debe aparecer al usuario con un solo

sistema? ¿cuándo es útil para los usuarios entender que el sistema es distribuido?

2. Aperturaa. ¿Un sistema debe diseñarse usando protocolos estándar que soporten

interoperabilidad o deben usarse protocolos más especializados que restrinjan la libertad del diseñador?

3. Escalabilidada. ¿Cómo puede construirse el sistema para que sea escalable? ¿cómo podría

diseñarse un sistema global para que su capacidad se en respuesta a demandas crecientes hechas sobre el sistema?

4. Seguridada. ¿Cómo pueden definirse e implementarse políticas de seguridad útiles que se

apliquen a través de un conjunto de sistemas administrados de manera independiente?

5. Calidad de servicio

Page 2: Ingenieria de Software Distruido

a. ¿Cómo debe especificarse la calidad del servicio que se entrega a los usuarios del sistema y cómo debe implementarse el sistema para entregar una calidad de servicio aceptable para todos los usuarios?

6. Gestión de fallosa. ¿Cómo pueden detectarse las fallas del sistema, contenerse (de modo que

tengan efectos mínimos sobre otros componentes del sistema) y repararse?

Los estándares de servicio Web para arquitecturas orientadas a servicios se desarrollan para ser estándares abiertos. Existen tres dimensiones de la escalabilidad.

1. Tamañoa. Debe ser posible agregar más recursos a un sistema para enfrentar el creciente

número de usuarios.2. Distribución

a. Debe ser posible dispersar geográficamente los componentes de un sistema sin reducir su rendimiento.

3. Manejabilidada. Debe ser posible administrar un sistema conforme aumenta en tamaño,

incluso si las partes del sistema se ubican en organizaciones independientes.

Se analiza todos los conflictos generales de la seguridad y los conflictos de la integración de seguridad. Los tipos de ataques que defender un sistema distribuido son:

1. Intercepción, en que un atacante intercepta las comunicaciones entre las partes del sistema, para que haya poca confidencialidad.

2. Interrupción, que sucede cuando los servicios del sistema son atacados y no pueden entregarse como se esperaba.

3. Modificación, que se presenta cuando el atacante cambia los datos o servicios del sistema.

4. Fabricación, que sucede cuando un atacante genera información que no debe existir y luego la usa para conseguir ciertos privilegios.

La dificultad en los sistemas distribuidos se establece con políticas de seguridad que pueda aplicarse de manera fiable a todos los componentes de sistema. Pero en la calidad de servicio es un sistema de distribuido refleja la capacidad del sistema para entregar sus servicios de manera confiable de manera un respuesta a tiempo y rendimiento total.

Modelos de interacción

Page 3: Ingenieria de Software Distruido

Middleware

Sistema de distribuido pueden implementarse en distintos lenguajes de programación y de ejecución, el sistema distribuido, el middleware por lo general brinda dos distintos tipos de soporte:

1. Soporte de interacción, en el que el middleware coordina las interacciones entre diferentes componentes del sistema.

2. La provisión de servicios comunes, en la que el middleware proporciona implementaciones de reutilización de servicios que pueden requerir varios componentes en el sistema distribuido.

Computación de Cliente-servidor

Un sistema cliente-servidor, el usuario interactúa con un programa que se ejecuta en su computadora local. Éste interactúa con otro programa que se ejecuta en una computadora remota.

4. Una capa de presentación que se ocupa de presentar la información al usuario y gestionar todas las interacciones de usuario;

5. Una capa de gestión de datos que gestiona los datos que pasan hacia y desde el cliente. Esta capa puede implementar comprobaciones en los datos, generar páginas Web, etcétera;

6. Una capa de procesamiento de aplicación que se ocupa de implementar la lógica de la aplicación y, de este modo, proporciona la funcionalidad requerida a los usuarios finales;

7. Una capa de base de datos que almacena los datos y ofrece servicios de gestión de transacción, etcétera.

Patrones arquitecticos para sistemas distribuidas

1. Arquitectura maestro-esclavo, que se usa en sistemas de tiempo real en los que se requiere garantía de tiempos de respuesta de interacción.

2. Arquitectura cliente-servidor de dos niveles, que se usa para sistemas cliente-servidor simple, y en situaciones donde es importante centralizar el sistema por razones de seguridad. 3. Arquitectura cliente-servidor multinivel, que se usa cuando existe un enorme volumen de transacciones a procesar por el servidor.

Page 4: Ingenieria de Software Distruido

3. Arquitectura de componentes distribuidos, que se usa cuando es necesario combinar los recursos de diferentes sistemas y bases de datos, o como un modelo de implementación para sistemas cliente-servidor multinivel.

4. Arquitectura peer-to-peer (entre pares o punto a punto, o par a par), que se usa cuando los clientes intercambian de manera local la información almacenada, y el papel del servidor es presentar a los clientes entre sí.

Patrones arquitectónicos para sistemas distribuidos

Es el diseño del sistema distribuido para organizar el sistema y encontrar un equilibrio entre rendimiento, confiablidad, seguridad y manejabilidad.

En esta sección se describen cinco estilos arquitectónicos:

1. Arquitectura maestro-esclavo, que se usa en sistemas de tiempo real en los que se requiere garantía de tiempos de respuesta de interacción.

2. Arquitectura cliente-servidor de dos niveles, que se usa para sistemas cliente-servidor simple, y en situaciones donde es importante centralizar el sistema por razones de seguridad.

3. Arquitectura cliente-servidor multinivel, que se usa cuando existe un enorme volumen de transacciones a procesar por el servidor.

4. Arquitectura de componentes distribuidos, que se usa cuando es necesario combinar los recursos de diferentes sistemas y bases de datos, o como un modelo de implementación para sistemas cliente-servidor multinivel.

5. Arquitectura peer-to-peer (entre pares o punto a punto, o par a par), que se usa cuando los clientes intercambian de manera local la información almacenada, y el papel del servidor es presentar a los clientes entre sí.

Arquitectura maestro-esclavo

Page 5: Ingenieria de Software Distruido

Arquitectura cliente-servidor de dos niveles

Una arquitectura cliente-servidor de dos niveles es la forma más simple de arquitectura cliente-servidor. El sistema se implementa como un solo servidor lógico más un número indefinido de clientes que usan dicho servidor.

1. Un modelo de cliente ligero, en que la capa de presentación se implementa en el cliente, y todas las otras capas (gestión de datos, procesamiento de la aplicación y bases de datos) se implementan en un servidor.

2. Un modelo de cliente pesado, en que parte o todo el procesamiento de la aplicación se realiza en el cliente. Las funciones de gestión de datos y de base de datos se mplementan en el servidor.

Arquitectura cliente-servidor multinivel

Page 6: Ingenieria de Software Distruido

Arquitectura de componentes distribuidos

Componente separado en una arquitectura de componentes distribuida el sistema está organizado como un conjunto de componentes u objetos en interacción.

1. Permite al diseñador del sistema demorar las decisiones acerca de dónde y cómo deben proporcionarse los servicios.

2. Es una arquitectura de sistema muy abierta que permite adicionar nuevos recursos conforme se requiera.

3. El sistema es flexible y escalable. Pueden añadirse nuevos componentes o componentes replicados a medida que aumente la carga del sistema, sin perturbar otras partes de éste.

4. Es posible, según se requiera, reconfigurar dinámicamente el sistema con componentes que migran a través de la red.

Una arquitectura de componentes distribuidos, en lugar de una arquitectura en capas, es adecuada para este tipo de aplicaciones, porque es posible agregar nuevas bases de datos al sistema sin causar grandes perturbaciones.

Las arquitecturas de componentes distribuidos enfrentan dos grandes desventajas:

1. Son más complejas de diseñar que los sistemas cliente-servidor. Los sistemas cliente-servidor multinivel parecen ser una forma bastante intuitiva de pensar en los sistemas.

2. El middleware estandarizado para sistemas de componentes distribuidos nunca se ha aceptado por la comunidad.

Arquitectura entre pares(peer-to-peer)

Este modelo conduce regularmente a una distribución desigual de la carga en el sistema, en el que los servidores realizan más trabajo que los clientes.

Es adecuado usar un modelo arquitectónico punto a punto para un sistema en dos

circunstancias:

Page 7: Ingenieria de Software Distruido

1. Donde el sistema es de cómputo intensivo y es posible separar el procesamiento requerido en un gran número de cálculos independientes.

2. Donde el sistema principalmente implica el intercambio de información entre computadoras individuales en una red y no hay necesidad de que esta información se almacene o gestione de manera centralizada.

Software como servicio

Para implementar un sistema cliente-servidor, tal vez se tenga que instalar un programa en la computadora cliente, que se comunique con el servidor, aplique funcionalidad en el lado del cliente y gestione la interfaz de usuario.

1. El software se despliega en un servidor (o, más comúnmente, en algunos servidores) y se accede a él a través de un navegador Web. No se implementa en una computadora local.

2. El software es propiedad de un proveedor de software, quien lo administra, en lugar de las organizaciones que usan el software.

3. Los usuarios pueden pagar por el software de acuerdo con la cantidad de uso que hagan de él o mediante una suscripción anual o mensual.

Cuando implemente SaaS debe considerar que puede tener usuarios del software en varias organizaciones diferentes. Debe tener en cuenta tres factores:

1. Configurabilidad ¿Cómo configura usted el software para los requerimientos específicos de cada organización?

2. Multitenencia ¿Cómo presenta a cada usuario del software la impresión de que trabaja con su propia copia del sistema mientras, al mismo tiempo, hace uso eficiente de los recursos del sistema?

3. Escalabilidad ¿Cómo diseña el sistema de modo que pueda escalarse para alojar un número impredeciblemente grande de usuarios?