ingeniería del software ii

23
IS II Sistemas Distribuidos 1 Ingeniería del software II Objetos Distribuidos

Upload: vesna

Post on 10-Jan-2016

22 views

Category:

Documents


2 download

DESCRIPTION

Ingeniería del software II. Objetos Distribuidos. Sistemas Distribuidos. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Ingeniería del software II

IS II Sistemas Distribuidos 1

Ingeniería del software II

Objetos Distribuidos

Page 2: Ingeniería del software II

IS II Sistemas Distribuidos 2

Sistemas Distribuidos Un sistema distribuido es un sistema donde sus

componentes, ubicados en distintas computadoras conectadas en red, se comunican y coordinan a través de mensajes. Hay concurrencia de componentes, carencia de reloj global y fallos independientes de los componentes

Los recursos pueden ser administrados por servidores y accedidos por clientes o encapsularse como objetos y accedidos por objetos clientes

El objetivo es compartir recursos

Page 3: Ingeniería del software II

IS II Sistemas Distribuidos 3

Sistemas Distribuidos Definición de servicio:

Un servicio es una parte del sistema de computadoras que gestiona una colección de recursos relacionados presentando su funcionalidad a usuarios y aplicaciones

Ejemplos de servicios: Cola de impresión para acceder a una impresora

compartida en red Servidor de paginas web Servidor de base de datos que nos proporciona

los mecanismos de acceso a la misma ...

Page 4: Ingeniería del software II

IS II Sistemas Distribuidos 4

Sistemas Distribuidos Los sistemas distribuidos son por naturaleza

heterogeneos, La Heterogeneidad (variedad y diferencia) en estos sistemas se aplica a : Redes HW de computadoras SO Lenguajes de programación

En gran parte de las organizaciones el ambiente es multiplataforma, es decir, conviven distintas arquitecturas con distintos sistemas operativos. Problema: ofrecer un ambiente integrado

Page 5: Ingeniería del software II

IS II Sistemas Distribuidos 5

Conceptos relacionados Extensibilidad: determina si el sistema puede

ser extendido y reimplementado, como añadir nuevos servicios para compartir recursos

Escalabilidad: es aquel sistema que mantiene su funcionalidad cuando aumentan el número de recursos y usuarios significativamente

Tratamiento de fallos: En un SD hay componentes que fallan y otros que siguen trabajando. Es importante proveer detección de fallos, enmascaramiento de fallos, tolerancia, recuperación, redundancia

Page 6: Ingeniería del software II

IS II Sistemas Distribuidos 6

Conceptos relacionados Enmascaramiento (ocultar o atenuar): puede

lograrse retransmitiendo mensajes o a traves de espejados de discos

Tolerancia: en ocasiones no se pueden detectar y ocultar todos los fallos.

Recuperación: hacer software que permita hacer roll back ante la caída del servidor (llevarse a un estado anterior)

Redundancia: poner más componentes, si uno falla se puede recurrir a otro para realizar la función que corresponda

Page 7: Ingeniería del software II

IS II Sistemas Distribuidos 7

Transparencia Es clave en un ambiente distribuido que el

usuario tenga la "sensación" de estar trabajando en un único sistema, abstrayéndose de la cantidad de computadoras, los vínculos y la ubicación de los archivos. Cuando se logra este objetivo, se dice que el sistema es transparente

Transparencia es por tanto la ocultación al usuario y al programador de la separación de componentes en un sistema distribuido. De esa manera, se ve al sistema como un todo más que como una colección de componentes independientes

Page 8: Ingeniería del software II

IS II Sistemas Distribuidos 8

Transparencia Existen diversos tipos de transparencia que se

deben tener en cuenta en un SD: Transparencia de acceso: Usar las mismas operaciones si

es remoto o si el local Transparencia de ubicación: Poder acceder a los

recursos sin que el usuario o programadores sepan donde están. Los usuarios no indican localización de los recursos

Transparencia de migracion o movilidad: Reubicar clientes y recursos sin afectar operación de usuarios y programas

Page 9: Ingeniería del software II

IS II Sistemas Distribuidos 9

Transparencia Transparencia de replica: Tener múltiples

ejemplares de cada recurso para usar el disponible, sin intervención del usuario o programador. Útil ante fallos

Transparencia de concurrencia: Varios usuarios pueden compartir recursos de manera automática. Los procesos trabajan concurrentemente sobre recursos compartidos

Transparencia de paralelismo: Las actividades pueden ocurrir en paralelo sin el conocimiento de los usuarios

Page 10: Ingeniería del software II

IS II Sistemas Distribuidos 10

Arquitectura de un SD La arquitectura de un SD define la forma en que

los componentes de un sistema interactúan uno con otro y se vinculan con la red subyacente

En un SD la plataforma es el nivel de HW y capas más bajas de software. Estas capas dan servicio a las que están por encima de ellos

El middleware es la capa de soft que enmascara la heterogeneidad ofreciendo al programador de aplicaciones un ambiente unificado

Page 11: Ingeniería del software II

IS II Sistemas Distribuidos 11

Arquitectura de un SD

Aplicaciones

Middleware

SO

HW

Plataforma

CORBA

COM/DCOMWINDOWS

UNIX

JAVA/RMI

Page 12: Ingeniería del software II

IS II Sistemas Distribuidos 12

Modelo Cliente/Servidor es una forma de dividir y especializar programas y equipos

de computo a fin de que la tarea que cada uno de ellos realiza se efectúe con la mayor eficiencia, y permita simplificar las actualizaciones y mantenimiento del sistema

En esta arquitectura la capacidad de proceso está repartida entre el servidor y los clientes

En la funcionalidad de un programa distribuido se pueden distinguir 3 capas o niveles:

Manejador de Base de datos (Nivel de almacenamiento),

Procesador de aplicaciones o reglas del negocio (Nivel lógico)

Interface del usuario (Nivel de presentación)

Page 13: Ingeniería del software II

IS II Sistemas Distribuidos 13

Modelo Cliente/Servidor De acuerdo con la distribución

estas capas existen dos posibilidades: Clientes ligeros: Cuando el cliente

solo se hace cargo de la presentación Clientes pesados: si el cliente asume

también la lógica del negocio

Page 14: Ingeniería del software II

IS II Sistemas Distribuidos 14

Modelo Cliente/Servidor Ejemplo: un cliente necesita realizar

estadísticas sobre un fichero que reside en otro ordenador: Enfoque con cliente ligero: el servidor recibe

una petición de tipo “estadísticas de fichero X”, procesa el fichero y devuelve un informe con las estadísticas al cliente

Enfoque con cliente pesado: el servidor recibe una petición de tipo “obtener fichero X”, posteriormente es el cliente el encargado de realizar la estadística sobre el fichero recibido

Page 15: Ingeniería del software II

IS II Sistemas Distribuidos 15

Código Móvil El código móvil es aquel que reside en un

servidor WEB y ante la solicitud que realiza un browser (navegador) de un usuario es descargado desde el servidor al navegador y allí se ejecuta, en el cliente. Applets de Java ActiveX de Microsoft

Restricciones de seguridad: no se puede permitir que el código movil haga “cualquier cosa” en el ordenador cliente

Page 16: Ingeniería del software II

IS II Sistemas Distribuidos 16

Código Móvil El código móvil puede obtener

permisos para efectuar determinadas tareas en principio prohibidas a través de certificados de seguridad

Nuevos mecanismos para código Móvil: Java Web Start: permite descargar y

ejecutar aplicaciones de escritorio

Page 17: Ingeniería del software II

IS II Sistemas Distribuidos 17

Agentes móviles Los agentes móviles son programas inteligentes

y autónomos que pueden moverse a través de la red, buscando servicios que el usuario necesita e interactuando con ellos

Un agente móvil tiene una inherente autonomía que le permite navegar por la red, para ello pregunta si debe ser enviado a otros nodos.

Los agentes móviles son capaces de ejecutarse en varias máquinas de la red sin necesidad de que su código esté instalado en cada uno de los ordenadores que visita. Por lo tanto, utilizan código móvil

Page 18: Ingeniería del software II

IS II Sistemas Distribuidos 18

Objetos Distribuidos Un objeto distribuido es aquel que esta

gestionado por un servidor y sus clientes invocan sus métodos utilizando un "método de invocación remota"

El cliente invoca el método mediante un mensaje al servidor que gestiona el objeto, se ejecuta el método del objeto en el servidor y el resultado se devuelve al cliente en otro mensaje

Page 19: Ingeniería del software II

IS II Sistemas Distribuidos 19

Tecnologías de Objetos distribuidos

RMI (Remote Invocation Method): Fue el primer fremework para crear sistemas distribuidos de Java. El sistema de Invocación Remota de Métodos (RMI) de Java permite, a un objeto que se está ejecutando en una Máquina Virtual Java (VM), llamar a métodos de otro objeto que está en otra VM diferente. Esta tecnología está asociada al lenguaje de programación Java, es decir, que permite la comunicación entre objetos creados en este lenguaje.

Page 20: Ingeniería del software II

IS II Sistemas Distribuidos 20

Tecnologías de Objetos distribuidos

DCOM.- Distributed Component Object Model.- El Modelo de Objeto Componente Distribuido, esta incluido en los sistemas operativos de Microsoft. Es un juego de conceptos e interfaces de programa, en el cual los objetos de programa del cliente, pueden solicitar servicios de objetos de programa servidores en otros ordenadores dentro de una red. Esta tecnología esta asociada a la plataforma de productos Microsoft

Page 21: Ingeniería del software II

IS II Sistemas Distribuidos 21

Tecnologías de Objetos distribuidos

CORBA.- Common Object Request Broker Architecture.- Tecnología introducida por el Grupo de Administración de Objetos OMG, creada para establecer una plataforma para la gestión de objetos remotos independiente del lenguaje de programación

Page 22: Ingeniería del software II

IS II Sistemas Distribuidos 22

Tecnologías de Objetos distribuidos

Problemas con l uso directo de las tecnologías de objetos distribuidos Complejas de utilizar para construir

aplicaciones empresariales (transacciones, persistencia, seguridad,replicación, etc.)

El programador necesita hacer uso de servicios complejos

Tecnologías de componentes distribuidos Permiten construir aplicaciones

empresariales sin que el programador tenga que conocer el API de los servicios necesarios

Page 23: Ingeniería del software II

IS II Sistemas Distribuidos 23

Tecnologías de Objetos distribuidos

Se construyen sobre las tecnologías de objetos distribuidosEj.: un componente EJB es un objeto Java RMI que transparentemente al programador puede usar transacciones,persistencia, seguridad, replicación, etc.

Tecnologías: EJB Componentes CORBA .NET (COM+)