SlideShare una empresa de Scribd logo
1 de 80
Descargar para leer sin conexión
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

La actualidad más candente

La actualidad más candente (20)

Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidas
 
Rup disciplinas
Rup disciplinasRup disciplinas
Rup disciplinas
 
Modelo 4+1
Modelo 4+1Modelo 4+1
Modelo 4+1
 
PRESENTACIÓN RUP
PRESENTACIÓN RUPPRESENTACIÓN RUP
PRESENTACIÓN RUP
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Requerimientos del software
Requerimientos del software Requerimientos del software
Requerimientos del software
 
Metodologias web
Metodologias webMetodologias web
Metodologias web
 
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
 
Unidad 5 interfaces
Unidad 5  interfacesUnidad 5  interfaces
Unidad 5 interfaces
 
UML. un analisis comparativo para la diagramación de software
UML.  un analisis comparativo para la diagramación de softwareUML.  un analisis comparativo para la diagramación de software
UML. un analisis comparativo para la diagramación de software
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Los 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentesLos 13 diagramas UML y sus componentes
Los 13 diagramas UML y sus componentes
 
Entornos de desarrollo para móviles
Entornos de desarrollo para móvilesEntornos de desarrollo para móviles
Entornos de desarrollo para móviles
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 Capas
 
Arquitectura de aplicaciones
Arquitectura de aplicacionesArquitectura de aplicaciones
Arquitectura de aplicaciones
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Ieee 830
Ieee 830Ieee 830
Ieee 830
 
Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccion
 

Destacado

Aplicaciones Distribuídas
Aplicaciones DistribuídasAplicaciones Distribuídas
Aplicaciones DistribuídasJavierialv
 
Unidad 1 Panorama general de las aplicaciones distribuidas
Unidad 1 Panorama general de las aplicaciones distribuidasUnidad 1 Panorama general de las aplicaciones distribuidas
Unidad 1 Panorama general de las aplicaciones distribuidasEduardo S de Loera
 
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
Ingeniería Inversa en Android.  Rooted Labs. Rooted CON 2012.Ingeniería Inversa en Android.  Rooted Labs. Rooted CON 2012.
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.Internet Security Auditors
 
Sistemas Distribuidos. Diseño e Implementacion
Sistemas Distribuidos. Diseño e ImplementacionSistemas Distribuidos. Diseño e Implementacion
Sistemas Distribuidos. Diseño e ImplementacionJorge Guerra
 
Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidasalicia
 
Snmp
SnmpSnmp
Snmp1 2d
 
Desarrollo aplicaciones distribuidas sockets
Desarrollo aplicaciones distribuidas socketsDesarrollo aplicaciones distribuidas sockets
Desarrollo aplicaciones distribuidas socketsdandark2000
 
Presentacion Evolucion De Las Tecnologias
Presentacion Evolucion De Las TecnologiasPresentacion Evolucion De Las Tecnologias
Presentacion Evolucion De Las Tecnologiasadriana
 
Arquitectura cliente servidor 2
Arquitectura cliente servidor 2Arquitectura cliente servidor 2
Arquitectura cliente servidor 2jc_lovecraft77
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativomlpv
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidosivancho4286
 
Tendencias Recientes en Data Mining
Tendencias Recientes en Data MiningTendencias Recientes en Data Mining
Tendencias Recientes en Data MiningDMC Perú
 
Evolucion de las aplicaciones informaticas
Evolucion de las aplicaciones informaticasEvolucion de las aplicaciones informaticas
Evolucion de las aplicaciones informaticasbuchoon
 

Destacado (20)

Aplicaciones Distribuídas
Aplicaciones DistribuídasAplicaciones Distribuídas
Aplicaciones Distribuídas
 
Unidad 1 Panorama general de las aplicaciones distribuidas
Unidad 1 Panorama general de las aplicaciones distribuidasUnidad 1 Panorama general de las aplicaciones distribuidas
Unidad 1 Panorama general de las aplicaciones distribuidas
 
P2p
P2pP2p
P2p
 
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
Ingeniería Inversa en Android.  Rooted Labs. Rooted CON 2012.Ingeniería Inversa en Android.  Rooted Labs. Rooted CON 2012.
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
 
Sistemas Distribuidos. Diseño e Implementacion
Sistemas Distribuidos. Diseño e ImplementacionSistemas Distribuidos. Diseño e Implementacion
Sistemas Distribuidos. Diseño e Implementacion
 
Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidas
 
Snmp
SnmpSnmp
Snmp
 
Electroquímica
ElectroquímicaElectroquímica
Electroquímica
 
02.conceptos basicos de la telefonia ip ori
02.conceptos basicos de la telefonia ip   ori02.conceptos basicos de la telefonia ip   ori
02.conceptos basicos de la telefonia ip ori
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Aplicaciones En Capas
Aplicaciones En CapasAplicaciones En Capas
Aplicaciones En Capas
 
Desarrollo aplicaciones distribuidas sockets
Desarrollo aplicaciones distribuidas socketsDesarrollo aplicaciones distribuidas sockets
Desarrollo aplicaciones distribuidas sockets
 
Presentacion Evolucion De Las Tecnologias
Presentacion Evolucion De Las TecnologiasPresentacion Evolucion De Las Tecnologias
Presentacion Evolucion De Las Tecnologias
 
Arquitectura cliente servidor 2
Arquitectura cliente servidor 2Arquitectura cliente servidor 2
Arquitectura cliente servidor 2
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidas
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Tendencias Recientes en Data Mining
Tendencias Recientes en Data MiningTendencias Recientes en Data Mining
Tendencias Recientes en Data Mining
 
Integración de Aplicaciones
Integración de AplicacionesIntegración de Aplicaciones
Integración de Aplicaciones
 
Evolucion de las aplicaciones informaticas
Evolucion de las aplicaciones informaticasEvolucion de las aplicaciones informaticas
Evolucion de las aplicaciones informaticas
 

Similar a Aplicaciones Distribuidas

Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidasTensor
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)Avanet
 
Taller campus party .net
Taller campus party .netTaller campus party .net
Taller campus party .netcampus party
 
Taller campus party
Taller campus partyTaller campus party
Taller campus partycampus party
 
Fundamentos De ProgramacióN Unidad 1
Fundamentos De ProgramacióN Unidad 1Fundamentos De ProgramacióN Unidad 1
Fundamentos De ProgramacióN Unidad 1cesarmrl2
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POOgueritamala
 
Tecnología Orientada A Objetos
Tecnología Orientada A ObjetosTecnología Orientada A Objetos
Tecnología Orientada A ObjetosAndrés
 
Tema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentesTema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentesGary Araujo Viscarra
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentesTensor
 

Similar a Aplicaciones Distribuidas (20)

Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidas
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
 
Taller campus party .net
Taller campus party .netTaller campus party .net
Taller campus party .net
 
Taller campus party
Taller campus partyTaller campus party
Taller campus party
 
Fundamentos De ProgramacióN Unidad 1
Fundamentos De ProgramacióN Unidad 1Fundamentos De ProgramacióN Unidad 1
Fundamentos De ProgramacióN Unidad 1
 
4.1, 4.2
4.1, 4.24.1, 4.2
4.1, 4.2
 
Compu 1
Compu 1Compu 1
Compu 1
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POO
 
Tecnología Orientada A Objetos
Tecnología Orientada A ObjetosTecnología Orientada A Objetos
Tecnología Orientada A Objetos
 
Diseño o.o
Diseño o.oDiseño o.o
Diseño o.o
 
Diseño o.o
Diseño o.oDiseño o.o
Diseño o.o
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
Tema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentesTema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentes
 
Deber analisis
Deber analisisDeber analisis
Deber analisis
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentes
 
MVC.ppt
MVC.pptMVC.ppt
MVC.ppt
 
Programacion o.o.
Programacion o.o.Programacion o.o.
Programacion o.o.
 

Más de Sorey García

Mision inspiración para docentes
Mision inspiración para docentesMision inspiración para docentes
Mision inspiración para docentesSorey García
 
NetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvilNetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvilSorey García
 
Introducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLIntroducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLSorey García
 
WIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnologíaWIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnologíaSorey García
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...Sorey García
 
Internet de las Cosas y Netduino
Internet de las Cosas y NetduinoInternet de las Cosas y Netduino
Internet de las Cosas y NetduinoSorey García
 
Misión: Inspiración
Misión: InspiraciónMisión: Inspiración
Misión: InspiraciónSorey García
 
Tendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarialTendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarialSorey García
 
[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura Medellín[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura MedellínSorey García
 
MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences Sorey García
 
GWAB: Azure Mobile Services
GWAB: Azure Mobile ServicesGWAB: Azure Mobile Services
GWAB: Azure Mobile ServicesSorey García
 
Similitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y WindowsSimilitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y WindowsSorey García
 
Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Sorey García
 
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Sorey García
 
Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8Sorey García
 
Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)Sorey García
 
Windows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para DesarrolladoresWindows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para DesarrolladoresSorey García
 
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y JavascriptJSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y JavascriptSorey García
 
Windows Phone 8 en Campus Party
Windows Phone 8 en Campus PartyWindows Phone 8 en Campus Party
Windows Phone 8 en Campus PartySorey García
 

Más de Sorey García (20)

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

Último

TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Festibity
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 

Último (14)

TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 

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