jueves, 9 de diciembre de 2010

BIBLIOGRAFIA.

www.wikipedia

monografias.com

Libro Ingenieria del Software UN ENFOQUE PRACTICO Quinta Edición.

Conclusion de Arquitectura C/S

En la arquitectura Cliente/Servidor se como los tres niveles de aplicación se relacionan. Focaliza sobre la estructura y la adaptación. Y determina qué entra en cada nivel y cómo la aplicación se relaciona con otras aplicaciones. 

ES POSIBLE CREAR UN SISTEMA DISTRIBUIDO.
* Distribución de Datos
*Distribución de Procesamiento
*Interfaz gráfica con el usuario

 CAMBIOS EN LA NATURALEZA DE LOS SISTEMAS DE DISTRIBUCION.

* Históricamente el área de informática elabora los sistemas de aplicación de forma completa, estando los usuarios obligados a “tomarlos o dejarlos”.
 
* En el futuro, el área informática elaborará la infraestructura, o sea: La base de Datos, los módulos de los procesos de negocio, y kits de herramientas; para que el usuario pueda elaborar sus propias aplicaciones.
 
FUNCIONES DEL AREA DE INFORMATICA.
1. Proveer los procesos de las reglas del negocio.
2. Proveer las estructuras fundamentales de las Bases de Datos
3. Proveer los elementos de la interfaz.
4. Proveer la infraestructura general de los sistemas, sobre la cual los equipos de trabajo puedan montar sus aplicaciones.

UN MODELO PARA EL PLANTEAMIENTO Y EL DESARROLLO.



DEL MODELO CONCEPTUAL A LO FISICO.


VENTAJAS DEL MODELO CLIENTE SERVIDOR.

1. Uno de los aspectos que más ha promovido el uso de sistemas Cliente/Servidor, es la existencia de plataformas de hardware cada vez más baratas.

2. El esquema Cliente/Servidor facilita la integración entre sistemas diferentes y comparte información permitiendo, por ejemplo que las máquinas ya existentes puedan ser utilizadas pero utilizando interfaces mas amigables al usuario.

3. Al favorecer el uso de interfaces gráficas interactivas, los sistemas construidos bajo este esquema tienen mayor interacción más intuitiva
con el usuario.
4. Es más rápido el mantenimiento y el desarrollo de aplicaciones, pues se pueden emplear las herramientas existentes (por ejemplo los servidores de SQL o las herramientas de más bajo nivel como los sockets o el RPC ).

La estructura inherentemente modular facilita además la integración de nuevas tecnologías y el crecimiento de la infraestructura computacional, favoreciendo así la escalabilidad de las soluciones.

El esquema Cliente/Servidor contribuye además, a proporcionar, a los diferentes departamentos de una organización, soluciones locales, pero permitiendo la integración de la información relevante a nivel global.

Herramientas de Programación.

Engloba los compiladores, los editores y los depuradores que se utilizan con los lenguajes de programación convencionales.

Herramientas de codificación convencionales: durante casi 30 años las únicas herramientas disponibles para los programadores eran las herramientas convencionales de programación y por esto, cada problema de ingeniería de software era como un problema de programación. Hoy en día las herramientas convencionales siguen existiendo como una primera línea del desarrollo de software, pero están respaldadas por todas las herramientas CASE.

Herramientas de codificación de cuarta generación: los sistemas de consulta a bases de datos, los generadores de código y los lenguajes de cuarta generación han cambiado la forma de desarrollar sistemas. Idealmente, estas herramientas de generación de código no solo traducirían la descripción de un sistema a un programa operativo sino que también ayudaran a verificar la corrección de la especificación del sistema. De tal forma que la salida resultante
satisfaga los requisitos del usuario.

Herramientas de programación orientadas a objetos: es una de las tecnologías más actuales de la ingeniería de software. Los entornos de programación orientados a objetos suelen estar unidos a lenguajes de programación específicos como: C++, Eiffel, Objetive-C, Smalltalk o Java. Un entorno O-O típico incorpora características de las interfaces de tercera generación (ventanas, ratón, menús desplegables, operaciones sensibles al contexto, multimedia, etc.) con funciones especializadas como la del “inspector” –una función que permite al ingeniero de software examinar todos los objetos contenidos en las bibliotecas de objetos para determinar si pueden o no se utilizadas en la aplicación actual.

Herramientas de creación de prototipos.

La realización de prototipos es un paradigma de la ingeniería de software ampliamente utilizado, todas las herramientas de creación de prototipos se sitúan en algún lugar del espectro de implementación que se muestra en la figura.

Herramientas de ingeniería inversa: utiliza como entrada el programa fuente para extraer y analizar su arquitectura, su estructura de control, el flujo lógico y la estructura y flujo de datos. Otras herramientas que pertenecen a esta categoría aplican una técnica conocida como partición de programas. Las herramientas de ingeniería inversa han sido denominadas herramientas de “visualización de código”, permitiendo que el ingeniero visualice el programa, y a su vez ayudan a controlar la cantidad de cambios y la productividad de la gente que los realiza. 

Herramientas de reingeniería: pueden dividirse en dos subcategorías – de reestructuración de código, que aceptan como entrada código fuente si estructurar y realizan el análisis de ingeniería inversa reestructurando el código y agostándolo a los conceptos modernos de programación estructurada; de revisión de datos, que analizan las definiciones de los datos o una base de datos descrita en un lenguaje de programación o en lenguaje de descripción de base de datos, traducen esta descripción a una notación grafica que puede ser analizada por el ingeniero de software. Al trabajar con las herramientas de reingeniería, se puede modificar la estructura lógica de la base de datos, normalizar los archivos resultantes y generar automáticamente un nuevo diseño físico de la base de datos. 

Integración de Herramientas.

Todos los entornos CASE implementan mecanismos de ejecución y mecanismos de comunicación. Para ilustrar las características de estos mecanismos se seguirá el Entorno de Herramientas Portables Comunes (por su siglas en ingles, PCTE), uno de los diferentes
estándares para entornos CASE. 

Los mecanismos de ejecución y de comunicación se denominan mecanismos básicos – se definen funciones para manipular entidades que existen dentro del contexto de desarrollo de software. Estas entidades incluyen objetos (datos, código fuente, documentos, dispositivos) y herramientas que operan sobre los objetos. 

Los mecanismos de ejecución constituyen una forma de ejecutar un proceso desde su contexto estático independientemente que se trate de un programa ejecutable o interpretable; a su vez los mecanismos de comunicación gestionan la comunicación entre procesos, estableciendo colas de mensajes que permiten comunicarse a las diferentes herramientas, por ejemplo: la realización de una tarea a cargo de la herramienta CASE “A” puede generar un “suceso” que
active la herramienta CASE “B”, para ejecutar B se debe utilizar un mecanismo de arranque, pero para pasar información de A a B se requiere un mecanismo de comunicación.

Ejemplos de herramientas CASE.

A continuación se muestra una lista de herramientas CASE, solo se muestran las que se consideraron mas comunes, algunos de nosotros ya hemos trabajado con una o mas de estas herramientas, pero ahora sabemos que son las herramientas CASE, y también sabemos lo útiles y la gran ayuda que podemos obtener de ellas.


Eclipse:
es una plataforma abierta para la integración de herramientas de desarrollo construidas por una comunidad abierta y proveedores de herramientas. Trabaja y se desarrolla con los criterios de código abierto y licencia libre.

ORACLE: es una de las principales compañías fabricantes de herramientas CASE. Entre sus productos mas utilizados se encuentran: JDeveloper, Designer y Forms Developer.

SYBASE- Powersoft's: PowerDesigner 7.0: herramienta CASE de Análisis y Diseño incluye capacidades de generación relacional y con orientación a objetos.

VISIO - MICROSOFT: Descripción visual de procesos y ayuda a la reingeniería de procesos.

Software Engineering Lab:
ASADAL - Herramienta CASE especializada en Sistemas de Tiempo Real.

IMB Software Racional ClearCase : Herramienta para el manejo de versiones.

Emutool y EmuDump: EmuTool y EmuDumpGenTool - Simulador de APZ para centrales telefónicas AXE utilizadas y desarrolladas por Ericsson.





ASISTENCIA POR COMPUTADORA.

Ingeniería asistida por computadora o por ordenador (CAE, del inglés Computer Aided Engineering) es el conjunto de programas informáticos que permiten analizar y simular los diseños de ingeniería realizados con el ordenador, o creados de otro modo e introducidos en el ordenador, para valorar sus características, propiedades, viabilidad y rentabilidad. Su finalidad es optimizar su desarrollo y consecuentes costos de fabricación y reducir al máximo las pruebas para la obtención del producto deseado.

La mayoría de ellas se presentan como módulos o extensiones de aplicaciones CAD, que incorporan:
  • Análisis cinemático.
  • Análisis por el método de elementos finitos (FEM, Finite Elements Method).
  • Maquinado por control numérico CNC (Computered Numeric Control).
  • De exportación de ficheros "Stl" (Estereolitografía) para máquinas de prototipado rápido.
http://es.wikipedia.org/wiki/Ingenier%C3%ADa_asistida_por_computadora

http://www.innovavirtual.org/campus/file.php/178/archivos_curso/CAP_12_2006_I_SI905/CAP_12_2006_I_SI905_VA7_M.pdf 

Todo el mundo conoce la historia de los hijos del zapatero: el zapatero esta tan ocupado haciendo zapatos para otros que sus hijos van descalzos. Durante los últimos 20 años, muchos de los ingenieros de software han sido los “hijos del zapatero”. Aunque han construidos sistemas complejos que automatizan el trabajo de otros, ellos mismos no han aplicado estas técnicas. De hecho hasta hace poco, la ingeniería de software era fundamentalmente una actividad manual en la que las herramientas se utilizaban únicamente en las etapas
finales.

Hoy en día, los ingenieros de software han recibido su primer par de zapatos la ingeniería de software asistida por computadora (sus siglas en ingles CASE). No hay tanta variedad de zapatos como nos gustaría. Sin embargo, constituyen una pieza indispensable del guardarropa del ingeniero y, con el tiempo, se harán mas confortables, mas fáciles de usar y mas  adaptables a las necesidades de cada usuario.

Orígenes del CASE:
 
En 1955, los ingenieros mecánicos y eléctricos trabajan con herramientas manuales: libros y tablas que contenían formulas y los algoritmos necesarios para el análisis de un problema; calculadoras (mecánicas) para realizar los cálculos necesarios y asegurar que el producto iba a funcionar; bolígrafos y lápices, mesas de dibujo y reglas que permita al ingeniero crear los modelos del producto que iba a construir. Se hizo un buen trabajo, pero se hizo a mano.

Paso una década y el mismo grupo de ingeniería comenzó a experimentar con la ingeniería basada en computadora. Muchos se resistieron a utilizar computadoras. Una excusa habitual era: “no me fió de los resultados”. Sin embargo, otros se lanzaron hacia delante. El proceso estaba cambiando.  

Pasamos a 1975. Las formulas y los algoritmos que el ingeniero necesitaba se incorporaron a programas de computadora que se utilizaban para analizar una gran variedad de problemas de ingeniería. La gente confiaba en los resultados de estos programas. De hecho, la mayoría de su trabajo no podía realizarse sin ellos. Las estación es de trabajo graficas, conectadas a potentes computadoras, estuvieron en uso y sustituyeron a las mesas de dibujo y otras herramientas para la creación de modelos de ingeniería. Se estaba construyendo un puente entre la ingeniería y el trabajo de manufactura, creando el primer enlace el diseño asistido por computadora (CAD) y la fabricación asistida por computadora (CAM.) 

Volviendo al futuro, encontramos ingeniería asistida por computadora (CAE), diseño asistido por computadora y fabricación integrada por computadora (CIM, sucesor de CAM) como actividades usuales en la mayoría de las empresas.

¿Qué es el CASE?

Las herramientas CASE son usadas en algunas de las fases de desarrollo de sistemas de información, incluyendo análisis, diseño y programación. Su objetivo fundamental es proveer un lenguaje para describir el sistema general que sea lo suficientemente explícito para generar todos los programas necesarios.

La CASE supone la aplicación de principios científicos a través de una metodología que ayude a producir software de alta calidad en un tiempo mucho más reducido. 

Bloques que Componen el CASE.
 
La Ingeniería del Software Asistida por Computadora (CASE) puede ser tan simple como una herramienta que permite desarrollar una actividad específica, o tan compleja como un "entorno" que integre distintas herramientas, bases de datos, hardware, red, sistemas operativos, estándares y muchos otros componentes.




Cada bloque constituye la base del siguiente, con las herramientas situadas en la cima de la pila. Es interesante ver que el fundamento para un CASE efectivo tiene poco que ver con las herramientas de ingeniería del software en si mismas.

Herramientas CASE: se describe con mas profundidad en el capitulo 9.1 Marco de integración: Es un conjunto de programas especializados que permiten a cada herramienta CASE comunicarse con las demás.

Servicios de portabilidad: Este conjunto constituye un puente entre las herramientas CASE, su marco de integración y la arquitectura de entorno. De esta forma permiten que las herramientas CASE y su marco de integración puedan migrar a través de diferentes plataformas de hardware y sistemas operativos sin problemas de adaptación.

Sistema operativo: Gestiona el hardware, la red y las herramientas; mantiene el entorno unido.

Plataforma hardware: Son las estaciones de trabajo individuales interconectadas mediante la red para que los ingenieros del software puedan comunicarse de forma efectiva.

Arquitectura de entorno:
Es la base del CASE, en este bloque se construyen los entornos de la ingeniería del software, engloba los sistemas de software y hardware. Además considera los patrones del trabajo humano que se aplican durante el proceso de ingeniería del software.

 En la siguientes figuras se muestran los niveles de integración del CASE. En el nivel mas bajo del espectro de integración esta la herramienta individual (solución puntual). Cuando las herramientas proporcionan facilidades para el intercambio de datos el nivel de integración aumenta ligeramente. Estas herramientas generan una salida en un formato estándar compatible con otras herramientas que puedan leer ese formato. En algunos casos, los que
construyen herramientas CASE complementarias trabajan juntos para establecer un puente entre ellas (ejemplo: una herramienta de diseño y análisis que se une a un generador de código). La integración por fuente única se da cuando el constructor de herramientas CASE integra diferentes herramientas y las vende como un único paquete. Al final del espectro de integración esta el entorno de soporte de proyectos integrado (IPSE por sus siglas en ingles).

Herramientas CASE:
Clasificación de las herramientas case Siempre que se intenta clasificar las herramientas CASE se corren riesgos. Se suele suponer que para crear un entorno CASE efectivo, se deben incluir todas las categorías de herramientas – pero esto es sencillamente falso. Se puede dar lugar a una confusión al situar a una herramienta determinada dentro de una categoría cuando se podría pensar que pertenece a una categoría distinta. La categorización simple tiende a ser llana – esto es, no aparee una interacción jerárquica de las herramientas o de las relaciones entre ellas. Pero aun asumiendo todos estos riesgos, es necesario crear
una taxonomía – para comprender mejor el alcance del CASE, y para apreciar mejor donde se pueden aplicar estar herramientas.

Las herramientas CASE se pueden clasificar bajo diferentes enfoques:

Por su función.

♦ Por su papel como instrumentos para el personal técnico o los directivos.

♦ Por la arquitectura del entorno que las soporta (hardware y software).

♦ Origen

Tomando la funcionalidad como criterio principal se creó la siguiente clasificación:

Herramientas de planificación de sistemas de gestión:  Proporcionan un "metámodelo" del cual se pueden obtener sistemas de información específicos, mediante la modelización de los requisitos de información estratégica de una organización. El objetivo principal de las herramientas de esta categoría es ayudar a comprender mejor como se mueve la información.

Herramientas de gestión de proyectos: ueden hacer estimaciones útiles de esfuerzo, coste y duración del proyecto, definir una estructura de partición del trabajo, planificación del mismo y hacer el seguimiento de proyectos de forma continua. Además se pueden utilizar para recoger datos que permitan realizar una estimación de la productividad del desarrollo y la calidad del producto.

Herramientas de planificación de proyectos: las herramientas que caen dentro de esta categoría se centran en dos áreas fundamentales: el esfuerzo y coste de un proyecto de software; y la planificación del proyecto.

Herramientas de seguimiento de requisitos: el objetivo de estas herramientas es de proporcionar un enfoque sistemático para aislar requisitos, comenzando con las especificaciones del cliente. La extracción de requisitos puede ser tan sencilla como encontrar cada ocurrencia del verbo “deber”.




Herramientas de gestión y medida: las herramientas de medidas actuales se centran a las características del producto y del proceso. Las herramientas orientadas a la gestión parten de medidas específicas del proyecto que proporcionan una indicación global de la productividad y de la calidad.

Herramientas de soporte.

La categoría de herramientas de soporte engloba las herramientas de aplicación y de sistemas que complementan el proceso de ingeniería de software. Estas incluyen herramientas de documentación, herramientas para gestión de redes y software del sistema, herramientas de control de calidad y herramientas de gestión de bases de datos y de configuración del software.

Herramientas de documentación: Las herramientas de producción de documentación y autoedición se utilizan en casi todos los aspectos de la ingeniería del software y representan una oportunidad muy interesante para todos los que desarrollan software. No es raro que una empresa emplee el 20 o el 30 por ciento de su esfuerzo de desarrollo en la documentación. Por esta razón, estas herramientas constituyen una opción importante para aumentar la productividad. Las herramientas de documentación suelen estar unidas a otras herramientas CASE por medio de una interfaz de datos suministrada por el vendedor. Muchas herramientas de análisis y diseño están unidas a uno o varios sistemas de autoedición, de tal forma que los
modelos y textos creados durante el análisis y el diseño puedan ser transmitidos a una herramienta de documentación y añadidos a la especificación creada utilizando la misma herramienta de documentación.

Herramientas para software de sistemas: El CASE es una tecnología de estaciones de trabajo. Por esto, el entorno CASE debe soportar software de redes de comunicación de alta calidad, correo electrónico, boletines electrónicos y otras posibilidades de comunicación.

Herramientas de control de calidad: La mayoría de las herramientas CASE que se venden como orientadas al control de calidad, son en realidad herramientas de medida que comprueban el código fuente para determinar su compatibilidad con lenguajes estándar. Otras herramientas extraen métricas técnicas como base para medir la calidad del software que se está desarrollando.

Herramientas de bases de datos y de GCS: El software de gestión de bases de datos sirve como base para el establecimiento de una base de datos CASE (almacén). Poniendo énfasis en los objetos de la configuración, las herramientas de gestión de bases de datos para CASE pueden evolucionar de los sistemas relacionales a los sistemas basados en objetos.

Las herramientas CASE pueden ayudar en las cinco tareas principales de la configuración del software, identificación y control de versiones, control de cambios, auditoria y gestión de estados. Las base de datos CASE proporciona un mecanismo para identificar cada elemento de la configuración y relacionarlo con otros elementos. “La utilización de bases de datos, herramientas de gestión y configuración y herramientas de inspección de componentes, es el
primer paso hacia una biblioteca de software que estimulará la reutilización de componentes de software.”

 Herramientas de análisis y diseño.
 
Las herramientas de análisis y diseño permiten al ingeniero de software crear un modelo del sistema que se va a construir. El modelo contiene una representación de los datos y del flujo de
control, del contenido de los datos, representaciones de los procesos, especificaciones de control y otras representaciones del modelo. Las herramientas de análisis y diseño también permiten la evaluación de la calidad del modelo y ayudana eliminar errores antes de que se propaguen al diseño, o al código.

Herramientas de AE/DE: la mayoría de las herramientas de diseño y análisis se basan en el método de análisis y diseño estructurado (AE/DE). El AE/DE es una técnica que permite al ingeniero de software crear progresivamente modelos más complejos de un sistema, comenzando en el nivel de requisitos y concluyendo con un diseño de arquitectura.

Herramientas PRO/SIM: las herramientas de creación de prototipos y de simulación (PRO/SIM) proporcionan al ingeniero de software la capacidad de predecir el comportamiento de un sistema en tiempo real antes de que sea construido. Muchas herramientas tienen la capacidad de generar código.
Herramientas para el diseño y desarrollo de interfaces: las herramientas de diseño y desarrollo de interfaces son, en realidad un conjunto de componentes de software, tales como menús, botones, estructuras de ventanas iconos, mecanismos de visualización, controladores de dispositivos y otros elementos de este tipo.




miércoles, 8 de diciembre de 2010

Funciones de los Niveles en la Arquitectura C/S.

 

ARQUITECTURA DE 2 NIVELES:

1. Generalmente usa los modelos de función distribuida o datos distribuidos.

2. Muy productivo.

3. Distribución no flexible.

         4. Dependiente del suministrador.

 ARQUITECTURA DE 3 NIVELES:

La Arquitectura de tres niveles es lógica y no física. Se preocupa con las funciones y no con la implantación.

La Arquitectura puede ser utilizada para desarrollar sistemas Centralizados o Distribuidos.

La Arquitectura facilitará la distribución de los componentes del sistema.

1. Modelo presentación-negocio-datos
2. Distribución flexible.
3. Sistema abierto. No dependiente.


 BENEFICIOS:

Estructura para la elaboración de aplicativos flexibles y fáciles de modificar, según las necesidades del negocio(cambio).
Alto nivel de reutilización del software y datos.
Fácil y rápido desarrollo de aplicativos grandes y complejos, para las transacciones y los SSD.
Fácil y rápido desarrollo de sistemas distribuidos que dan soporte a la administración central y a equipos auto-gestionados.

NIVELES DE ABSTRACCION:



BENEFICIOS DE LA ABSTRACCIÓN.

Esconde de cada nivel los detalles contenidos en los niveles inferiores:

Desarrollo simplificado del aplicativo: Al desarrollar un nivel no precisa preocuparse por el otro.
 
Mayor seguridad y protección: El desarrollador de un nivel no puede controlar físicamente otra camada en ningún nivel de detalle.

INTERFAZ ENTRE CAMADAS.
Es la superficie entre los componentes adyacentes de un aplicativo y el dispositivo por medio del cual ellos interactúan a través de las siguientes funciones:

Informa lo que el otro componente debe hacer, pregunta el estado actual del otro componente, recibe el resultado de las operaciones solicitadas.
 
 TIPOS DE INTERFACES.




PROYECTO DE CADA NIVEL.



DIVISIÓN DEL TRABAJO:


El desarrollo de un buen sistema Cliente / Servidor exige especialización de:
1. Interfaz gráfica
2. Redes de computadora
3. Programación de Negocios
4. Base de Datos
5. Programación de Base de Datos
6. Distribución de sistemas

METODOLOGIA ACTUAL DE PROYECTOS:

Arquitectura Cliente/Servidor.

CONCEPTOS:

Cualquier combinación de sistemas que pueden colaborar entre sí para dar a los usuarios toda la información que ellos necesiten sin que tengan que saber donde está ubicada.

Es una arquitectura de procesamientos cooperativo donde uno de los componentes pide servicios a otro.

Es un procesamiento de datos de índole colaborativo entre dos o más computadoras conectadas a una red.

El término cliente/servidor es originalmente aplicado a la arquitectura de software que describe el procesamiento entre dos o más programas: una aplicación y un servicio soportante.

IBM define al modelo Cliente/Servidor. "Es la tecnología que proporciona al usuario final el acceso transparente a las aplicaciones, datos, servicios de cómputo o cualquier otro recurso del grupo de trabajo y/o, a través de la organización, en múltiples plataformas. El modelo soporta un medio ambiente distribuido en el cual los requerimientos de servicio hechos por estaciones de trabajo inteligentes o "clientes'', resultan en un trabajo realizado por otros computadores llamados servidores".

"Es un modelo para construir sistemas de información, que se sustenta en la idea de repartir el tratamiento de la información y los datos por todo el sistema informático, permitiendo mejorar el rendimiento del sistema global de información".

CARACTERISTICAS DE  LA ARQUITECTURA CLIENTE SERVIDOR.

Combinación de un cliente que interactúa con el usuario, y un servidor que interactúa con los recursos compartidos. El proceso del cliente proporciona la interfaz entre el usuario y el resto del sistema. El proceso del servidor actúa como un motor de software que maneja recursos compartidos tales como bases de datos, impresoras, módems, etc. 
Las tareas del cliente y del servidor tienen diferentes requerimientos en cuanto a recursos de cómputo como velocidad del procesador, memoria, velocidad y capacidades del disco y input-output devices.
Se establece una relación entre procesos distintos, los cuales pueden ser ejecutados en la misma máquina o en máquinas diferentes distribuidas a lo largo de la red.
Existe una clara distinción de funciones basada en el concepto de "servicio", que se establece entre clientes y servidores.

La relación establecida puede ser de muchos a uno, en la que un servidor puede dar servicio a muchos clientes, regulando su acceso a recursos compartidos.

Los clientes corresponden a procesos activos en cuanto a que son éstos los que hacen peticiones de servicios a los servidores. Estos últimos tienen un carácter pasivo ya que esperan las peticiones de los clientes.
No existe otra relación entre clientes y servidores que no sea la que se establece a través del intercambio de mensajes entre ambos. El mensaje es el mecanismo para la petición y entrega de solicitudes de servicio.
 
 
El ambiente es heterogéneo. La plataforma de hardware y el sistema operativo del cliente y del servidor no son siempre la misma. Precisamente una de las principales ventajas de esta arquitectura es la posibilidad de conectar clientes y servidores independientemente de sus plataformas.

El concepto de escalabilidad tanto horizontal como vertical es aplicable a cualquier sistema Cliente/Servidor. La escalabilidad horizontal permite agregar más estaciones de trabajo activas sin afectar significativamente el rendimiento. La escalabilidad vertical permite mejorar las características del servidor o agregar múltiples servidores.

 MODELO DE ARQUITECTURA CLIENTE/SERVIDOR:

Front/end : Es la parte de la aplicación que interactúa con el usuario. Basados en una interfaz gráfica con el usuario (GUI). El Cliente corre la aplicación que ofrece la interfaz con el usuario.

Back/end: Es la parte no-interactiva de la aplicación. La mayor parte reside en las Bases de Datos (relacionales o no).

 APLICAIONES SIMPLES: 

No requieren una gran Base de Datos compartida, pueden ser elaboradas solamente en el Cliente.

APLICAIONES COMPLEJAS.

Exigen dos capas, una para la aplicación del usuario (Cliente) y otra para la base de datos (Servidor).



CLIENTE SERVIDDOR.

www.monografias.com/trabajos24/arquitectura-cliente-servidor/arquitectura-cliente-servidor.shtmlwww.desarrolloweb.com/articulos/arquitectura-cliente-servidor.htmlwww.csae.map.es/csi/silice/Global71.html.
http:www.pressman5.com 


 En el mundo de TCP/IP las comunicaciones entre computadoras se rigen básicamente por lo que se llama modelo Cliente-Servidor, éste es un modelo que intenta proveer usabilidad, flexibilidad, interoperabilidad y escalabilidad en las comunicaciones.

El término Cliente/Servidor fue usado por primera vez en 1980 para referirse a PC’s en red.
Este modelo Cliente/Servidor empezó a ser aceptado a finales de los 80’s. Su funcionamiento es sencillo: se tiene una máquina cliente, que requiere un servicio de una máquina servidor, y éste realiza la función para la que está programado (nótese que no tienen que tratarse de máquinas diferentes; es decir, una computadora por sí sola puede ser ambos cliente y servidor dependiendo del software de configuración).

DEFINICION:

Sistema distribuido entre múltiples procesadores donde hay clientes que solicitan servicios y servidores que los proporcionan. Separa los servicios situando cada uno en su plataforma más adecuada.

EL MODELO CLIENTE - SERVIDOR:

Desde el punto de vista funcional, se puede definir la computación Cliente/Servidor como una arquitectura distribuida que permite a los usuarios finales obtener acceso a la información en forma transparente aún en entornos multiplataforma.

En el modelo cliente servidor, el cliente envía un mensaje solicitando un determinado servicio a un servidor (hace una petición), y este envía uno o varios mensajes con la respuesta (provee el servicio).

 
En un sistema distribuido cada máquina puede cumplir el rol de servidor para algunas tareas y el rol de cliente para otras. 

La idea es tratar a una computadora como un instrumento, que por sí sola pueda realizar muchas tareas, pero con la consideración de que realice aquellas que son mas adecuadas a sus características. 

Si esto se aplica tanto a clientes como servidores se entiende que la forma más estándar de aplicación y uso de sistemas Cliente/Servidor es mediante la explotación de las PC’s a través de interfaces gráficas de usuario; mientras que la administración de datos y su seguridad e integridad se deja a cargo de computadoras centrales tipo mainframe. Usualmente la mayoría del trabajo pesado se hace en el proceso llamado servidor y el o los procesos cliente sólo se ocupan de la interacción con el usuario (aunque esto puede variar). 

En otras palabras la arquitectura Cliente/Servidor es una extensión de programación modular en la que la base fundamental es separar una gran pieza de software en módulos con el fin de hacer más fácil el desarrollo y mejorar su mantenimiento.

Esta arquitectura permite distribuir físicamente los procesos y los datos en forma más eficiente lo que en computación distribuida afecta directamente el tráfico de la red, reduciéndolo grandemente.

 CLIENTE / SERVIDOR.

Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.

En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.

La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.

Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.

La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico.

La red Cliente/Servidor es aquella red de comunicaciones en la que todos los clientes están conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en él se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se esté utilizando en una red mixta.

Cuando Implantar Cliente/Servidor?
1. Cambios estructurales y organizativos.
2. Cambios en organigramas.
3. Respuesta dinámica de mercado.
4. Cambio en procesos de negocio.

Que ayuda a la Implemetacion?

1. La demanda de sistemas fáciles.
2. Precio/rendimiento de estaciones y servidores.
3. Creciente acceso a la información para decisiones:
A.Separación datos-programas.
B.Programas flexibles.
4. Nuevas tecnologías de alta productividad.

FUNCIONAMIENTO DEL CLIENTE/SERVIDOR.


Un sistema cliente/servidor funciona tal como se detalla en el siguiente diagrama: 


El cliente envía una solicitud al servidor mediante su dirección IP y el puerto, que está reservado para un servicio en particular que se ejecuta en el servidor.
El servidor recibe la solicitud y responde con la dirección IP del equipo cliente y su puerto.
CLIENTE:
Es el que inicia un requerimiento de servicio. El requerimiento inicial puede convertirse en múltiples requerimientos de trabajo a través de redes LAN o WAN. La ubicación de los datos o de las aplicaciones es totalmente transparente para el cliente. En la arquitectura C/S el remitente de una solicitud es conocido como cliente. 

CARACTERISTICAS DEL CLIENTE. 

1.Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo).
2.Espera y recibe las respuestas del servidor.
3.Por lo general, puede conectarse a varios servidores a la vez.
4.Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario.
5. Al contratar un servicio de redes , se tiene que tener en la velocidad de conexión que le otorga al cliente y el tipo de cable que utiliza , por ejemplo : cable de cobre ronda entre 1 ms y 50 ms.

SERVIDOR:

Es cualquier recurso de cómputo dedicado a responder a los requerimientos del cliente. Los servidores pueden estar conectados a los clientes a través de redes, para proveer de múltiples servicios a los clientes y ciudadanos tales como impresión, acceso a bases de datos, fax, procesamiento de imágenes, etc. Al receptor de la solicitud enviada por cliente se conoce como servidor.

CARACTERISTICAS DEL SERVIDOR:

1. Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo).

2. Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.

3. Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado).

4. No es frecuente que interactúen directamente con los usuarios finales.

FUNCIONES:
Cliente:  
 
El cliente es el proceso que permite al usuario formular los requerimientos y pasarlos al servidor, se le conoce con el término front-end.

El Cliente normalmente maneja todas las funciones relacionadas con la manipulación y despliegue de datos, por lo que están desarrollados sobre plataformas que permiten construir interfaces gráficas de usuario (GUI), además de acceder a los servicios distribuidos en cualquier parte de una red.

Las funciones que lleva a cabo el proceso cliente se resumen en los siguientes puntos:

• Administrar la interfaz de usuario.

• Interactuar con el usuario.

• Procesar la lógica de la aplicación y hacer validaciones locales.

• Generar requerimientos de bases de datos.

• Recibir resultados del servidor.

• Formatear resultados.

SERVIDOR:
Es el proceso encargado de atender a múltiples clientes que hacen peticiones de algún recurso administrado por él. Al proceso servidor se le conoce con el término back-end.

El servidor normalmente maneja todas las funciones relacionadas con la mayoría de las reglas del negocio y los recursos de datos.

Las funciones que lleva a cabo el proceso servidor se resumen en los siguientes puntos:

• Aceptar los requerimientos de bases de datos que hacen los clientes.

• Procesar requerimientos de bases de datos.

• Formatear datos para trasmitirlos a los clientes.

• Procesar la lógica de la aplicación y realizar validaciones a nivel de bases de datos.