Lenguaje+ACME

=** sobre el lenguaje ACME tenemos lo mas conocido a nivel mundial que son estas imagenes **= = =

= = = = =** ahora si la arquitectura en pizarra **= =** La arquitectura en pizarra consta de múltiples elementos funcionales, denominados agentes, y un instrumento de control denominado pizarra. **= =** Los agentes suelen estar especializados en una tarea concreta o elemental. Todos ellos cooperan para alcanzar una meta común, si bien, sus objetivos individuales no están aparentemente coordinados. **= =** El comportamiento básico de cualquier agente consiste en examinar la pizarra, realizar su tarea y escribir sus conclusiones en la misma pizarra. De esta manera, otro agente puede trabajar sobre los resultados generados por otro. **= =** La computación termina cuando se alcanza alguna condición deseada entre los resultados escritos en la pizarra. **= =** La pizarra tiene un doble papel. Por una parte, coordina a los distintos agentes y, por otra, facilita su intercomunicación. El estado inicial de la pizarra es una descripción del problema que resolver y el estado final será la solución del problema. **= =** Los resultados generados por los agentes deben responder a un lenguaje y semántica común. En general, se suelen utilizar formalismos lógicos o matemáticos, tales como expresiones lógicas de primer orden. **= = = =** Ventajas e inconvenientes **= =** Esta arquitectura es tremendamente útil cuando el problema a resolver (o algoritmo a implementar) es extremadamente complejo en términos cognitivos. Es decir, cuando el flujo de control del algoritmo es enrevesado, o simplemente, no se tiene un conocimiento completo del problema a resolver. **= =** Las desventajas de la arquitectura son bastante obvias a priori. Es importante no generalizar en este aspecto, puesto que cada implementación en particular puede solventar estas desventajas en algún ámbito limitado: **= =** Desde un punto de vista más filosófico, la arquitectura en pizarra ofrece un interesante experimento de tipo social. Cada agente tiene sus propios objetivos, desconoce los objetivos de los demás, y tampoco conoce el objetivo global (la solución del problema). Sin embargo, se produce una cooperación inconsciente entre ellos que lleva a una meta más importante. **= = = =** Ingeniería de software **= = = =** es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicación de la ingeniería al software.[|1] Es la aplicación de la ingeniería al software, ya que integra matemáticas, ciencias de la computación y prácticas cuyos orígenes se encuentran en la ingeniería.[|2] **= =** Se pueden citar otras definiciones enunciadas por prestigiosos autores: **= = =
 * =** No existe garantía de que se alcanzará una solución. **=
 * =** Es una arquitectura ineficiente, puesto que no existe una cota respecto al tiempo de cómputo necesario para resolver el problema. **=
 * =** Es difícil obtener una traza de los pasos que llevaron a la solución, es decir, no ofrece explicaciones. **=
 * =** Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978) **=
 * =** Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976). **=
 * =** Ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972). **=





**//Arquitectura de software. //**
=== **//La  arquitectura desoftware es un conjunto de patrones que proporcionan un marco de referencia necesario para guiar la construcción de un software, permitiendo a los  programadores y analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Es considerada el nivel más alto en el diseño de la arquitectura de un sistema puesto que establecen la estructura, funcionamiento e interacción entre las partes del software.//** ===

**//Características //**
=== **//La arquitectura de software forma la columna vertebral para construir un sistema de software, es en gran medida responsable de permitir o no ciertos atributos de calidad del sistema entre los que se destacan la confiabilidad y el rendimiento del software. Además es un modelo abstracto reutilizable que puede transferirse de un sistema a otro y que representa un medio de comunicación y discusión entre participantes del proyecto, permitiendo así la interacción e intercambio entre los desarrolladores con el objetivo final de establecer el intercambio de conocimientos y puntos de vista entre ellos. //** ===

**//Modelos estructurales //**
=== **//Son similares a la vista estructural, pero su énfasis primario radica en la (usualmente una sola) estructura coherente del sistema completo, en vez de concentrarse en su composición. Los modelos de frameworka menudo se refieren a dominios o clases de problemas específicos. El trabajo que ejemplifica esta variante incluye arquitecturas de software específicas de dominios, como  CORBA , o modelos basados en CORBA, o  reporsitorios de componentes específicos, como  PRISM . //** ===

**//Modelos dinámicos //**
=== **//<span style="font-family: Arial,sans-serif;">Enfatizan la cualidad conductual de los sistemas, “Dinámico” puede referirse a los cambios en la configuración del sistema, o a la dinámica involucrada en el progreso de lacomputación, tales como valores cambiantes de datos. //** ===

**//<span style="color: windowtext; font-family: Arial,sans-serif; font-size: 12pt;">Modelos de proceso //**
=== **//<span style="font-family: Arial,sans-serif;">Se concentran en la construcción de la arquitectura, y en los pasos o procesos involucrados en esa construcción. En esta perspectiva, la arquitectura es el resultado de seguir un argumento (script) de proceso. Esta vista se ejemplifica con el actual trabajo sobre <span style="font-family: Arial,sans-serif;">programación <span style="font-family: Arial,sans-serif;">de procesos para derivar arquitecturas. //** ===

**//<span style="font-family: Arial,sans-serif;">Cliente-Servidor //**
=== **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">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". //** === === **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">En términos de arquitectura los distintos aspectos que caracterizan a una aplicación (proceso, almacenamiento, control y operaciones de entrada y salida de datos) en el sentido más amplio, están situados en más de un computador [|,] los cuales se encuentran interconectados mediante una red de comunicaciones. //** ===

**//<span style="font-family: Arial,sans-serif; font-size: 12pt;">IBM pionero del modelo Cliente-Servidor //**
=== **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">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. //** ===

**//<span style="font-family: Arial,sans-serif;">• Captura y validación de los datos de entrada. //**
=== **//<span style="font-family: Arial,sans-serif;">• Generación de consultas e informes sobre las <span class="apple-converted-space" style="font-family: Arial,sans-serif;"> base de datos <span style="font-family: Arial,sans-serif;">. //** ===

**//<span style="font-family: Arial,sans-serif;">Arquitectura Cliente-Servidor //**
=== **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">Es un modelo para el desarrollo de sistemas de información en el que las transacciones se dividen en procesos independientes que cooperan entre sí para intercambiar información, servicios o recursos. Se denomina cliente al proceso que inicia el diálogo o solicita los recursos y servidor al proceso que responde a las solicitudes. En este modelo las aplicaciones se dividen de forma que el servidor contiene la parte que debe ser compartida por varios usuarios, y en el cliente permanece sólo lo particular de cada usuario. //** ===

**//<span style="font-family: Arial,sans-serif; font-size: 12pt;">Características Cliente-Servidor //**
=== **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">• 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 base de datos, impresoras, módems, etc. //** === === **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">• 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. //** === === **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">• 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. //** ===

**//<span style="font-family: Arial,sans-serif; font-size: 12pt;">• Existe una clara distinción de funciones basada en el concepto de "servicio", que se establece entre clientes y servidores. //**
=== **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">• 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. //** === === **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">• 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. //** === === **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">• 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. //** === === **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">• 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. //** === === **//<span style="font-family: Arial,sans-serif; font-size: 12pt;">• 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. //** ===


 * Grupo Nº 9**
 * **Cédula Identidad** ||= **Nombre y Apellido** ||
 * 18.504.517 || Alirio Jaure ||
 * 19.619.499 || Jesus Briceño ||
 * 18.558.607 || Nestor Carrillo ||
 * 17.377.380. || Meneses Alejandro ||

<span style="color: #065bb1; display: block; font-family: 'Trebuchet MS',Helvetica,sans-serif; font-size: 31px; line-height: 46px; text-align: center;">Lenguaje ACME

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Es una herramienta capaz de soportar el mapeo de especificaciones arquitectónicas entre diferentes **ADL**, o en otras palabras, como un lenguaje de intercambio de arquitectura. Es considerado como un ADL de 2da generación.

= **Características que lo definen como ADL** = ** __ Tipos __ **


 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">La estructura: Organización de un sistema en sus partes constituyentes.
 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Las propiedades de interés: información que permite razonar sobre el comportamiento local o global, tanto funcional como no funcional
 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Las restricciones: lineamientos sobre la posibilidad del cambio en el tiempo,
 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Los tipos y estilos.

**__ Elementos __**


 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Componentes
 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Conectores
 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Sistemas
 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Puertos
 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Roles
 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Representaciones
 * <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Mapas de representación.

= = ** Lenguaje de programación y código **

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">**Su código se encuentra disponible en los lenguajes de programación C++ y Java y puede ser invocada por lo tanto desde cualquier lenguaje la plataforma clásica de Microsoft o desde el Framework de .NET. En el caso del lenguaje Java requiere la Máquina Virtual de Java que permite la ejecución de programas Java sobre todas las plataformas soportadas.**



= Entornos gráficos  =

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">**Acme soporta una variedad de front-ends de carácter gráfico, que se componen por: AcmeStudio que es un entorno gráfico basado en Windows y Linux, susceptible de ser configurado para soportar visualizaciones específicas de estilos e invocación de herramientas auxiliares , y un ambiente diseñado en ISI que usa el editor de PowerPoint para manipulación gráfica acoplado con analizadores que reaccionan a cambios de una representación de Modelo de Objetos de Componentes Distribuidos( DCOM ) de los elementos arquitectónicos y de sus propiedades asociadas.**

<span style="color: #282560; font-family: Verdana,sans-serif; font-size: 18pt;">Acme Team
<span style="font-family: Verdana,sans-serif; font-size: 10pt;">El proyecto ACME se ha beneficiado de las aportaciones y comentarios de muchos miembros de la comunidad de software de diseño de la arquitectura. El diseño del lenguaje principio y el trabajo de desarrollo de herramientas de Acme ha llevado a cabo por el <span style="color: windowtext; font-family: Verdana,sans-serif; font-size: 10pt; text-decoration: none;">[|PODER] <span style="font-family: Verdana,sans-serif; font-size: 10pt;"> grupo de la Universidad Carnegie Mellon, y WileDave en la información de la USC Instituto de Ciencias. Este proceso de desarrollo ha incluido una aportación significativa y frecuente y los comentarios de muchos miembros del proyecto DARPA Copreson. <span style="background-color: #e6ecf9; font-family: Arial,sans-serif;">Acme es una simple arquitectura genérica de software lenguaje de descripción (ADL) que se puede utilizar como un formato de intercambio común para herramientas de diseño de arquitectura y / o como una base para desarrollar el nuevo diseño arquitectónico y las herramientas de análisis. <span style="font-family: Arial,sans-serif;"> Este sitio proporciona una introducción a Acme, junto con una colección de software Acmé útiles e información técnica. <span style="font-family: Arial,sans-serif;">El proyecto comenzó a principios de Acme 1995 con el objetivo de proporcionar un lenguaje común que podría ser utilizado para apoyar el intercambio de descripciones arquitectónicas entre una variedad de herramientas de diseño arquitectónico. A pesar de que sigue siendo útil como lengua de intercambio de arquitectura, desde el inicio del proyecto el lenguaje Acme y su conjunto de herramientas de apoyo se han convertido en una base sólida sobre la cual puede ser nuevo diseño de arquitectura de software y herramientas de análisis construido sin la necesidad de reconstruir la infraestructura estándar. En la actualidad, el lenguaje de Acme y la Biblioteca desarrolladores de la herramienta de Acme (AcmeLib) proporcionan una infraestructura genérica y extensible para describir, lo que representa, lo que genera, y el análisis de las descripciones de arquitectura de software. <span style="font-family: Arial,sans-serif;">El lenguaje de Acme y de herramientas proporcionan tres funciones fundamentales:
 * <span style="color: #282560; font-family: Arial,sans-serif;">Información general **




 * **<span style="font-family: Arial,sans-serif;">Arquitectura de intercambio. **<span style="font-family: Arial,sans-serif;"> Al proporcionar un formato de intercambio genérico de los diseños arquitectónicos, Acme permite a los desarrolladores de herramientas de arquitectura para integrar fácilmente sus herramientas con otras herramientas complementarias. Del mismo modo, los arquitectos que utilizan Acme compatibles con las herramientas tienen una gama más amplia de análisis y herramientas de diseño disponibles a su disposición que los arquitectos encerrados en una sola AVD.
 * **<span style="font-family: Arial,sans-serif;">Fundación extensible para el diseño de la nueva arquitectura y herramientas de análisis. **<span style="font-family: Arial,sans-serif;"> Muchos, si no la mayoría, el diseño arquitectónico y las herramientas de análisis requiere una representación para describir, almacenar y manipular los diseños arquitectónicos. Desafortunadamente, el desarrollo de buenas representaciones arquitectónicas es difícil, consume tiempo, y costoso. Acme puede mitigar el costo y la dificultad de la construcción de herramientas de arquitectura, proporcionando un lenguaje y un conjunto de herramientas para usar como una base para herramientas de construcción.
 * <span style="font-family: Arial,sans-serif;">Acme ofrece una base sólida, ampliable y de infraestructura que permite a los constructores de la herramienta para evitar la reconstrucción de la infraestructura sin necesidad de herramientas estándar. Además, el origen de Acme como un lenguaje de intercambio genérico permite herramientas desarrolladas utilizando Acme como su representación arquitectónica nativa para ser compatible con una amplia variedad de lenguajes existentes arquitectura descripción y conjuntos de herramientas con un esfuerzo desarrollador poco o ningún adicional.
 * **<span style="font-family: Arial,sans-serif;">Descripción Arquitectura. **
 * <span style="font-family: Arial,sans-serif;"> Acme se ha convertido en un lenguaje de descripción de la arquitectura útiles por derecho propio. Proporciona un conjunto sencillo de construcciones del lenguaje para describir la estructura arquitectónica, tipos y estilos arquitectónicos, y las propiedades anotadas de los elementos arquitectónicos.Aunque no es apropiado para todas las aplicaciones, la arquitectura Acme lenguaje de descripción proporciona una buena introducción al modelado de arquitectura, y una manera fácil de describir arquitecturas de software relativamente simples.


 * ¿Qué es arquitectura? [[image:Salinas_fig2.jpg]]**

Es la representación que capacita al ingeniero del software para: • Analizar la efectividad del diseño para la consecución de los requisitos fijados. • Considerar las alternativas arquitectónicas en una etapa en la cual hacer cambios en el diseño es relativamente fácil. • Reducir los riesgos asociados a la construcción del software. En el diseño arquitectónico, un componente del software puede ser tan simple como un módulo de programa, pero también puede ser algo complicado como incluir base de datos y software intermedio (middleware) que permiten la configuración de una red de clientes y servidores. El diseño de la arquitectura del software tiene en cuenta 2 niveles de la pirámide, el diseño de datos y el diseño arquitectónico. El diseño de datos nos facilita la representación de los componentes de datos de la arquitectura. El diseño arquitectónico se centra en la representación de la estructura de los componentes del software, sus propiedades e interacciones.


 * ¿Por qué es importante la arquitectura?**

• Facilitan la comunicación entre todas las partes interesadas en el desarrollo de un sistema basado en computadora. • Destaca decisiones tempranas de diseño que tendrán un profundo impacto en todo el trabajo de ingeniería del software. • Constituye un modelo relativamente pequeño e intelectualmente comprensible de cómo está estructurado el sistema y de cómo trabajan juntos sus componentes.


 * DISEÑO DE DATOS**

El diseño de datos también llamado arquitectura de datos, crea un modelo de datos y/o información que se representa con un nivel de abstracción (visión de datos cliente/usuario). Este modelo de datos, es refinado en progresivas representaciones específicas de la implementación, que pueden ser procesadas por un sistema basado en computadora. Al nivel de los componentes del programa, el diseño de las estructuras de datos y de los algoritmos asociados requeridos para su manipulación, son la parte esencial en la creación de aplicaciones de alta calidad. Al nivel de aplicación, la traducción de un modelo de datos en una base de datos es el punto clave para alcanzar los objetivos de negocio del sistema. Al nivel de negocios, el conjunto de información almacenada en las diferentes bases de datos y reorganiza en el almacén de datos facilita la minería de datos o el descubrimiento de conocimiento que puede influir en el próximo éxito del negocio. n diseño del software y un lenguaje de programación debería soportar la especificación y realización de los tipos abstractos de datos.


 * ESTILOS ARQUITECTONICOS**

Cada estilo describe una categoría del sistema que contiene: un conjunto de componentes, que realiza una función requerida por el sistema, un conjunto de conectores que posibilitan la comunicación, la coordinación y la cooperación entre los componentes; restricciones que definen como se puede integrar los componentes que forman el sistema; y modelos semánticos que permiten al diseñador entender las propiedades globales de un sistema para analizar las propiedades conocidas de sus partes constituyentes. En el centro de esta arquitectura se encuentra un almacén al que otros componentes acceden con frecuencia para actualizar, añadir, borrar o modificar los datos del almacén. El software del cliente accede a l almacén central, es decir accede a lo datos independientes de cualquier cambio en los datos o de las acciones de de cliente.
 * Arquitecturas centradas a datos**


 * Arquitecturas de flujo de datos**

Se aplica cuando los datos de entrada son transformados a través de una serie de componentes computacionales o manipulativos en los datos de salida. Un patrón tubería y filtro tiene un grupo de componentes llamados filtros, conectados por tuberías que transmiten datos de un componente al siguiente. El filtro está diseñado para recibir entrada de datos de una forma y producir la salida de datos de una forma específica. Si el flujo de datos degenera en una simple línea de transformadores se le llama Secuencial por Lotes.


 * Arquitecturas de llamada y retorno**

Permite al diseñador del software construir una estructura de programa relativamente fácil de modificar y ajustar a escala. Existen 2 subestilos: • Arquitectura de programa principal: Clasifica de programación descompone las funciones en una jerarquía de control donde un programa principal llama a un número de componentes del programa, los cuales pueden también llamar a otros componentes. • Arquitectura de llamada de procedimiento remoto: Los componentes de una arquitectura de programa principal/subprograma, están distribuidos entre varias computadoras en una red.


 * Arquitecturas orientadas a objetos**

Los componentes de un sistema encapsulan los datos y las operaciones que se deben realizar para manipular los datos. La comunicación y la coordinación entre componentes se consiguen a través del paso de mensaje.


 * Arquitecturas Estratificadas**

Se crean diferentes capas y cada una realiza operaciones que progresivamente se aproximan mas al cuadro de instrucciones de la maquina. En la capa externa, los componentes sirven a las operaciones de interfaz de usuario. En la capa interna, los componentes realizan operaciones de interfaz del sistema. Las capas intermedias proporcionan servicios de utilidad y funciones de software de aplicaciones. .



una aplicación dedicada a ser animación infográfíca tiene una eficiencia moderada en un ordenador de características Pentium III, a lo que un usuario desea hacer una migración de este software a un ordenador de más reciente generación, esperando que esta aplicación tenga un mejor desempeño en cuanto a cada una de sus funciones.

La sorpresa que suelen llevarse muchos de estos usuarios está en que dicha aplicación no tiene una velocidad de procesamiento más óptima que aquella que se observaba en la plataforma Pentium III que habíamos mencionado, pues aquí interviene lo que se llama la arquitectura del software.

Modelo Cliente-Servidor


 * El Cliente-Servidor es un sistema distribuido entre múltiples Procesadores donde hay clientes que solicitan servicios y [|servidores] que los proporcionan. La Tecnología Cliente/Servidor, es un modelo que implica productos y servicios enmarcados en el uso de la Tecnología de punta, y que permite la distribución de la información en forma ágil y eficaz a las diversas áreas de una organización (empresa o institución pública o privada), así como también fuera de ella. **

= Historia  =

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;">Existen diversos puntos de vista sobre la manera en que debería efectuarse el procesamiento de datos. En este contexto, es necesario establecer una infraestructura de Procesamiento de información, que cuente con los elementos requeridos para proveer información adecuada, exacta y oportuna en la toma de decisiones y para proporcionar un mejor servicio a los clientes y ciudadanos. El modelo Cliente/Servidor reúne las características necesarias para proveer esta infraestructura, independientemente del tamaño y complejidad de las operaciones de las organizaciones públicas o privadas y, consecuentemente desempeña un papel importante en este proceso de evolución. Cliente/Servidor ha evolucionado de época: <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> • 1ª ÉPOCA: <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – [|LAN]. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – LAN con MAINFRAMES. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Comunicaciones homogéneas (LU, SNA, APPC). <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> • 2ª ÉPOCA: <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Herramientas de desarrollo C/S. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Proveedores DBMS con C/S. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Downsizing: migración a PCs. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – S.O. De red con servidores de servicios <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> • 3ª ÉPOCA: ACTUAL: <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – PWS: Estaciones de trabajo programables gráficamente. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – GUI: Interfaz gráfico de usuario. Alta resolución. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Nuevas tecnologías: Ratón, lápiz óptico, scanner, [|multimedia]. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Tecnología de componentes: DDE y OLE. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Conectividad de BDs: ODBC, JDBC <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Objetos Distribuidos: CORBA, COM, COM+, DCOM <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – [|Internet]: [|HTML], CGI, Applet, ActiveX, [|JAVA], [|JavaScript] <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Arquitecturas C/S de 2 y 3 niveles. <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> – Middleware. Cliente <span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> Es el que pide servicio de [|Internet] o [|Intranet]. Una aplicación consta de una parte de servidor y una de cliente, que se pueden ejecutar en el mismo o en diferentes sistemas. Los usuarios invocan la parte cliente de la aplicación, que construye una solicitud para ese servicio y se la envía al [|servidor de] la aplicación que usa [|TCP/IP] como transporte. ==== Las funciones que lleva a cabo el proceso cliente se resumen en los siguientes Puntos ====

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> • Administrar la interfaz de usuario.

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> • Interactuar con el usuario.

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> • Procesar la lógica de la aplicación y hacer validaciones locales.

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> • Generar requerimientos de [|bases de datos].

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> • Recibir resultados del [|servidor].

<span style="background-color: #ffffff; display: block; font-family: sans-serif; font-size: 12px; text-align: justify;"> • Formatear resultados.

Servidor
Es una aplicación que ofrece un servicio a usuarios de Internet, el [|servidor] es un programa que recibe una solicitud, realiza el servicio requerido y devuelve los resultados en forma de una respuesta. Generalmente un servidor puede tratar múltiples peticiones (múltiples clientes) al mismo tiempo.==== **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]

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] ".

Principales definiciones
Entre las principales definiciones tiene: **1. Desde un punto de vista conceptual:** 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. Los distintos aspectos que caracterizan a una aplicación (proceso, almacenamiento, control y operaciones de entrada y salida de datos) en el sentido más amplio, están situados en más de un [|computador,] los cuales se encuentran interconectados mediante una red de comunicaciones.
 * 2. En términos de arquitectura:**

IBM define al modelo Cliente-Servidor
<span style="background-color: transparent; color: #003366; display: block; text-align: left; text-decoration: none;">

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].

Funciones de los Clientes-Servidor
• Manejo de la interfaz de usuario.

• Captura y validación de los datos de entrada.

• Generación de consultas e informes sobre las [|bases de datos].

• Por su parte los servidores realizan, entre otras, las siguientes funciones:

• Gestión de periféricos compartidos.

• Control de accesos concurrentes a bases de datos compartidas.

• Enlaces de comunicaciones con otras redes de área local o extensa.

¿Por qué Cliente-Servidor?
Muchos clientes ven interesante al esquema Cliente-Servidor por razones que están más allá de los méritos técnicos. Esto es ciertamente válido, pero tenga cuidado con las trampas en las que pueda caer si la solución Cliente-Servidor no fue realizada por una razón técnica primaria. Hay tres razones primordiales a considerar en Cliente-Servidor:• **Tamaño de Datos:** Visual FoxPro, al igual que todas las variantes de xBase anteriores a él, tenia la limitación de 2 GB en cualquiera de sus tablas o archivos. Esta limitación tiene que ver con la manera en que los bloqueos son realizados en los registros individuales y, mientras que es ciertamente factible que este límite sea alcanzado, esto es diferente a cómo normalmente lo hace [|Microsoft]. A pesar de que hay muchos workarrounds para estos límites, estos incrementan los retos con Visual FoxPro en cuanto las tablas se agranden – tiempos prolongados para reindexar en caso de corrupción, por ejemplo. En resumen, si el tamaño se vuelve un factor mayor, considere si el uso de Cliente-Servidor es adecuado.

•**Seguridad:** Fundamentalmente, todos los accesos a las tablas FoxPro van a través de la red del [|sistema operativo], así que los usuarios necesitan tener acceso a los directorios conteniendo las tablas VFP. Cualquiera que pueda tener acceso a las tablas puede, eventualmente, imaginarse como leerlos. También es simple usar un driver ODBC y [|Excel], o si ellos necesitan usar un editor hexadecimal para romper su esquema de encriptación. Muchos sistemas Cliente-Servidor pueden eliminar esta amenaza en conjunto con la restricción de acceso de los clientes a la interface del [|servidor], y no necesariamente a todos los datos. Si esta tratando con material altamente confidencial, Cliente-Servidor tiene sentido por razones de seguridad.

•**Bajo Ancho de Banda:** Visual FoxPro es el producto para manejo bases de datos escritorio y basado en [|LAN] mas rápido y con mejor mejor desempeño disponible en el mercado hoy en día. Pero VFP obtiene su desempeño fenomenal tomando ventaja del ambiente LAN, pre-obteniendo información de columna, haciendo localmente algún tipo de caching de encabezados de tablas y contenidos de índices. Mientras que el proceso de adquirir esta información es casi imperceptible en un ambiente de red, haciendo lenta la apertura inicial de tablas en milisegundos, esto puede ser un retardo substancial si se está en un “cable delgado” (por ejemplo conexiones Dial-Up, WAN o [|Internet] saturado) entre el cliente y los datos. En estas situaciones, poner los datos, la responsabilidad de hacer las consultas y procesamiento de los datos en el [|servidor] minizará los costos de comunicación y mejorará la velocidad.

El modelo Cliente-Servidor
La tecnología denominada Cliente -Servidor es utilizada por todas las aplicaciones de [|Internet] / [|Intranet] .Un cliente funciona en su ordenador local, se comunica con el servidor remoto, y pide a éste información.El [|servidor] envía la información solicitada.Un único servidor típicamente sirve a una multitud de clientes, ahorrando a cada uno de ellos el problema de tener la información instalada y almacenada localmente.==== **Tipos de sistemas de los Cliente-Servidor dependiendo de las aplicaciones que el servidor pone a disposición de los clientes.** ====

• **Servidores de Impresión**, mediante el cual los usuarios comparten impresoras.

• **Servidores de Archivos**, con el cual los clientes comparten discos duros.

•**Servidores de Bases de Datos**, donde existe una única [|base de datos].

• **Servidores de Lotus Notes**, que permite el trabajo simultáneo de distintos clientes con los mismos datos, documentos o modelos. • [|**Servidores Web**], también utilizan la tecnología Cliente- Servidor, aunque añaden aspectos nuevos y propios a la misma.

<span style="background-color: transparent; color: #003366; display: block; text-align: left; text-decoration: none;">

Figura: El modelo de aplicación cliente/servidor

== Arquitectura Cliente-Servidor == La [|Arquitectura_Cliente_Servidor] es un modelo para el desarrollo de sistemas de información en el que las transacciones se dividen en procesos independientes que cooperan entre sí para intercambiar información, servicios o recursos. Se denomina cliente al proceso que inicia el diálogo o solicita los recursos y [|servidor] al proceso que responde a las solicitudes. En este modelo las aplicaciones se dividen de forma que el servidor contiene la parte que debe ser compartida por varios usuarios, y en el cliente permanece sólo lo particular de cada usuario. <span style="background-color: transparent; color: #003366; display: block; text-align: left; text-decoration: none;">

Características 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].

Fuentes

 * http://sipan.inictel.gob.pe
 * http://www.csae.map.es
 * @http://neo.lcc.uma.es/evirtual/cdd/tutorial/aplicacion/cliente-servidor.html
 * @http://www.inei.gob.pe/
 * @http://www.portalfox.com/