sábado, 24 de noviembre de 2012

Cliente-Servidor

Es una arquitectura basada en el principio clásico de divide y vencerás, donde el procesamiento se fracciona entre dos  entidades fundamentales denominadas cliente y servidor.


Surge en la década de los 80 como respuesta a la evolución del hardware en términos de redes, planteando un modelo versátil, modular basado en mensajes que permite incrementar la flexibilidad, la escalabilidad y la ínter-operación de los sistemas.


El cliente se define como el PROCESO que requiere un servicio en particular.
El servidor se define como el PROCESO que provee dicho servicio.
Debido a que clientes y servidores son conceptos a nivel software y no hardware, una misma máquina puede actuar como cliente y servidor al mismo tiempo.

VENTAJAS

1)Aprovecha mejor el ancho de banda
2)Aprovecha en mayor medida el hardware
3)Mayor seguridad y autonomía
4)Mejor manejo de la concurrencia
5)Permite que los clientes trabajen GUI mientras el servidor se centra en los procesos centrales


Ejemplo de un Cliente-Servidor






CLIENTE SERVIDOR MULTICAPA (Glosario)

CAPA: Conjunto de componentes de un aplicativo que se dedican a una labor en particular
CAPA DE PRESENTACIÓN (FrontEnd) : Todo aquello que se enfoca en la interacción con el usuario final.
REGLAS DEL NEGOCIO (Bussines rules) : Validaciones, restricciones, reglamentos, protocolos y normativas relativas a un dominio en particular.
CAPA LÓGICA (Middle Tier, Middleware) : Todo aquello que gestiona y hace valer las reglas del negocio.
CAPA DE ALMACENAMIENTO (BackEnd): Todos los elementos dedicados a la persistencia del sistema.

Ingeniería del Software

MVC: (Modelo vista controlador) Patrón de diseño que insta a desacoplar los elementos de presentación de los de lógica. Planteado inicialmente en SmallTalk.

PATRON OBSERVER: Patrón de diseño que plantea el desacoplamiento de presentación y lógica permitiendo múltiples vistas para una lógica en particular junto a la implementación de un método de notificación y actualización de vistas múltiples.

CLIENTE SERVIDOR DE 2 CAPAS

1) La primera capa encapsula la presentación y la lógica
2)La segunda gestiona el almacenamiento y puede almacenar parte de la lógica (Procedimientos almacenados, triggers).



CLIENTE SERVIDOR DE 2 CAPAS
Buen manejo de concurrencia hasta con 100 usuarios simultáneos aprox.
Protocolos propietarios pueden causar problemas de flexibilidad, portabilidad y escalabilidad.



CLIENTE SERVIDOR DE 3 CAPAS (Multicapa)

Agrega una capa intermedia (middle tier) que permite priorización y gestión de peticiones, gestión de balance, entre otros.  Buen manejo de concurrencia con miles de usuarios simultáneos. Protocolos estandarizados permiten gran flexibilidad, portabilidad y escalabilidad.



Ejemplo






RE INGENIERÍA

Es reconstruir. Creará un producto con una funcionalidad nueva, un mejor rendimiento y fiabilidad, y un mantenimiento mejorado. Eso es lo que llamamos re ingeniería.


¿Quién lo hace? 

A nivel de negocio, la re ingeniería es ejercida por especialistas de negocio (frecuentemente empresas de consultoría). A nivel de software, la re ingeniería es ejecutada por ingenieros del software.

¿ Por qué es importante? 

Vivimos en un mundo en constante cambio. Las demandas de funciones de negocios y de tecnología de información que las soportan están cambiando a un ritmo que impone mucha presión competitiva en todas las organizaciones comerciales. Tanto los negocios como el software que soportan (o es) el negocio deberán diseñarse una vez más para mantener el ritmo.

El proceso de re ingeniería del Software: 

1)Acompaña el análisis de inventarios. 
2)La reestructuración de documentos.
3)La ingeniería inversa.
4)La estructuración de programas y datos. 
5)La ingeniería directa.

REINGENIERIA DE PROCESOS DE NEGOCIOS.

La reingeniería constituye una recreación y reconfiguración de las actividades y procesos de la empresa, lo cual implica volver a crear y configurar de manera radical él o los sistemas de la compañía a los efectos de lograr incrementos significativos, y en un corto período de tiempo, en materia de rentabilidad, productividad, tiempo de respuesta, y calidad, lo cual implica la obtención de ventajas competitivas. Reingeniería es el rediseño rápido y radical de los procesos estratégicos de valor agregado y de los sistemas, las políticas y las estructuras organizacionales que los sustentan para optimizar los flujos de trabajo y la productividad de una organización.

Procesos de negocios:

Un proceso de negocio es un conjunto de tareas lógicamente relacionadas que se llevan a cabo para obtener un determinado resultado de negocio.

Reingeniería del Software:

Este escenario resulta sumamente conocido: Una aplicación ha dado servicio y ha cubierto las necesidades del negocio de una compañía durante diez o quince años. A lo largo de este tiempo, ha sido corregida, adaptada y mejorada muchas veces. Las personas se dedicaban a esta tarea con la mejor de sus intenciones, pero las prácticas de ingeniería del software buenas siempre se echaban a un lado (por la urgencia de otros problemas). Ahora la aplicación se ha vuelto inestable. Sigue funcionando, pero cada vez que intenta efectuar un cambio se producen efectos colaterales graves e inesperados.



Ingeniería web

Definición:

Es la aplicación de metodologías sistemáticas, disciplinadas y cuantifica bles al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad en la World Wide Web.

Ingeniería web e ingeniería de software

Diferencias:
1) Implica una mezcla de publicación impresa y desarrollo de software, marketing e informática de comunicaciones internas y relaciones externas, y de arte y de tecnología. 
2) El desarrollo de un Webapps es un esfuerzo multidisciplinario debido al manejo de múltiples formatos, con una mezcla de atención social para saber su efecto ético y legal.

Similitudes:
1) Todas las actividades CGC (Control y garantía de calidad) de la ingeniería de software tradicional como son: establecimiento y supervision de estándares, revisiones técnicas formales, análisis, seguimientos y registros de informes, etc. Son igualmente aplicables a la ingeniería web.
2)  Sin embargo, en la web toma especial relevancia para valorar la calidad aspectos como: funcionalidad, usabilidad, fiabilidad, seguridad, eficiencia y mantenibilidad.

Atributos de las aplicaciones web 

1)El usuario puede acceder fácilmente a estas aplicaciones empleando un navegador web (cliente).
2)Si es por Internet, el usuario puede entrar desde cualquier lugar del mundo donde tenga un acceso a Internet.
3) Pueden existir miles de usuarios pero una única aplicación instalada en un servidor, por lo tanto se puede actualizar y mantener una única aplicación y todos sus usuarios verán los resultados inmediatamente. 
4)Emplean tecnologías como Java, JavaFX, JavaScript, DHTML, Flash, Ajax... que dan gran potencia a la interfaz de usuario.
5)Emplean tecnologías que permiten una gran portabilidad entre diferentes plataformas. Por ejemplo, una aplicación web flash podría ejecutarse en un dispositivo móvil, en una computadora con Windows, Linux u otro sistema, en una consola de videojuegos, etc. 

Modelo de proceso de la Ingeniería Web (I)

Características como inmediatez,  evolución y crecimiento continuos, nos llevan a un proceso incremental y
evolutivo, que permite que el usuario se involucre activamente, facilitando el desarrollo de productos que se
ajustan mucho lo que éste busca y necesita.

Modelo de proceso de la Ingeniería Web (II)


Modelos de proceso de la Ingeniería Web (III)

1)Formulación: identificación de metas y objetivos
2)Planificación: estimación de costes, evaluación de riesgos y
Planificación temporal del proyecto.
3)Análisis: establecimiento de requisitos
4)Ingeniería: dos grupos de tareas paralelas,
Técnicas (diseño arquitectónico, de navegación y de interfaz)
No técnicas (diseño del contenido y producción)
5)Generación de páginas y pruebas
El contenido se fusiona con los diseños arquitectónico, de navegación y de interfaz para elaborar páginas web ejecutables en HTML, JSP... 
Integración con el software intermedio (middleware) de componentes
6)Evaluación con el cliente: revisión de cada incremento y solicitud de cambios


Sala limpia

Enfoque de la ingeniería del software de sala limpia

Es un enfoque formal para el desarrollo del software, que pueda dar lugar a un software con una calidad notablemente alta. Emplea la especificación de estructura de cajas para el modelado de análisis y diseño, haciendo hincapié en la verificación de la corrección, más que en la comprobación, como mecanismo fundamental para encontrar y eliminar errores. Se aplica una comprobación estadística de uso para desarrollar la información relativa a la tasa de fallos necesaria para certificar la fiabilidad del producto software. La filosofía de sala limpia es un enfoque riguroso de la ingeniería del software. Se trata de un modelo del proceso del software que hace hincapié en la verificación matemática de la corrección, y en la certificación de la fiabilidad del software. El resultado final es una tasa de fallo extremadamente baja, que sería difícil o imposible de conseguir empleando métodos menos formales.

La estrategia de Sala Limpia

1) Usa una versión especial del modelo incremental de software.
2) Cuando se certifica cada incremento se integra al todo y la funcionalidad del sistema va creciendo.
3) Planificación de incrementos.
4) Recolección de requisitos.
5) Especificación de la estructura de cajas.

El proceso de Sala Limpia

1) Verificación de corrección.
2) Generación de código, inspección y verificación.
3) Planificación de la comprobación estadística
4) Certificación.

Se utilizan tres tipos de cajas para estudiar el sistema

1)Caja negra: Especifica el comportamiento del sistema, o de una parte de un sistema.
2)Caja de estado: Esta caja encapsula los datos de estados y de servicios de forma análoga a los objetos. En esta vista de especificación, se representan las entradas a la caja de estados y sus salidas.
3) Caja transparente: Las funciones de transición que están implicadas en la caja de estados se definen en la caja transparente.

La ingeniería del software de sala limpia se diferencia de otros métodos o paradigmas por las siguientes razones:

1) Hace uso explícito del control estadístico de calidad.
2) Verifica la especificación del diseño empleando una demostración de corrección basada en las matemáticas.
3) Hace mucho uso de la comprobación estadística de utilización para descubrir errores de especial incidencia.