You are on page 1of 58

Distributed Applications

Distributed Systems
Importante!
...desarrollar software, no es programar

El desarrollo de software incluye todas las


disciplinas asociadas a la ingeniera de software

desde el anlisis hasta la puesta en produccin

el desarrollo de aplicaciones distribuidas sugiere por tanto


consideraciones durante la ejecucin de todo el ciclo de vida
Que es una aplicacin distribuida?
Es una aplicacin con distintos componentes
que se ejecutan en entornos separados,
normalmente en diferentes plataformas conectadas
a travs de una red

Wikipedia
Cuales son los componentes que se distribuyen?

Que criterios se usan para determinar que conforma


un componente?

A travs de que mecanismos se realiza la


comunicacin entre componentes distribuidos?

Que es un componente?
Que debera saberse y/o tenerse en
cuenta para desarrollar una aplicacin
distribuida?
Protocolos
Cliente/Servidor
Comunicacin
Webservices Despliegue

Servicios Objetos
UML
Interfaces
Niveles
Algunos Conceptos
Comunicacin
Interoperabilidad
Arquitectura Lgica de Negocio

Acceso a Datos Interfaz de Usuario


Paquetes
Capas
Componentes Calidades Sistmicas
Vamos por partes

A que se refiere la distribucin?


Las distribucin refiere a la construccin
de software por partes, a las cuales les son
asignadas un conjunto especfico de
responsabilidades dentro de un sistema.
Esta distribucin como bien enunciaba la definicin
formal, habla de que las partes o componentes se
encuentran en entornos separados, sin embargo, lo
que tiene implcito esta definicin, es que para
realizar esta separacin fsica primero debe tenerse
clara la separacin lgica de las partes de una
aplicacin, esto quiere decir que programticamente
existe una forma de separar o agrupar los
componentes.
La separacin fsica no es en todas las
ocasiones maquinas diferentes de
acuerdo a la arquitectura tambin puede
ser la ubicacin de un conjunto de
funcionalidades en archivos, rutas o
montadas sobre tecnologas diferentes
dentro de la misma mquina
Pero es bueno tener un fuerte concepto
acerca de los fierrros
Ahora bien, cuando hablemos de distribucin
lgica lo entenderemos como separacin por
Capas (tiers) y cuando hablemos de
distribucin fsica usaremos el trmino
separacin en Niveles (layers)
La separacin por capas y niveles hace
parte de la arquitectura del sistema y es
definida por el arquitecto de la aplicacin.
una situacin evidente si conocemos la ingeniera de software
Ambos tipos de distribucin se
hacen con base en las necesidades
tcnicas, de diseo y/o de negocio

esas necesidades son las que aprenderemos a


identificarlas
La separacin en niveles tiene una serie de
consideraciones de tipo tcnico y tambin
econmico, a las que nos referiremos mas
adelante, por ahora lo concebiremos de forma
bsica, como separacin fsica de los
componentes.

Sin embargo de las capas, tenemos ms que decir


Las capas dentro de una arquitectura son
un conjunto de servicios especializados que
pueden ser accesibles por mltiples clientes y
que deben ser fcilmente reutilizables.
Las capas adems, segn el escenario y
tipo de aplicacin, estn separadas
fsicamente.

Si, fsicamente! Lo que significa que una


capa puede ser a su vez un nivel
Una capa puede contener muchos
componentes, un mismo componente
puede ubicarse en varias capas de
acuerdo a su naturaleza y a las
consideraciones explicitas de la
arquitectura
Qu es un componente?
Veamos una definicin formal...

Un componente es un elemento de software


que encapsula una serie de funcionalidades.

Un componente es una unidad


independiente, que puede ser utilizado en
conjunto con otros componentes para formar
un sistema ms complejo.
Cada componente de un sistema puede
verse como un paquete o mdulo
Un componente esta compuesto por elementos que pueden
ser clases y/o recursos complementarios como archivos de
configuracin, imgenes, entre otros.
Y a su vez esas clases y recursos pueden estn agrupados
dentro del componente en subpaquetes, de acuerdo a su
naturaleza o necesidades de negocio.
En este punto visualizamos varios conceptos que podemos
presentar de la siguiente forma

Aplicacin

Niveles

Capas

Componentes

Paquetes

Clases
Otros
Recursos

Sub
paquetes
Recordemos lo ms bsico
Los principios que dirigen la orientacin a objetos son

la modularidad y la reusabilidad
Qu son?
En trminos simples la modularidad
significa trabajar por partes
(de hecho, tal cual como lo plantea el desarrollo por componentes)
Y la reusabilidad significa

No se invente la rueda!

Lo que ya esta hecho es para usarse y algunas


de las cosas que no estn hechas, deben
construirse pensando en que alguien
necesitar usarlo alguna vez
Veamos, que tanto recordamos

Que es una clase? Que es un objeto?

Que es un mensaje?

Que son atributos, caractersticas o propiedades?

Que son mtodos, procedimientos , funciones o


servicios?

Que significa que un objeto esta compuesto por una


interfaz, una implementacin y un estado?
El paradigma bsico de la separacin por
capas establece al menos 3 partes distintas
dentro de una aplicacin
La Presentacin
La Lgica de Negocio
El Acceso a Datos y los Datos
Veamos entonces que significan cada una de estas partes
La Presentacin o interfaz de usuario se
refiere al mecanismo de interaccin del
usuario con el sistema

Los tipos de interfaces de software ms comunes


son las aplicaciones de ventanas y web

Los tipos de interfaces de hardware ms comunes


son el ratn, el teclado, el micrfono, pantallas
tctiles, dispositivos de audio
La Lgica de Negocio refiere el conjunto de
reglas que determinan especficamente como
funciona un sistema, segn su naturaleza, y
bajo que parmetros y condiciones de
acuerdo a las necesidades de los clientes y
usuarios.
El acceso a datos refiere al medio a travs del
cual podemos acceder y manipular los datos
persistentes de un sistema

El almacenamiento de datos refiere a la


forma en que se encuentran guardados
dichos datos, por ejemplo, en archivos o
bases de datos.
Es muy importante entender, que la
separacin de la que se habla no es
necesariamente fsica, como ya se haba
dicho antes, la primera separacin que
se da es lgica y debemos reiterar que la
separacin lgica es programtica.
Es muy tentador para los desarrolladores mezclar
una o ms capas; por ejemplo implementando
alguna validacin u otro proceso de negocios dentro
de la capa de presentacin en vez de en la capa de
lgica de negocio, .
Sin embargo ubicar la lgica de programacin en las
capas adecuadas, es ms un comportamiento que
debera ser inherente al trabajo como programador,
obviamente uno que este interesado en hacer su
trabajo, bien hecho.

Los problemas que conllevan la mala separacin de


la lgica de programacin, no son inmediatos, sus
efectos se vern muy seguramente en el transcurso
de la evolucin de las aplicaciones.
Y pues para hacer un trabajo bien
hecho, hay que reconocer que las
consideraciones asociadas al
desarrollo por capas
Veamos cada una de ellas y enumeremos algunas
consideraciones iniciales
Que consideraciones deberamos
tener en cuenta cuando pensamos
en la Capa de Presentacin?
Y las consideraciones de la
Capa de Lgica de Negocios?
Solo por mencionar los ms
populares

Es mucho ms que una cuestin de gusto, hay que pensar en los


costos, la productividad, portabilidad e interoperabilidad entre
muchos otros factores
Y las consideraciones de la
Capa de Acceso a Datos?
Nuevamente solo por mencionar los
ms usados
ahora bien

Hay componentes de diferentes tipos


Ejecutables, Pginas Web, Libreras, Controles,
Procedimientos Almacenados, Servicios Web
Los ejecutables refieren programas o
aplicaciones de escritorio que corren sobre
un sistema operativo
Una pagina web es una fuente de informacin
adaptada para la World Wide Web (WWW), que es
accesible mediante un navegador de Internet y
normalmente forma parte de un sitio web.
Wikipedia
Las libreras refieren bibliotecas o conjunto de
clases que contienen lgica de programacin
implementada como servicios que pueden ser
utilizados desde otras libreras o aplicaciones
Los controles refieren libreras de
tipo grafico que pueden ser usada
en la construccin de interfaces de
usuario.
Un servicio web (en ingls Web service)
es un conjunto de protocolos y
estndares que sirven para intercambiar
datos entre aplicaciones
Wikipedia

Suena complicado verdad?


no hay problema, este tema lo ampliaremos ms adelante!
Lo que debemos saber inicialmente sobre los
servicios web es que actualmente son la forma mas
popular de comunicacin entre niveles, que si
recordamos, refiere a entornos separados e incluso
de tecnologas diferentes.
Importante!

No es lo mismo hablar de una aplicacin


distribuida y un sistema distribuido
Un sistema distribuido se define como:

Una coleccin de computadores separados fsicamente y


conectados entre s por una red de comunicaciones distribuida;
cada mquina posee sus componentes de hardware y software que
el usuario percibe como un solo sistema
Wikipedia
Es el caso del conocido buscador de Google,
el cual funciona utilizando una red de computadores
que realizan simultneamente las bsquedas
solicitadas por un usuario, sin que el usuario perciba
siquiera que esto esta sucediendo.

Una razn importante para la existencia de los


sistemas distribuidos tiene que ver con la limitacin
de recursos del hardware.
A pesar de actualmente contamos con altos niveles
de procesamiento en el hardware disponible, estos
niveles son limitados en recursos, es decir en
capacidad de procesamiento, memoria, ancho de
banda, entre otros criterios.

Esta situacin hace que los arquitectos de software,


tengan que implementar estrategias en donde mas
de un servidor atiende las solicitudes de los
sistemas que tienen por ejemplo muchos usuarios
accediendo de forma concurrente al mismo
sistema.
Un aplicacin distribuida puede requerir ser
implementada como un sistema distribuido, sin
embargo esta condicin no es indispensable, puesto
que est determinada por necesidades especficas
para tipos de aplicaciones y/o escenarios en los que
priman principalmente factores como la
escalabilidad horizontal y el desempeo
estas ultimas refieren calidades sistmicas, temas que
veremos ms adelante

You might also like