sábado, 25 de octubre de 2014

INFORME DE LA CONSULTA DE ARQUITECTURA DE SOFTWARE






Fig. 1 Arquitectura de Software

2.1 Arquitectura de Software
Desarrollo
Definición:
Es el diseño de más alto nivel de la estructura de un sistema y que nos servirá para elaborar una planificación
Así una arquitectura bien echa facilita la comprensión para los desarrolladores y aún más para el usuario o cliente y por consiguiente encontraremos los posibles errores para corregirlos a tiempo
Toda arquitectura de software debe describir diversos aspectos del software. Generalmente, cada uno de estos aspectos se describe de una manera más comprensible si se utilizan distintos modelos o vistas
Existen tres vistas fundamentales en cualquier arquitectura
  • La visión estática:
Describe qué componentes tiene la arquitectura.
  • La visión funcional:
Describe qué hace cada componente.
  • La visión dinámica:
Describe cómo se comportan los componentes a lo largo del tiempo y cómo interactúan entre sí.
Se puede adoptar una arquitectura conocida en función de sus ventajas y desventajas para cada caso en concreto. Entre las arquitecturas más comunes son:
  • Monolítica
  • Cliente servidor
  • Arquitectura de tres niveles
  • Arquitectura de N niveles
Arquitectura Monolítica

El software se estructura en grupos muy acoplados fig. 1, es decir que en el mismo computador se tiene las tres capas como la de interfaz de usuario, la de lógica de negocio y de datos

Fig. 2 Arquitectura Monolitica

Arquitectura Cliente-Servidor
El software reparte su carga de cómputo en dos partes independientes, La separación entre cliente y servidor es una separación de tipo lógico fig. 2, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa
 


Fig. 3  Cliente Servidor

 

Arquitectura de tres niveles

Está referenciado a la arquitectura cliente-servidor, pero aquí se dividirá en tres capas fig. 3 para su mejor comprensión del sistema que se realice:
-Capa de presentación
-Capa de Negocio
-Capa de almacenamiento o Datos


Fig.4  Arquitectura de tres niveles


Arquitectura de N niveles
Similar a la de tres capas solo que aquí se dividiremos a más capas fig. 4, así que se podrá modificar una capa y no toda la aplicación
Fig. 5 Arquitectura N niveles
 
2.2 Arquitectura Cliente – Servidor

Desarrollo

La Arquitectura Cliente-Servidor puede ser definida como la combinación de sistemas que son capaces de colaborar entre ellos con la finalidad de proveer a los usuarios toda la información que requieran sin que conozcan donde está ubicada la misma. Además soporta un medio ambiente distribuido en donde los requerimientos de servicio de un cliente resultan en un trabajo realizado por servidores.
Diversas aplicaciones se ejecutan en un entorno cliente/servidor. Esto significa que los equipos clientes (equipos que forman parte de una red) contactan a un servidor, un equipo generalmente muy potente en materia de capacidad de entrada/salida, que proporciona servicios a los equipos clientes. Estos servicios son programas que proporcionan datos como la hora, archivos, una conexión, etc. Los servicios son utilizados por programas denominados programas clientes que se ejecutan en equipos clientes. Por eso se utiliza el término "cliente" (cliente FTP, cliente de correo electrónico, etc.) cuando un programa que se ha diseñado para ejecutarse en un equipo cliente, capaz de procesar los datos recibidos de un servidor (en el caso del cliente FTP se trata de archivos, mientras que para el cliente de correo electrónico se trata de correo electrónico).
 


Fig. 6 Arquitectura Cliente-Servidor


Ventajas de la arquitectura cliente/servidor


El modelo cliente/servidor se recomienda, en particular, para redes que requieran un alto grado de fiabilidad. Las principales ventajas son:
  • Recursos centralizados: debido a que el servidor es el centro de la red, puede administrar los recursos que son comunes a todos los usuarios, por ejemplo: una base de datos centralizada se utilizaría para evitar problemas provocados por datos contradictorios y redundantes.
  • Seguridad mejorada: ya que la cantidad de puntos de entrada que permite el acceso a los datos no es importante.
  • Administración al nivel del servidor: ya que los clientes no juegan un papel importante en este modelo, requieren menos administración.
  • Red escalable: gracias a esta arquitectura, es posible quitar o agregar clientes sin afectar el funcionamiento de la red y sin la necesidad de realizar mayores modificaciones.

Desventajas del modelo cliente/servidor


La arquitectura cliente/servidor también tiene las siguientes desventajas:
  • Costo elevado: debido a la complejidad técnica del servidor.
  • Un eslabón débil: el servidor es el único eslabón débil en la red de cliente/servidor, debido a que toda la red está construida en torno a él. Afortunadamente, el servidor es altamente tolerante a los fallos (principalmente gracias al sistema RAID).
 
2.3 Arquitectura WEB

Desarrollo

La forma de desarrollar aplicaciones hasta el momento estaba basado  sobre una arquitectura simple: la aplicación corría en forma local en nuestra PC. La ventaja era que la VM servía como ambiente donde cada uno de los objetos cumplía su función.
Lo más lógico es comprender lo siguiente,  1 cliente tiene un programa ejecutable (application client), el web browser es el más común  y el servidor tiene un programa ejecutable: en la materia será nuestro application server el que tendrá una VM donde vivan los objetos de negocio. 
El cliente hace pedidos a través de un puerto contra el servidor, el servidor responde. El flujo de mensajes siempre comienza en el cliente:

Cliente pide servicio (request)
Servidor responde (response)


Fig. 7 Arquitectura WEB



Arquitectura cliente servidor

El modelo cliente-servidor es una arquitectura software que involucra uno o más clientes solicitando servicios a uno o más servidores.
El cliente puede ser un proceso corriendo en una computadora o en un dispositivo como una PDA o un teléfono móvil. El servidor puede ser un proceso corriendo en una computadora (normalmente de altas prestaciones). En la arquitectura Web actual aparecen además elementos que se sitúan en medio (proxies, cachés).

Beneficios:
Usabilidad/flexibilidad/interoperabilidad/ escalabilidad.
  
Clientes
Originan el tráfico web, envían las peticiones y reciben las respuestas. Dos clases de clientes web: navegadores y robots.
Los navegadores (Netscape, IE, etc.), las peticiones están dirigidas por el usuario, repiten peticiones al mismo objeto cuando navegan por un site, utilizan caches de memoria y disco.
Robots (spiders, y agentes inteligentes), las peticiones son automatizadas la velocidad y carga está limitada por la velocidad de proceso, y por la velocidad de la red.


Funciones de los navegadores
Construyen y mandan la petición HTTP[1] reciben, interpretan y presentan la respuesta.
La apariencia final depende de los parámetros de configuración algunos recursos precisan aplicaciones de ayuda para visualizarse código MIME proporcionan el interfaz para conectarse y utilizar otros servicios: mail, news, ftp, etc.
El protocolo por defecto es http caché local sirve recursos guardados en la caché sin conectarse al servidor consistencia:
Fuerte: revalida siempre el recurso conectándose al servidor débil: se basa en los parámetros HTTP, y en los parámetros de configuración, para decidir si es necesario revalidar el recurso.


Funciones del proxy
Caché: guarda las respuestas comparte accesos con otros clientes filtra las peticiones y las respuestas (seguridad). Filtra las peticiones a ciertos sitios web filtra respuestas (pe. Basándose en el tamaño) guardan el anonimato.
Los servidores no conocen la IP del cliente  transforman las peticiones y las respuestas. Puede trasformar la petición para ajustarse a capacidades que comparte con el servidor 
(pe. Algoritmos de compresión). Puede ajustar la respuesta a las capacidades del cliente actúan también de pasarelas a otros sistemas no-HTTP.