domingo, 27 de mayo de 2012

Arquitecturas de Sistemas Distribuidos


 Pensar en objetos que pueden distribuirse en varias computadores de una red y comunicarse a través de middleware.
Ventajas: abierto, flexible, escalable  posibilidad de reconfiguración

CORBA

Middleware, Intermediario de peticiones de objetos. Se requiere middleware a dos niveles:
Nivel de comunicación lógica: funcionalidades que permite a los objetos intercambiar datos y controlar la información sobre diferentes computadores – estándares CORBA y COM.
Nivel de componentes: proporciona una base para desarrollar componentes compatibles
Estándares como CORBA, EJB o Active X.
CORBA (Common Object Request Broker Architecture) desarrollado por OMG (Object
Management Group).

Propone Object Management Architectura  una arquitectura formada por varios componentes: 
Objetos de aplicación propios.
Objetos estándar para un dominio especifico.
Servicios fundamentales para computación distribuida como gestión de seguridad y directorios.
Facilidades horizontales como interfaz de usuarios, gestión del sistema y otras.

Los cuatro elementos principales para los estándares CORBA son:
Modelos de objetos para objetos de aplicación donde un objeto CORBA es una encapsulación de un estado con un lenguaje neutral bien definido IDL (Interface
Definition Language).
Un intermediario de peticiones de objetos ORB que gestiona peticiones para servicios de objetos – localiza el servicio, prepara la petición, envía la petición y devuelve el resultado.
Un conjunto de servicios generales que serán requeridos por muchas aplicaciones distribuidas.

Conjunto de componentes comunes construidos sobre estos servicios básicos que pueden ser requeridos por las aplicaciones.

Computación Distribuida Interorganizacional

Proporciona mejores condiciones para aplicar estándares locales y procesos operacionales.
Disponibilidad de modelos más recientes de computación distribuida que permiten computación  distribuida interorganizacional que    intraorgranizacional.
Computación peer to peer (p2p).
Sistemas orientados a servicios.

 
Computación Peer to Peer

Son sistemas descentralizados en los que los cálculos pueden llevarse a cabo en cualquier nodo de la red y, al menos en principio no se hace distinción entre clientes y servidores.
Su fin, aprovechar la ventaja de la potencia computacional y disponibilidad de almacenamiento a través de una red de computadoras.
En una arquitectura descentralizada los nodos no son simplemente elementos funcional, sino también interruptores que encaminan los datos y señales.
Altamente tolerante a fallos y tolerante a nodos desconectados.

Sistemas orientados a servicios

El desarrollo de la WWW trajo consigo que los clientes tuvieses acceso a servidores remotos situados fuera de las organizaciones, si éstas ubicaban su información en HTML entonces esta podía ser accedida por estas computadores; el acceso podría
ser por navegador y el acceso a almacenes de información por otros programas.
Para solucionar este problema se propuso la noción de un servicio web – que permite a las organizaciones hacer accesible la información a otros programas definiendo y publicando una interfaz de servicio web independiente de la aplicación que lo ogrede o lo utiliza.
Los tres estándares fundamentales que permiten la comunicación de servicios web son:
• SOAP (Simple Object Access Protocol) Define una organización para intercambio de datos estructurados entre servicios web.
• WSDL (Web Services Description Language). Define cómo puede presentarse las interfaces de los servicios web.
• UDDI (Universal Description, Discovery and Integration) define como puede organizarse la información de descripción de servicios.

Cliente - Servidor


Esta arquitectura se divide en dos partes claramente diferenciadas, la primera es la parte del servidor y la segunda la de un conjunto de clientes.

Normalmente el servidor es una máquina bastante potente que actúa de depósito de datos y funciona como un sistema gestor de base de datos (SGBD).

Por otro lado los clientes suelen ser estaciones de trabajo que solicitan varios servicios al servidor.

Ambas partes deben estar conectadas entre sí mediante una red.
Una representación gráfica de este tipo de arquitectura sería la siguiente.

Este tipo de arquitectura es la más utilizada en la actualidad, debido a que es la más avanzada y la que mejor ha evolucionado en estos últimos años.

Podemos decir que esta arquitectura necesita tres tipos de software para su correcto funcionamiento:
  • Software de gestión de datos: Este software se encarga de la manipulación y gestión de los datos almacenados y requeridos por las diferentes aplicaciones. Normalmente este software se aloja en el servidor.
  • Software de desarrollo: este tipo de software se aloja en los clientes y solo en aquellos que se dedique al desarrollo de aplicaciones.
  • Software de interacción con los usuarios: También reside en los clientes y es la aplicación gráfica de usuario para la manipulación de datos, siempre claro a nivel usuario (consultas principalmente).
A parte de estos existen más aplicaciones software para el correcto funcionamiento de esta arquitectura pero ya están condicionados por el tipo de sistema operativo instalado, el tipo de red en la que se encuentra, etc.


Arquitectura Multiprocesador

Formado por varios procesos, que pueden ejecutarse sobre procesadores diferentes (aunque no necesariamente), es muy común en sistemas grandes de tiempo real, recogen información, toman decisiones, con la afirmación, y envían señales a los actuadores que modifican el entorno del sistema.

La ventaja de un sistema multiproceso reside en la operación llamada cambio de contexto. Esta operación consiste en quitar a un proceso de la CPU, ejecutar otro proceso y volver a colocar el primero sin que se entere de nada. 

El uso de múltiples procesadores mejora el rendimiento y adaptabilidad del sistema, los sistemas de múltiples procesos  no son necesariamente sistemas distribuidos. Si se dispone de más de un procesador, entonces se puede implementar la distribución, pero los diseñadores del sistema no siempre concideran forzosamente cuestiones de distribución mediante el proceso de diseño.

Un ejemplo para este tipo de sistemas es un modelo simplificado de un sistema de control de tráfico. Un conjunto de sensores distribuidos recogen información sobre le fluijo de tráfico y la procesan localmemte antes de enviarla a una sala de control. Los operadores toman decisiones usando esta información  y dan instucciones a un proceso de control de diversas luces de tráfico.


sábado, 19 de mayo de 2012

Las Dimensiones de los Requisitos

Los calificativos que se aplican al termino requisito, muestran distintos aspectos ortogonales, teniendo las siguientes caracteristicas:
  • Información
  • Funcional
  • No funcional
Tienen los siguientes ambitos y audiencia

  • Software - Clientes y usuarios
  • Hardware - Desarrolladores
  • Sistema
Propiedad Deseable de los Requisitos

Que sea comprensible por clientes y usuarios, que sirva como canal de comunicación, para llegar  aun buen entendimiento de lo que en realidad se quiere hacer.

Verificable
Proceso finito y de coste razonable,  es decir que sean requisitos claros y concisos.




Arquitectura de Software

Diseño de Arquitectura

Busca la manera de que mi software sea más eficiente, debido de que esta indica la estructura, funcionamiento e interacción entre las partes del software. Es más que todo parecida a los planos de un edificio en construcción.  David Garlan y Mary Shaw definen que la Arquitectura es un nivel de diseño que hace foco en aspectos "más allá de los algoritmos y estructuras de datos de la computación; el diseño y especificación de la estructura global del sistema es un nuevo tipo de problema".
Se apoya en los Requerimientos No Funcionales, debido a que nos indica como va a estar conformado mi software.

Modelos o vistas
Toda arquitectura de software debe describir diversos aspectos del software. Generalmente, cada uno de estos aspectos se describe de una manera más comprensible si se utilizan distintos modelos o vistas. Es importante destacar que cada uno de ellos constituye una descripción parcial de una misma arquitectura y es deseable que exista cierto solapamiento entre ellos. Esto es así porque todas las vistas deben ser coherentes entre sí, evidente dado que describen la misma cosa.
Cada paradigma de desarrollo exige diferente número y tipo de vistas o modelos para describir una arquitectura. No obstante, existen al menos tres vistas absolutamente fundamentales en cualquier arquitectura:
  • La visión estática: describe qué componentes tiene la arquitectura.
  • La visión funcional: describe qué hace cada componente.
  • La visión dinámica: describe cómo se comportan los componentes a lo largo del tiempo y como interactúan entre sí.

Arquitecturas más comunes
Generalmente, no es necesario inventar una nueva arquitectura de software para cada sistema de información. Lo habitual es adoptar una arquitectura conocida en función de sus ventajas e inconvenientes para cada caso en concreto. Así, las arquitecturas más universales son:
  • Monolítica. Donde el software se estructura en grupos funcionales muy acoplados.
  • Cliente-servidor. Donde el software reparte su carga de cómputo en dos partes independientes pero sin reparto claro de funciones.
  • Arquitectura de tres niveles. Especialización de la arquitectura cliente-servidor donde la carga se divide en tres partes (o capas) con un reparto claro de funciones: una capa para la presentación (interfaz de usuario), otra para el cálculo (donde se encuentra modelado el negocio) y otra para el almacenamiento (persistencia). Una capa solamente tiene relación con la siguiente.
  •  Nube