Aplicaciones Distribuidas Por: Sorey Bibiana García Zapata
Sobre mi… Una frase para empezar… “ El conocimiento esta condicionado por la experiencia” Me sé algunas, me gusta compartir las que me sé, las que no sé, me gusta aprenderlas, recibo todo tipo de aportes y correcciones… Y pues lo que no sepamos, lo averiguamos.
Sobre el curso… Este curso esta enfocado a dar las nociones principales alrededor del desarrollo de aplicaciones distribuidas, reconociendo las tecnologías relacionadas a cada una de las partes fundamentales de estas y por supuesto las consideraciones asociadas a su desarrollo.
Importante! ... desarrollar software , no es  programar … … este curso requiere conocer claramente esa diferencia!
El  desarrollo de software  incluye todas las disciplinas asociadas a la  ingeniería de software desde el  análisis   hasta la  puesta en producción …  el desarrollo de aplicaciones distribuidas sugiere por tanto consideraciones durante la ejecución de  todo el ciclo de vida …
Recomendación! Si a este momento, no reconoce conceptos como,  ingeniería de software u orientación a objetos , inicie con el aprendizaje de estos antes de profundizar técnicamente en la distribución de aplicaciones. Ahora si, comencemos…
Que es una  aplicación distribuida?
Es una aplicación con distintos  componentes   que se ejecutan en  entornos separados , normalmente en diferentes plataformas conectadas a través de una red Wikipedia
Se entendió? Veamos que tanto…
Cuales son los  componentes   que se  distribuyen ?  Que criterios se usan para determinar que conforma un  componente ? A través de que mecanismos se realiza la  comunicación  entre  componentes distribuidos ? Que es un  componente ?
Que debería  saberse y/o tenerse en cuenta  para  desarrollar   una  aplicación distribuida ?
Capas Niveles Arquitectura Protocolos Calidades Sistémicas UML Despliegue Cliente/Servidor Servicios Lógica de Negocio Acceso a Datos Webservices Interfaces Componentes Comunicación Objetos Interfaz de Usuario Paquetes Interoperabilidad Comunicación
Vamos por partes… A que se refiere la  distribución ?
Las  distribución  refiere a la construcción de software por  partes , a las cuales les son asignadas un  conjunto específico  de  responsabilidades  dentro de un sistema.
Esta  distribución  como bien enunciaba la definición formal, habla de que las partes o  componentes  se encuentran en  entornos separados , sin embargo, lo que tiene implícito esta definición, es que para realizar esta  separación física  primero debe tenerse clara la  separación lógica  de las partes de una aplicación, esto quiere decir que  programáticamente  existe una forma de  separar  o  agrupar   los  componentes .
La  separación física  no es en todas las ocasiones  “maquinas diferentes”  de acuerdo a arquitectura tambien puede ser la ubicación de un conjunto de funcionalidades en  archivos, rutas o montadas sobre técnologías  diferentes dentro de la  misma máquina
Ahora bien, cuando hablemos de  distribución lógica  lo entenderemos como separación por “ Capas ” (tiers) y cuando hablemos de  distribución física  usaremos el término separación en “ Niveles ” (layers)
La separación por  capas  y  niveles  hace parte de la  arquitectura del sistema  y es definida por el  arquitecto  de la aplicación. …  una situación evidente si conocemos la ingeniera de software… Nuestra tarea en este curso está en familiarizarnos con este tipo de tareas.
Ambos tipos de  distribución  se hacen con base en las necesidades  técnicas , de  diseño   y/o de  negocio …  esas necesidades son las que aprenderemos a identificar en este curso.
La separación en  niveles  tiene una serie de consideraciones de tipo  técnico   y también  económico , a las que nos referiremos mas adelante, por ahora lo concebiremos de forma básica, como  separación física  de los componentes. Sin embargo de las  capas , tenemos más que decir…
“ Las  capas   dentro de una  arquitectura  son un conjunto de  servicios  especializados que pueden ser accesibles por múltiples clientes y que deben ser fácilmente  reutilizables .”
Las  capas  además, según el  escenario   y  tipo de aplicación , están separadas  físicamente . Si,  físicamente ! 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 …  como? No hay problema, lo iremos entendiendo, de eso se trata…
…  bueno y a todo esto… Qué es un  componente ?
Veamos una definición 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 más complejo .
Cada  componente  de un sistema puede verse como un  paquete   o  módulo
Un  componente  esta compuesto por elementos que pueden ser  clases   y/o  recursos complementarios  como archivos de configuración, imágenes, entre otros.  Y a su vez esas clases y recursos pueden están 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… Aplicación Niveles Capas Componentes Paquetes Clases Sub paquetes Otros Recursos
Hablar de  clases  en este punto, nos hace recordar que debemos hacer un recuento nuestros conocimientos sobre  programación orientada a objetos , ya que la construcción de componentes esta basada es los mismos principios y/o características con las que cumple este conocido paradigma
…  la  modularidad  y la  reusabilidad Qué son? Recordemos lo más  básico … Los principios que dirigen la orientación a objetos son
En términos 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 están hechas, deben construirse pensando en que alguien necesitará usarlo  alguna vez
Que es una  clase ? Que es un  objeto ? Que es un  mensaje ? Que son  atributos ,  características  o  propiedades ? Que son  métodos ,  procedimientos  ,  funciones  o  servicios ? Que significa que un objeto esta compuesto por una  interfaz , una  implementación  y un  estado ? Veamos, que tanto recordamos…
Que es  abstracción ,  encapsulamiento ,  polimorfismo ,  herencia ? Después de este repaso avancemos un poco más Si en este punto se encuentra un poco confundido, recuerde mi consejo, no profundice más hasta no entender claramente los conceptos mencionados
Los componentes igual que los objetos deben cumplir con dos características importantes la  alta cohesión  y el  bajo acoplamiento …  que tan claros son?….
Cuando decimos que un  componente  tiene una  alta cohesión  hablamos de que todos los elementos  dentro   de el están  estrechamente relacionados …  el criterio de relación debe ser de negocio o técnico y  no  subjetivo
Cuando decimos que un  componente  tiene una  bajo acoplamiento  hablamos del nivel de  independencia  que tiene un  componente  con respecto a  otros …  esta independencia se refiere al grado en que un componente puede funcionar sin recurrir a otros y se refiere a relaciones de acoplamiento diferentes a la funcional o arquitectónica…
Tener estas dos metas en mente durante la construcción de  componentes , ahorrará  trabajo   y  tiempos   de desarrollo a los  equipos  y  proyectos …  si reconocemos el valor de la ingeniería de software, entenderemos lo que esto significa…
Los componentes desarrollados satisfacen una  necesidad  asociada a una o varias partes de una aplicación, y son separados de acuerdo a su  uso  o a por una  agrupación lógica  que determina la relación entre ellos.
El paradigma básico de la separación por capas establece al menos  3 partes distintas  dentro de una aplicación La Presentación La Lógica de Negocio El Acceso a Datos y los Datos Ahora bien…
Veamos entonces que significan cada una de estas  partes …
La  Presentación  o  interfaz de usuario  se refiere al mecanismo de  interacción  del usuario  con el sistema Los tipos de interfaces de  software  más comunes son las aplicaciones de  ventanas  y  web    Los tipos de interfaces de  hardware  más comunes son el ratón, el teclado, el micrófono, pantallas táctiles, dispositivos de audio
La  Lógica de Negocio  refiere el conjunto de  reglas  que determinan específicamente como funciona un sistema, según su  naturaleza , y bajo que  parámetros  y  condiciones  de acuerdo a las  necesidades  de los  clientes  y  usuarios .
El  acceso a datos  refiere al medio a través 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 .
Después de conocer estos conceptos básicos, podemos pasar entonces a ver, los diferentes tipos de aplicación Aplicaciones Monolíticas Aplicaciones Cliente/Servidor Aplicaciones de 3 Capas Aplicaciones de N Capas … veamos unas definiciones básica sobre estas
Una  aplicación monolítica  o de  una capa  es aquella cuya interfaz, lógica de negocio y acceso a datos se encuentran mezclados o altamente acoplados, esto dificulta que pueda hacerse una separación lógica y física donde alguna de las partes pueda ser reutilizable.
Una  aplicación Cliente/Servidor  o  aplicación de dos   capas  es aquella donde los datos y la lógica de negocio se encuentran separados de la interfaz, este tipo de aplicación también es denominada,  cliente liviano .
Otro escenario válido para una  aplicación Cliente/Servidor , se da separando los datos de la interfaz y la lógica de negocio, este tipo de aplicación también es denominado,  cliente pesado.
Una  aplicación 3 capas  es aquella donde la interfaz, la lógica de negocio, el acceso a datos y los datos se encuentran  separados.
Es  muy importante  entender, que la  separación  de la que se habla no es necesariamente  física , como ya se había dicho antes, la primera separación que se da es  lógica  y debemos reiterar que la  separación lógica  es  programática .
“ Es muy tentador para los desarrolladores  mezclar una o más capas ; por ejemplo implementando alguna validación u otro proceso de  negocios  dentro de la capa de presentación en vez de en la capa de lógica de negocio, ….”
Sin embargo ubicar la  lógica de programación  en las  capas adecuadas , es más un comportamiento que debería ser inherente al trabajo como programador, obviamente uno que este interesado en hacer su trabajo,  bien hecho. Los problemas que conllevan la  mala separación de la lógica de programación , no son inmediatos, sus efectos se verán muy seguramente en el transcurso de la evolución 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 deberíamos tener en cuenta cuando pensamos en la  Capa de Presentación ?
 
 
Y las consideraciones de la  Capa de Lógica de Negocios ?
Es mucho más que una cuestión de gusto, hay que pensar en los costos, la productividad, portabilidad e interoperabilidad entre muchos otros factores… Solo por mencionar los más populares…
Y las consideraciones de la  Capa de Acceso a Datos ?
Nuevamente solo por mencionar los más usados…
Bueno y si ya están separadas las 3 capas principales, que es entonces una de  aplicación de N capas ?
Pues bien, la evolución de la  tecnología  y las  redes de comunicaciones , hacen que cada día se generen  nuevos escenarios  de intercambio de información  entre empresas , y entre los mismos  sistemas existentes  dentro de las empresas, de forma que se satisfagan las necesidades constantes y cambiantes de clientes y usuarios, para quienes debe resultar  transparente   el obtener información de un sistema u otro.
Otra de las razones importantes por las que surge este concepto, es debido a que en la evolución del desarrollo de software, se ha identificado la necesidad de crear  nuevas capas, especializadas en funciones especificas , diferentes a las 3 identificadas previamente. Tal es el caso de la seguridad, el control de  excepciones, el transporte de datos entre capas, la generación de trazas de errores , entre otros.
Este por ejemplo es la propuesta de  Microsoft  para una aplicación distribuida y que como vemos tiene  más de 3 capas … Sin estrés, no hemos pasado de la tierra al cielo, con el tiempo iremos entendiendo que significa todo esto
Ya que hemos hecho énfasis en el significado del desarrollo o distribución de la lógica de programación y recursos del sistema por  capas , continuemos hablando de los  componentes .
Hay  componentes  de diferentes tipos Ejecutables, Páginas Web, Librerías, Controles, Procedimientos Almacenados, Servicios Web… …  ahora bien…
Los  ejecutables   refieren programas o aplicaciones de escritorio que corren sobre un sistema operativo
Una  pagina web  es una fuente de información 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  librerías   refieren bibliotecas o conjunto de  clases  que contienen lógica de programación implementada como  servicios  que pueden ser utilizados desde otras  librerías  o  aplicaciones
Los  controles   refieren  librerías  de tipo grafico que pueden ser usada en la construcción de  interfaces de usuario.
Un  servicio web  (en inglés  Web service ) es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones Wikipedia Suena complicado verdad? … no hay problema, este tema lo ampliaremos más adelante!
Lo que debemos saber inicialmente sobre los  servicios web  es que actualmente son la forma mas popular de  comunicación   entre niveles, que si recordamos, refiere a entornos  separados  e incluso de  tecnologías diferentes .
Tratemos de simplificar lo que acabamos de leer… Generalmente las aplicaciones exponen a los usuarios una  interfaz gráfica  que permite interactuar con los datos de un negocio. Los  servicios web  son un tipo de aplicación que permite exponer  servicios   ( métodos, procedimientos ) existentes en clases o librerías clases, a través de los cuales se accede a la  lógica de negocio  que ofrece un sistema, este es el mecanismo más comúnmente utilizado actualmente para compartir información entre empresas.
Estos son los  conceptos iníciales , entenderlos y apropiarse de su manejo nos garantizará entender su detalle y los temas que vienen más adelante, pero antes de terminar veamos una aclaración…
Importante!  No es lo mismo hablar de una  aplicación distribuida  y un  sistema distribuido
Un  sistema distribuido  se define como:  Una colección de computadores separados  físicamente  y conectados entre sí por una red de comunicaciones distribuida; cada máquina 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 simultáneamente las búsquedas solicitadas por un usuario,  sin que el usuario perciba siquiera que esto esta sucediendo . Una razón importante para la existencia de los  sistemas distribuidos  tiene que ver con la limitación 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 situación 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  aplicación distribuida  puede requerir ser implementada como un  sistema distribuido,  sin embargo esta condición no es indispensable, puesto que está determinada por necesidades específicas para tipos de aplicaciones y/o escenarios en los que priman principalmente factores como la  escalabilidad horizontal y el desempeño …  estas ultimas refieren calidades sistémicas, temas que veremos más adelante…
Nos vemos en la próxima! Ciao

Más contenido relacionado

PDF
100 preguntas sobre Word
PDF
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
PDF
Ejemplo soa
PPTX
Modelo OSI y TCP/IP
PPTX
WEATHER AND CLIMATE.pptx
PPTX
FUNDAMENTOS DE DIRECCION ESTRATEGICA.pptx
PPTX
ciberseguridad.pptx
PPTX
Presentación de Scrum en 15 mins
100 preguntas sobre Word
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
Ejemplo soa
Modelo OSI y TCP/IP
WEATHER AND CLIMATE.pptx
FUNDAMENTOS DE DIRECCION ESTRATEGICA.pptx
ciberseguridad.pptx
Presentación de Scrum en 15 mins

La actualidad más candente (20)

PPTX
Aplicaciones distribuidas
PPTX
Modelado de analisis para aplicaciones web
PDF
Especificación y resultados de las pruebas de software
PPTX
Diseño caso de pruebas
PPTX
Arquitectura de aplicaciones distribuidas
PPTX
2. El proceso del software
PDF
Arquitectura basada a Eventos para principiantes con Apache Kafka
PPTX
Modelos de los sistemas distribuidos
PPSX
Aplicaciones Distribuídas
PPT
Desarrollo web
PPTX
Estándar TIA 942
PPTX
Patrones diseño y arquitectura
PPTX
Vistas Arquitectonicas Ingenieria de Software
PPTX
Métricas de Proceso y proyecto de software
PPT
Diagrama de componentes
DOC
Requerimientos norma ieee830
PPTX
Diseño Estructurado
PPTX
Diagrama de Componentes
PPTX
METODOLOGÍA UWE (UML-BASED WEB ENGINEERING)
Aplicaciones distribuidas
Modelado de analisis para aplicaciones web
Especificación y resultados de las pruebas de software
Diseño caso de pruebas
Arquitectura de aplicaciones distribuidas
2. El proceso del software
Arquitectura basada a Eventos para principiantes con Apache Kafka
Modelos de los sistemas distribuidos
Aplicaciones Distribuídas
Desarrollo web
Estándar TIA 942
Patrones diseño y arquitectura
Vistas Arquitectonicas Ingenieria de Software
Métricas de Proceso y proyecto de software
Diagrama de componentes
Requerimientos norma ieee830
Diseño Estructurado
Diagrama de Componentes
METODOLOGÍA UWE (UML-BASED WEB ENGINEERING)
Publicidad

Destacado (20)

PPT
Unidad 1 Panorama general de las aplicaciones distribuidas
ODP
PDF
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
PPT
Sistemas Distribuidos. Diseño e Implementacion
PPTX
Aplicaciones distribuidas
PDF
Snmp
PDF
Electroquímica
PPT
02.conceptos basicos de la telefonia ip ori
PPT
Aplicaciones En Capas
PDF
Desarrollo aplicaciones distribuidas sockets
PPTX
Presentacion Evolucion De Las Tecnologias
PDF
Arquitectura cliente servidor 2
PPTX
Cuadro comparativo
PDF
Aplicaciones distribuidas
PPTX
Sistemas distribuidos
PDF
Tendencias Recientes en Data Mining
DOCX
Integración de Aplicaciones
PPTX
Evolucion de las aplicaciones informaticas
PPTX
Protocolos
Unidad 1 Panorama general de las aplicaciones distribuidas
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
Sistemas Distribuidos. Diseño e Implementacion
Aplicaciones distribuidas
Snmp
Electroquímica
02.conceptos basicos de la telefonia ip ori
Aplicaciones En Capas
Desarrollo aplicaciones distribuidas sockets
Presentacion Evolucion De Las Tecnologias
Arquitectura cliente servidor 2
Cuadro comparativo
Aplicaciones distribuidas
Sistemas distribuidos
Tendencias Recientes en Data Mining
Integración de Aplicaciones
Evolucion de las aplicaciones informaticas
Protocolos
Publicidad

Similar a Aplicaciones Distribuidas (20)

PPTX
Aplicaciones distribuidas
PPTX
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
PPTX
Taller campus party
PPTX
Taller campus party .net
PPS
Fundamentos De ProgramacióN Unidad 1
DOCX
PPT
Fundamentos de POO
DOC
Tecnología Orientada A Objetos
DOC
Diseño o.o
DOC
Diseño o.o
PDF
Tema nº 1
PDF
Tema nº 1
PDF
Tema1 desarrollo de software basado en componentes
DOC
Deber analisis
PPTX
Framework
PPTX
Framework
PDF
Desarrollo de software basado en componentes
PPT
MVC.ppt
PDF
Programacion o.o.
Aplicaciones distribuidas
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Taller campus party
Taller campus party .net
Fundamentos De ProgramacióN Unidad 1
Fundamentos de POO
Tecnología Orientada A Objetos
Diseño o.o
Diseño o.o
Tema nº 1
Tema nº 1
Tema1 desarrollo de software basado en componentes
Deber analisis
Framework
Framework
Desarrollo de software basado en componentes
MVC.ppt
Programacion o.o.

Más de Sorey García (20)

PDF
Mision inspiración para docentes
PDF
NetConfUY: Maximizando la productividad del desarrollo móvil
PDF
Introducción a Xamarin Forms con XAML
PDF
WIE: El poder de transformar al mundo con tecnología
PDF
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
PDF
Internet de las Cosas y Netduino
PDF
Misión: Inspiración
PDF
Codies.Launch()
PDF
Tendencias de movilidad en el mercado masivo y empresarial
PDF
[Avanet] Fiesta del Libro y la Cultura Medellín
PDF
MVP Open Day - Best Practices/Experiences
PDF
GWAB: Azure Mobile Services
PDF
Similitudes y deferencias en UX para Windows Phone y Windows
PDF
Taller MVVM Imagine Camp Medellín (Intermedio)
PDF
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
PDF
Conociendo el ecosistema de Windows Phone 8 y Windows 8
PDF
Hackaton Globant - Windows Phone (snnipets and tips)
PDF
Windows Phone 8: Tips de Diseño para Desarrolladores
PDF
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
PDF
Windows Phone 8 en Campus Party
Mision inspiración para docentes
NetConfUY: Maximizando la productividad del desarrollo móvil
Introducción a Xamarin Forms con XAML
WIE: El poder de transformar al mundo con tecnología
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
Internet de las Cosas y Netduino
Misión: Inspiración
Codies.Launch()
Tendencias de movilidad en el mercado masivo y empresarial
[Avanet] Fiesta del Libro y la Cultura Medellín
MVP Open Day - Best Practices/Experiences
GWAB: Azure Mobile Services
Similitudes y deferencias en UX para Windows Phone y Windows
Taller MVVM Imagine Camp Medellín (Intermedio)
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8
Hackaton Globant - Windows Phone (snnipets and tips)
Windows Phone 8: Tips de Diseño para Desarrolladores
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
Windows Phone 8 en Campus Party

Último (20)

DOCX
Trabajo informatica joel torres 10-.....................
DOCX
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PPT
Protocolos de seguridad y mecanismos encriptación
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PPTX
PRESENTACION El PODER DE LA MENTALIDAD.pptx
PDF
Presentación_u.01_digitalización_CFGS.pdf
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
PPTX
Uso responsable de la tecnología - EEST N°1
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
PPTX
libro proyecto con scratch jr pdf en la e
DOCX
Informee_APA_Microbittrabajoogrupal.docx
PPTX
CLASE PRACTICA-- SESION 6 -- FPW -- 04 11 23.pptx
PDF
Guía_de_implementación_Marco_de_gobierno_y_gestión_de_TI_Universidades.pdf
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PPTX
TECNOLOGIAS DE INFORMACION Y COMUNICACION
DOCX
orientacion nicol juliana portela jimenez
PPTX
Usuarios en la arquitectura de la información
PDF
Taller tecnológico Michelle lobo Velasquez
PDF
Teoría de estadística descriptiva y aplicaciones .pdf
PPTX
Reconocimiento-Automatico-de-Placas-Vehiculares-con-IA.pptx
Trabajo informatica joel torres 10-.....................
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
Protocolos de seguridad y mecanismos encriptación
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PRESENTACION El PODER DE LA MENTALIDAD.pptx
Presentación_u.01_digitalización_CFGS.pdf
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
Uso responsable de la tecnología - EEST N°1
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
libro proyecto con scratch jr pdf en la e
Informee_APA_Microbittrabajoogrupal.docx
CLASE PRACTICA-- SESION 6 -- FPW -- 04 11 23.pptx
Guía_de_implementación_Marco_de_gobierno_y_gestión_de_TI_Universidades.pdf
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
TECNOLOGIAS DE INFORMACION Y COMUNICACION
orientacion nicol juliana portela jimenez
Usuarios en la arquitectura de la información
Taller tecnológico Michelle lobo Velasquez
Teoría de estadística descriptiva y aplicaciones .pdf
Reconocimiento-Automatico-de-Placas-Vehiculares-con-IA.pptx

Aplicaciones Distribuidas

  • 1. Aplicaciones Distribuidas Por: Sorey Bibiana García Zapata
  • 2. Sobre mi… Una frase para empezar… “ El conocimiento esta condicionado por la experiencia” Me sé algunas, me gusta compartir las que me sé, las que no sé, me gusta aprenderlas, recibo todo tipo de aportes y correcciones… Y pues lo que no sepamos, lo averiguamos.
  • 3. Sobre el curso… Este curso esta enfocado a dar las nociones principales alrededor del desarrollo de aplicaciones distribuidas, reconociendo las tecnologías relacionadas a cada una de las partes fundamentales de estas y por supuesto las consideraciones asociadas a su desarrollo.
  • 4. Importante! ... desarrollar software , no es programar … … este curso requiere conocer claramente esa diferencia!
  • 5. El desarrollo de software incluye todas las disciplinas asociadas a la ingeniería de software desde el análisis hasta la puesta en producción … el desarrollo de aplicaciones distribuidas sugiere por tanto consideraciones durante la ejecución de todo el ciclo de vida …
  • 6. Recomendación! Si a este momento, no reconoce conceptos como, ingeniería de software u orientación a objetos , inicie con el aprendizaje de estos antes de profundizar técnicamente en la distribución de aplicaciones. Ahora si, comencemos…
  • 7. Que es una aplicación distribuida?
  • 8. Es una aplicación con distintos componentes que se ejecutan en entornos separados , normalmente en diferentes plataformas conectadas a través de una red Wikipedia
  • 9. Se entendió? Veamos que tanto…
  • 10. Cuales son los componentes que se distribuyen ? Que criterios se usan para determinar que conforma un componente ? A través de que mecanismos se realiza la comunicación entre componentes distribuidos ? Que es un componente ?
  • 11. Que debería saberse y/o tenerse en cuenta para desarrollar una aplicación distribuida ?
  • 12. Capas Niveles Arquitectura Protocolos Calidades Sistémicas UML Despliegue Cliente/Servidor Servicios Lógica de Negocio Acceso a Datos Webservices Interfaces Componentes Comunicación Objetos Interfaz de Usuario Paquetes Interoperabilidad Comunicación
  • 13. Vamos por partes… A que se refiere la distribución ?
  • 14. Las distribución refiere a la construcción de software por partes , a las cuales les son asignadas un conjunto específico de responsabilidades dentro de un sistema.
  • 15. Esta distribución como bien enunciaba la definición formal, habla de que las partes o componentes se encuentran en entornos separados , sin embargo, lo que tiene implícito esta definición, es que para realizar esta separación física primero debe tenerse clara la separación lógica de las partes de una aplicación, esto quiere decir que programáticamente existe una forma de separar o agrupar los componentes .
  • 16. La separación física no es en todas las ocasiones “maquinas diferentes” de acuerdo a arquitectura tambien puede ser la ubicación de un conjunto de funcionalidades en archivos, rutas o montadas sobre técnologías diferentes dentro de la misma máquina
  • 17. Ahora bien, cuando hablemos de distribución lógica lo entenderemos como separación por “ Capas ” (tiers) y cuando hablemos de distribución física usaremos el término separación en “ Niveles ” (layers)
  • 18. La separación por capas y niveles hace parte de la arquitectura del sistema y es definida por el arquitecto de la aplicación. … una situación evidente si conocemos la ingeniera de software… Nuestra tarea en este curso está en familiarizarnos con este tipo de tareas.
  • 19. Ambos tipos de distribución se hacen con base en las necesidades técnicas , de diseño y/o de negocio … esas necesidades son las que aprenderemos a identificar en este curso.
  • 20. La separación en niveles tiene una serie de consideraciones de tipo técnico y también económico , a las que nos referiremos mas adelante, por ahora lo concebiremos de forma básica, como separación física de los componentes. Sin embargo de las capas , tenemos más que decir…
  • 21. “ Las capas dentro de una arquitectura son un conjunto de servicios especializados que pueden ser accesibles por múltiples clientes y que deben ser fácilmente reutilizables .”
  • 22. Las capas además, según el escenario y tipo de aplicación , están separadas físicamente . Si, físicamente ! Lo que significa que una capa puede ser a su vez un nivel
  • 23. 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 … como? No hay problema, lo iremos entendiendo, de eso se trata…
  • 24. … bueno y a todo esto… Qué es un componente ?
  • 25. Veamos una definición 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 más complejo .
  • 26. Cada componente de un sistema puede verse como un paquete o módulo
  • 27. Un componente esta compuesto por elementos que pueden ser clases y/o recursos complementarios como archivos de configuración, imágenes, entre otros. Y a su vez esas clases y recursos pueden están agrupados dentro del componente en subpaquetes , de acuerdo a su naturaleza o necesidades de negocio.
  • 28. En este punto visualizamos varios conceptos que podemos presentar de la siguiente forma… Aplicación Niveles Capas Componentes Paquetes Clases Sub paquetes Otros Recursos
  • 29. Hablar de clases en este punto, nos hace recordar que debemos hacer un recuento nuestros conocimientos sobre programación orientada a objetos , ya que la construcción de componentes esta basada es los mismos principios y/o características con las que cumple este conocido paradigma
  • 30. … la modularidad y la reusabilidad Qué son? Recordemos lo más básico … Los principios que dirigen la orientación a objetos son
  • 31. En términos simples la modularidad significa trabajar por partes … (de hecho, tal cual como lo plantea el desarrollo por componentes)
  • 32. Y la reusabilidad significa No se invente la rueda! Lo que ya esta hecho es para usarse y algunas de las cosas que no están hechas, deben construirse pensando en que alguien necesitará usarlo alguna vez
  • 33. Que es una clase ? Que es un objeto ? Que es un mensaje ? Que son atributos , características o propiedades ? Que son métodos , procedimientos , funciones o servicios ? Que significa que un objeto esta compuesto por una interfaz , una implementación y un estado ? Veamos, que tanto recordamos…
  • 34. Que es abstracción , encapsulamiento , polimorfismo , herencia ? Después de este repaso avancemos un poco más Si en este punto se encuentra un poco confundido, recuerde mi consejo, no profundice más hasta no entender claramente los conceptos mencionados
  • 35. Los componentes igual que los objetos deben cumplir con dos características importantes la alta cohesión y el bajo acoplamiento … que tan claros son?….
  • 36. Cuando decimos que un componente tiene una alta cohesión hablamos de que todos los elementos dentro de el están estrechamente relacionados … el criterio de relación debe ser de negocio o técnico y no subjetivo
  • 37. Cuando decimos que un componente tiene una bajo acoplamiento hablamos del nivel de independencia que tiene un componente con respecto a otros … esta independencia se refiere al grado en que un componente puede funcionar sin recurrir a otros y se refiere a relaciones de acoplamiento diferentes a la funcional o arquitectónica…
  • 38. Tener estas dos metas en mente durante la construcción de componentes , ahorrará trabajo y tiempos de desarrollo a los equipos y proyectos … si reconocemos el valor de la ingeniería de software, entenderemos lo que esto significa…
  • 39. Los componentes desarrollados satisfacen una necesidad asociada a una o varias partes de una aplicación, y son separados de acuerdo a su uso o a por una agrupación lógica que determina la relación entre ellos.
  • 40. El paradigma básico de la separación por capas establece al menos 3 partes distintas dentro de una aplicación La Presentación La Lógica de Negocio El Acceso a Datos y los Datos Ahora bien…
  • 41. Veamos entonces que significan cada una de estas partes …
  • 42. La Presentación o interfaz de usuario se refiere al mecanismo de interacción del usuario con el sistema Los tipos de interfaces de software más comunes son las aplicaciones de ventanas y web Los tipos de interfaces de hardware más comunes son el ratón, el teclado, el micrófono, pantallas táctiles, dispositivos de audio
  • 43. La Lógica de Negocio refiere el conjunto de reglas que determinan específicamente como funciona un sistema, según su naturaleza , y bajo que parámetros y condiciones de acuerdo a las necesidades de los clientes y usuarios .
  • 44. El acceso a datos refiere al medio a través 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 .
  • 45. Después de conocer estos conceptos básicos, podemos pasar entonces a ver, los diferentes tipos de aplicación Aplicaciones Monolíticas Aplicaciones Cliente/Servidor Aplicaciones de 3 Capas Aplicaciones de N Capas … veamos unas definiciones básica sobre estas
  • 46. Una aplicación monolítica o de una capa es aquella cuya interfaz, lógica de negocio y acceso a datos se encuentran mezclados o altamente acoplados, esto dificulta que pueda hacerse una separación lógica y física donde alguna de las partes pueda ser reutilizable.
  • 47. Una aplicación Cliente/Servidor o aplicación de dos capas es aquella donde los datos y la lógica de negocio se encuentran separados de la interfaz, este tipo de aplicación también es denominada, cliente liviano .
  • 48. Otro escenario válido para una aplicación Cliente/Servidor , se da separando los datos de la interfaz y la lógica de negocio, este tipo de aplicación también es denominado, cliente pesado.
  • 49. Una aplicación 3 capas es aquella donde la interfaz, la lógica de negocio, el acceso a datos y los datos se encuentran separados.
  • 50. Es muy importante entender, que la separación de la que se habla no es necesariamente física , como ya se había dicho antes, la primera separación que se da es lógica y debemos reiterar que la separación lógica es programática .
  • 51. “ Es muy tentador para los desarrolladores mezclar una o más capas ; por ejemplo implementando alguna validación u otro proceso de negocios dentro de la capa de presentación en vez de en la capa de lógica de negocio, ….”
  • 52. Sin embargo ubicar la lógica de programación en las capas adecuadas , es más un comportamiento que debería ser inherente al trabajo como programador, obviamente uno que este interesado en hacer su trabajo, bien hecho. Los problemas que conllevan la mala separación de la lógica de programación , no son inmediatos, sus efectos se verán muy seguramente en el transcurso de la evolución de las aplicaciones.
  • 53. 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…
  • 54. Que consideraciones deberíamos tener en cuenta cuando pensamos en la Capa de Presentación ?
  • 55.  
  • 56.  
  • 57. Y las consideraciones de la Capa de Lógica de Negocios ?
  • 58. Es mucho más que una cuestión de gusto, hay que pensar en los costos, la productividad, portabilidad e interoperabilidad entre muchos otros factores… Solo por mencionar los más populares…
  • 59. Y las consideraciones de la Capa de Acceso a Datos ?
  • 60. Nuevamente solo por mencionar los más usados…
  • 61. Bueno y si ya están separadas las 3 capas principales, que es entonces una de aplicación de N capas ?
  • 62. Pues bien, la evolución de la tecnología y las redes de comunicaciones , hacen que cada día se generen nuevos escenarios de intercambio de información entre empresas , y entre los mismos sistemas existentes dentro de las empresas, de forma que se satisfagan las necesidades constantes y cambiantes de clientes y usuarios, para quienes debe resultar transparente el obtener información de un sistema u otro.
  • 63. Otra de las razones importantes por las que surge este concepto, es debido a que en la evolución del desarrollo de software, se ha identificado la necesidad de crear nuevas capas, especializadas en funciones especificas , diferentes a las 3 identificadas previamente. Tal es el caso de la seguridad, el control de excepciones, el transporte de datos entre capas, la generación de trazas de errores , entre otros.
  • 64. Este por ejemplo es la propuesta de Microsoft para una aplicación distribuida y que como vemos tiene más de 3 capas … Sin estrés, no hemos pasado de la tierra al cielo, con el tiempo iremos entendiendo que significa todo esto
  • 65. Ya que hemos hecho énfasis en el significado del desarrollo o distribución de la lógica de programación y recursos del sistema por capas , continuemos hablando de los componentes .
  • 66. Hay componentes de diferentes tipos Ejecutables, Páginas Web, Librerías, Controles, Procedimientos Almacenados, Servicios Web… … ahora bien…
  • 67. Los ejecutables refieren programas o aplicaciones de escritorio que corren sobre un sistema operativo
  • 68. Una pagina web es una fuente de información adaptada para la World Wide Web (WWW), que es accesible mediante un navegador de Internet y normalmente forma parte de un sitio web. Wikipedia
  • 69. Las librerías refieren bibliotecas o conjunto de clases que contienen lógica de programación implementada como servicios que pueden ser utilizados desde otras librerías o aplicaciones
  • 70. Los controles refieren librerías de tipo grafico que pueden ser usada en la construcción de interfaces de usuario.
  • 71. Un servicio web (en inglés Web service ) es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones Wikipedia Suena complicado verdad? … no hay problema, este tema lo ampliaremos más adelante!
  • 72. Lo que debemos saber inicialmente sobre los servicios web es que actualmente son la forma mas popular de comunicación entre niveles, que si recordamos, refiere a entornos separados e incluso de tecnologías diferentes .
  • 73. Tratemos de simplificar lo que acabamos de leer… Generalmente las aplicaciones exponen a los usuarios una interfaz gráfica que permite interactuar con los datos de un negocio. Los servicios web son un tipo de aplicación que permite exponer servicios ( métodos, procedimientos ) existentes en clases o librerías clases, a través de los cuales se accede a la lógica de negocio que ofrece un sistema, este es el mecanismo más comúnmente utilizado actualmente para compartir información entre empresas.
  • 74. Estos son los conceptos iníciales , entenderlos y apropiarse de su manejo nos garantizará entender su detalle y los temas que vienen más adelante, pero antes de terminar veamos una aclaración…
  • 75. Importante! No es lo mismo hablar de una aplicación distribuida y un sistema distribuido
  • 76. Un sistema distribuido se define como: Una colección de computadores separados físicamente y conectados entre sí por una red de comunicaciones distribuida; cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistema Wikipedia
  • 77. Es el caso del conocido buscador de Google , el cual funciona utilizando una red de computadores que realizan simultáneamente las búsquedas solicitadas por un usuario, sin que el usuario perciba siquiera que esto esta sucediendo . Una razón importante para la existencia de los sistemas distribuidos tiene que ver con la limitación de recursos del hardware .
  • 78. 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 situación 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 .
  • 79. Un aplicación distribuida puede requerir ser implementada como un sistema distribuido, sin embargo esta condición no es indispensable, puesto que está determinada por necesidades específicas para tipos de aplicaciones y/o escenarios en los que priman principalmente factores como la escalabilidad horizontal y el desempeño … estas ultimas refieren calidades sistémicas, temas que veremos más adelante…
  • 80. Nos vemos en la próxima! Ciao