jueves, 9 de diciembre de 2010

Reingenieira

DEFINICIÓN FORMAL DE REINGENIERÍA 
Estamos entrando en el nuevo siglo, con compañías que funcionaron en el XX con diseños administrativos del siglo XIX. Necesitamos algo enteramente distinto. Ante un nuevo contexto, surgen nuevas modalidades de administración, entre ellas está la reingeniería, fundamentada en la premisa de que no son los productos, sino los procesos que los crean los que llevan a las empresas al éxito a la larga. Los buenos productos no hacen ganadores; los ganadores hacen buenos productos. Lo que tienen que hacer las compañías es organizarse en torno al proceso. 

Las operaciones fragmentadas situadas en departamentos especializados, hacen que nadie esté en situación de darse cuenta de un cambio significativo, o si se da cuenta, no puede hacer nada al respecto, por que sale de su radio de acción, de su jurisdicción o de su responsabilidad. Esto es consecuencia de un concepto equivocado de administración organizacional. Un proceso de negocios es un conjunto de actividades que reciben uno o más insumos para crear un producto de valor para el cliente.

Reingeniería significa volver a empezar arrancando de nuevo; reingeniería no es hacer más con menos, es con menos dar más al cliente. El objetivo es hacer lo que ya estamos haciendo, pero hacerlo mejor, trabajar más inteligentemente. Es rediseñar los procesos de manera que estos no estén fragmentados. Entonces la compañía se las podrá arreglar sin burocracias e ineficiencias.

Propiamente hablando: "reingeniería es la revisión fundamental y el rediseño radical de procesos para alcanzar mejoras espectaculares en medidas críticas y actuales de rendimiento, tales como costos, calidad, servicio y rapidez". Detrás de la palabra reingeniería, existe un nuevo modelo de negocios y un conjunto correspondiente de técnicas que los ejecutivos y los gerentes tendrán que emplear para reinventar sus compañías.

Bajo el pensamiento tradicional de la administración muchas de las tareas que realizaban los empleados nada tenía que ver con satisfacer las necesidades de los clientes. Muchas de esas tareas se ejecutaban para satisfacer exigencias internas de la propia organización de la empresa. En el ambiente de hoy nada es constante ni previsible, ni crecimiento del mercado, ni demanda de los clientes, ni ciclo de vida de los productos. Tres fuerzas, por separado y en combinación, están impulsando a las compañías a penetrar cada vez más profundamente en un territorio que para la mayoría de los ejecutivos y administradores es desconocido. Estas fuerzas son: clientes, competencia y cambio. 
  • Clientes: Los clientes asumen el mando, ya no tiene vigencia el concepto de él cliente, ahora es este cliente, debido a que el mercado masivo hoy está dividido en segmentos, algunos tan pequeños como un solo cliente. Los clientes ya no se conforman con lo que encuentran, ya que actualmente tienen múltiples opciones para satisfacer sus necesidades. Esto es igualmente aplicable en la relación cliente-proveedor entre las propias empresas, y los reclamos muchas veces se expresan en: "O lo hace usted como yo quiero o lo hago yo mismo".
    Los clientes se han colocado en posición ventajosa, en parte por el acceso a mayor información. Para las empresas que crecieron con la mentalidad de mercado masivo, la realidad es más difícil de aceptar acerca de los clientes, en cuanto a que cada uno cuenta. Si se pierde un cliente hoy, no se aparece otro para reemplazarlo. Antes era sencilla: la compañía que lograba salir al mercado con un producto o servicio aceptable y al mejor precio realizaba una venta. Ahora hay mucho mas competencia y de clases muy distintas. 

    La globalización trae consigo la caída de las barreras comerciales y ninguna compañía tiene su territorio protegido de la competencia extranjera. Empresas americanas, japonesas, europeas tienen experiencia en mercados fuertemente competitivos y están muy ansiosas de ganar una porción de nuestro mercado. Ser grande ya no es ser invulnerable, y todas las compañías existentes tienen que tener la agudeza para descubrir las nuevas compañías del mercado. 
     
  • Competencia 
  • El Cambio: El cambio se vuelve una constante, la naturaleza del cambio también es diferente. La rapidez del cambio tecnológico también promueve la innovación Los ciclos de vida de los productos han pasado de años a meses. Ha disminuido el tiempo disponible para desarrollar nuevos productos e introducirlos. Hoy las empresas tienen que moverse más rápidamente, o pronto quedarán totalmente paralizadas. Los ejecutivos creen que sus compañías están equipadas con radares eficientes para detectar el cambio, pero la mayor parte de ellas no lo esta, lo que detectan son lo cambio que ellas mismas esperan. Los cambios que pueden hacer fracasar a una compañía son lo que ocurren fuera de sus expectativas.

     RECONSTRUCCIÓN DE LOS PROCESOS

    La característica más común y básica de los procesos rediseñados es que desaparece el trabajo en serie.
    Es decir, muchos oficios o tareas que antes eran distintos se integran y comprimen en uno solo. Sin
    embargo, no siempre es posible comprimir todos los pasos de un proceso en un solo oficio ejecutado por
    una sola persona. En otros casos, puede no resultar práctico enseñarle a una sola persona todas las
    destrezas que necesitaría para ejecutar la totalidad del proceso.

    Los beneficios de los procesos integrados eliminan pases laterales, lo que significa acabar con errores,
    demoras y repeticiones. Asimismo, reducen costos indirectos de administración dado que los empleados
    encargados del proceso asumen la responsabilidad de ver que los requisitos del cliente se satisfagan a
    tiempo y sin defectos. Adicionalmente, la compañía estimula a estos empleados para que encuentren
    formas innovadoras y creativas de reducir continuamente el tiempo del ciclo y los costos, y producir al
    mismo tiempo un producto o servicio libre de defectos. Otro beneficio es un mejor control, pues como
    los procesos integrados necesitan menos personas, se facilita la asignación de responsabilidad y el
    seguimiento del desempeño.

    En lugar de separar la toma de decisiones del trabajo real, la toma de decisiones se convierte en parte del
    trabajo. Ello implica comprimir verticalmente la organización, de manera que los trabajadores ya no
    tengan que acudir al nivel jerárquico superior y tomen sus propias decisiones. 

    Entre los beneficios de comprimir el trabajo tanto vertical como horizontalmente se cuentan: Menos
    demoras, costos indirectos más bajos, mejor reacción de la clientela y más facultades para los
    trabajadores.

    Los procesos rediseñados están libres de la tiranía de secuencias rectilíneas: se puede explotar la
    ejecución simultánea de tareas por sobre secuencias artificiales impuestas por la linealidad en los
    procesos. En los procesos rediseñados, el trabajo es secuenciado en función de lo que realmente es
    necesario hacerse antes o después.

    La "deslinearización" de los procesos los acelera en dos formas: Primera: Muchas tareas se hacen
    simultáneamente. Segunda: Reduciendo el tiempo que transcurre entre los primeros pasos y los últimos
    pasos de un proceso se reduce el esquema de cambios mayores que podrían volver obsoleto el trabajo
    anterior o hacer el trabajo posterior incompatible con el anterior. Las organizaciones logran con ello
    menos repeticiones de trabajo, que es otra fuente de demoras.

    Esto se conoce como el fin de la estandarización. Significa terminar con los tradicionales procesos únicos
    para todas las situaciones, los cuales son generalmente muy complejos, pues tienen que incorporar
    procedimientos especiales y excepciones para tomar en cuenta una gran variedad de situaciones. En
    cambio, un proceso de múltiples versiones es claro y sencillo porque cada versión sólo necesita aplicarse
    a los casos para los cuales es apropiada. No hay casos especiales ni excepciones.

    Gran parte del trabajo que se hace en las empresas, consiste en integrar partes del trabajo relacionadas
    entre sí y realizadas por unidades independientes. El cliente de un proceso puede ejecutar parte del
    proceso o todo el proceso, a fin de eliminar los pases laterales y los costos indirectos.

    Después de la reingeniería, la correspondencia entre los procesos y organizaciones puede parecer muy
    distinta a lo que era antes, al reubicarse el trabajo en unidades organizacionales, para mejorar el
    desempeño global del proceso.

    Los procesos rediseñados hacen uso de controles solamente hasta donde se justifican económicamente.
    Los procesos tradicionales están repletos de pasos de verificación y control que no agregan valor, pero
    que se incluyen para asegurar que nadie abuse del proceso.

    Los procesos rediseñados muestran un enfoque más equilibrado. En lugar de verificar estrictamente el
    trabajo a medida que se realiza, se tienen controles globales o diferidos. Estos sistemas están diseñados
    para tolerar abusos moderados o limitados, demorando el punto en el que el abuso se detecta o
    examinando patrones colectivos en lugar de casos individuales. Sin embargo, los sistemas rediseñados de 
    control compensan con creces cualquier posible aumento de abusos con la dramática disminución de
    costos y otras trabas relacionadas con el control mismo.

    TIPOS DE CAMBIOS QUE OCURREN AL REDISEÑAR LOS PROCESOS
    Para llevar a cabo la reingeniería de procesos se han identificado los siguientes roles:
    Líder.
    Dueño o responsable del proceso.
    Equipo de reingeniería.
    Comité directivo.
    "Zar" de reingeniería.
      1. El Líde: Es un alto ejecutivo que respalda, autoriza y motiva el esfuerzo total de reingeniería. Debe tener la autoridad suficiente para que persuada a la gente de aceptar los cambios radicales que implica la reingeniería. Sin este líder el proceso de reingeniería queda en buenos propósitos sin llegar a culminarse como se espera.

        Debe mantener el objetivo final del proceso, necesita la visión para reinventar la empresa bajo nuevos esquemas competitivos, mantiene comunicados a empleados y directivos de los propósitos a lograr, así como los avances logrados.

        Designa a quienes serán los dueños de los procesos y asigna la responsabilidad de los avances en el rendimiento.

        Gerente de área responsable de un proceso específico y del esfuerzo de ingeniería correspondiente.

        En las empresas tradicionales no se piensa en función de procesos, se departamentalizan las funciones, con lo que se ponen fronteras organizacionales a los procesos.

        Los procesos deben de identificarse lo más pronto posible, asignar un líder y este a los dueños de los procesos.

        Es importante que los dueños de procesos tengan aceptación de los compañeros con los que van a trabajar, aceptar los procesos de cambio que trae la reingeniería, y su función principal es vigilar y motivar la realización de la reingeniería.

        El oficio de los dueños no termina cuándo se completa el proyecto de reingeniería, cuándo se tiene el compromiso de estar orientado a procesos, cada proceso sigue ocupando de un dueño que se responsabilice de su ejecución. 

        2. Dueño del proceso:  Formado por un grupo de individuos dedicados a rediseñar un proceso específico, con capacidad de diagnosticar el proceso actual, supervisar su reingeniería y su ejecución.

        Es el encargado de realizar el trabajo pesado de producir ideas, planes y convertirlos en realidades.
        Cabe mencionar que un equipo solo puede trabajar con un proceso a la vez, de tal manera que se debe formar un equipo por cada proceso que se está trabajando.

        El equipo debe tener entre 5 y 10 integrantes, máximo, de los cuales una parte debe de conocer el proceso a fondo, pero por poco tiempo para que no lo acepten como algo normal, y otra parte debe ser formada con personal ajeno al proceso, pudiendo ser gente de fuera de la empresa, que lo pueda cuestionar y proponer alternativas. 

        3. Equipo de reingeniería.

        Cuerpo formulador de políticas, compuesto de altos administradores que desarrollan la estrategia global de la organización y supervisan su progreso, normalmente incluye a los dueños de proceso.

        Puede estar o no presente en el proceso, da orden de prioridad, opinan sobre cuestiones que van mas allá de los procesos y proyectos en particular. 

        4. Comité directivo.
        5. "Zar" de la reingeniería: Es el responsable de desarrollar técnicas e instrumentos de reingeniería y de lograr sinergia entre los distintos proyectos en la empresa. 

        Se encarga de la administración directa coordinando todas las actividades de reingeniería que se encuentren en marcha; apoya y capacita a los dueños de proceso y equipos de reingeniería.

        proceso de reingeniería de software 
    •        Análisis de inventarios: Las organizaciones de software deberían tener un inventario de todas sus aplicaciones. Al ordenar esta información de acuerdo con la importancia para el negocio, antigüedad, facilidad actual para el mantenimiento y otros criterios localmente importantes, aparecen los candidatos para reingeniería. Entonces se pueden asignar los recursos a las aplicaciones candidatas para el trabajo de reingeniería.
    •       Economía: La reingeniería demanda de recursos que pueden utilizarse para otros propósitos del negocio. En consecuencia, antes de que una organización intente someter a reingeniería una aplicación existente, debe realizar un análisis costo beneficio.
    •      Procesos de negocio: Conjunto de tareas lógicamente relacionadas que se ejecutan para lograr resultados de negocios especifico. Dentro del proceso de negocio, la gente, el equipo, los recursos materiales y los procedimientos del negocio, se combinan para producir un resultado específico.
    •        Ingeniería directa: Reconstruye un programa empleando modernas prácticas de ingeniería de software y la información aprendida en la ingeniería inversa.
     A partir de los productos de ingeniería inversa se construye el programa mediante técnicas de ingeniería directa. 
    * Reespecificación: Se reespecifican las especificaciones recuperadas del sistema heredado para incluir los nuevos requisito, modificar las funcionalidades existentes o añadir nuevas.

    * Rediseño: Se refinan los modelos creados en el paso anterior, definiendo la arquitectura que tendrá el sistema, obteniendo un nuevo diseño. En este paso, hay que tener ya en cuenta los requisitos no funcionales (como el lenguaje de implementación, plataforma de explotación, etc.). Una vez que tanto los requisitos funcionales como los no funcionales se han tratado, se puede comenzar la generación de código

    * Reimplementación: La generación de código puede ser llevada a cabo mediante herramientas CASE de manera automática, partiendo de los modelos desarrollados del sistema heredado. Puesta en marcha.
    •       Ingeniería inversa: Puede obtener información de diseño a partir de código fuente, pero el grado de abstracción, la completitud de la documentación, el grado en que las herramientas y un analista humano trabajen en conjunto, y la direccionalidad de proceso son enormemente variables. El proceso de ingeniería inversa debe ser capaz de derivar representaciones de diseño de procedimiento (un grado de abstracción bajo), información de estructura de programa y datos (un grado de abstracción más elevado), modelos de objeto, modelos de flujo de datos o de control (un grado de abstracción relativamente alto) y clases UML, diagramas de estado y despliegue (un grado alto de abstracción) .Muchos sistemas tienen el código fuente como la única representación fiable. Esto es más común en sistemas muy antiguos que han tenido muchos cambios durante su ciclo de vida.
    Estos sistemas tienen un crecimiento substancial desde su inicio, y generalmente no han tenido actualizaciones de su documentación. Aquí es donde la ingeniería inversa es la técnica recomendada para redocumentar el sistema.

    El primer documento que se necesita para navegar fácilmente en el sistema y encontrar la localización de un problema a nivel de análisis del Mantenimiento del Sistema es el esquema del programa.

    Los pasos a seguir para realizar la ingeniería inversa son: 
    a) Disección del código fuente en unidades formales.
    b) Descripción semántica de las unidades formales y declaración de unidades funcionales.
    c) Creación de esquemas de entrada/salida de unidades.
    d) Declaración y descripción semántica de circuitos lineales.
    e) Declaración y descripción semántica de aplicaciones del sistema.
    f) Creación de la anatomía del sistema.
    ·          
    •       Mantenimiento de software: La distinción entre las actividades asociadas con el desarrollo y aquellas asociadas con el mantenimiento, están basadas en la visibilidad de los problemas del sistema y la forma de transmitírselo a los usuarios, grupo de pruebas y desarrolladores. Antes del desarrollo, la visibilidad de los problemas del sistema para los usuarios y el grupo de pruebas podría ser relativamente baja, ya que la reparación de algunos problemas puede ser manejada de una manera informal por el grupo de desarrollo. Sin embargo, una vez que el sistema ha sido liberado, es necesario un proceso de seguimiento más formal. Esta formalidad es necesaria debido a que muchos grupos dentro de la organización influyen en la información transmitida de los problemas del sistema. Por ejemplo, el personal de soporte al usuario necesita saber sobre los problemas para que a su vez puedan describírselos a los usuarios. El grupo de pruebas necesita saber sobre los problemas ya que pueden ser requeridos rápidamente para generar un plan de pruebas enfocado sobre las áreas problemáticas. También los gerentes necesitan conocerlos para poder priorizar el trabajo que se está haciendo. 
     Una simple definición de mantenimiento es: el proceso de registro y seguimiento de problemas y la petición y gestión de respuestas. Un problema no necesariamente implica un defecto del software. 
           Los problemas aparecen simplemente porque el comportamiento esperado del sistema no coincide con el comportamiento actual. Esto puede ser el resultado de un defecto del software, pero puede ser fácilmente el resultado de un desconocimiento de las capacidades del sistema, o de la utilización incorrecta del flujo de trabajo, o de una documentación pobre, o de cambios en las directrices de la empresa, o de otras tantas razones. La gestión de las respuestas a los problemas del sistema cubre un millar de posibles actividades. Algunas de las posibles respuestas a los problemas del sistema podrían incluir: liberación de nuevas versiones, sesiones de planificación, identificación de la formación necesaria, actualización de la documentación, etc.

    Desde el punto de vista del grupo de desarrollo, el aspecto más significativo de un problema será si es causa de un defecto del software. La calidad de la información comunicada desde el usuario al grupo de desarrollo es crucial para poder determinarlo y para su rápida resolución.
         
    •     Estándares de mantenimiento: Existen diversos estándares de otros tantos organismos internacionales de estandarización que tienen una relación directa o indirecta con el Mantenimiento del Software:
     *Para los procesos del ciclo de vida del software: IEEE 1074 e ISO 12207.
    * Para la calidad del software y sus métricas: IEEE 1061 e ISO 9126.
     *Para el Mantenimiento del Software: IEEE 1219 e ISO/IEC 14764

    Los estándares para los procesos del ciclo de vida del software nos permiten encajar y asociar el proceso de mantenimiento con los demás procesos existentes para el software. Los estándares de calidad del software interesan en mantenimiento del software porque los factores de calidad del software (especialmente la complejidad y la mantenibilidad) inciden directamente sobre el esfuerzo de mantenimiento necesario.
         
    •       Modelo de proceso RPN: Define metas del negocio, identifica y evalúa los procesos de negocios existentes, especifica y diseña procesos revisados y elabora prototipos, los refina y particulariza dentro de un negocio. Permite la definición de las formas en las cuales las tecnologías de la información
    •      Reestructuración: Modifica el código fuente o los datos con la finalidad de adecuarlos para futuros cambios. En general, la reestructuración no modifica la arquitectura global del programa. Tiende a enfocarse sobre los detalles de diseño de los módulos individuales y en las estructuras de datos locales definidos dentro de los módulos. Si el trabajo de reestructuración se extiende más a lá de las fronteras de módulo, y abarca la arquitectura del software, la reestructuración se convierte en ingeniería avanzada.
    •        Reestructura de datos: Antes de comenzar la reestructuración de datos se debe llevar a cabo una actividad e ingeniería inversa denominada análisis de código fuente, una vez completado este se comienza con el rediseño de datos. En su forma más simple, un paso de estandarización de registro de datos clarifica las definiciones para lograr la consistencia entre los nombres de elementos de datos o formatos de registros físicos dentro de una estructuras de datos existente o formato de archivo.

    EXITO EN LA REINGENIERIA 
    ¿A qué área de la empresa se ataca primero cuando se emprende la reingeniería?
    Hay dos áreas importantes: una es la relacionada con los clientes, sobre todo en la forma de llenar los pedidos en el sector de servicio al cliente, y la otra es atacar el área que está funcionando peor, que a veces es la financiera y a veces es la manufactura. De todas formas, más de la mitad de las organizaciones empieza por la atención al cliente.

    ¿Se puede aplicar la reingeniería más de una vez?
    Por supuesto. Hay toda una nueva generación de reingeniería que está comenzando ahora. Incluso las compañías que cumplieron el proceso en los últimos cinco o diez años están comenzando otra vez. Y la fuerza detrás de esta generación es Internet. Porque aunque trabajen muy bien, las empresas no están listas para que los clientes accedan a ellas por la Red. Las compañías todavía no están en condiciones de proveer precios, disponibilidad y posibilidad de ordenar por Internet. Todo lo que se hizo hasta ahora no es suficiente y hay que empezar de nuevo.

    ¿ Cómo se traduce la tecnología a la reingeniería?
    Una compañía que no pueda cambiar su modelo de pensar acerca de la informática y otras tecnologías no se puede rediseñar. El error fundamental que muchas compañías cometen al pensar en tecnología es verla a través del lente de sus procesos existentes. Se preguntan: ¿Cómo podemos usar estas nuevas capacidades tecnológicas para realzar o dinamizar o mejorar lo que ya estamos haciendo? Por el contrario, debieran preguntarse: ¿Cómo podemos aprovechar la tecnología para hacer cosas que no estamos haciendo? La reingeniería, a diferencia de la automatización, es innovación. Es explorar las más nuevas capacidades de la tecnología para alcanzar metas enteramente nuevas. Uno de los aspectos más difíciles de la reingeniería es reconocer las nuevas capacidades no familiares de la tecnología en lugar de las familiares.

    ¿La reingeniería tiene que ver con la reducción de personal?
    La gente confunde estas dos cosas, sobre todo porque la mayoría de las reducciones no funciona, deja ir a la gente y luego toma más.

    La reingeniería no implica, ni prevee reducción de personal, no fue enunciada con ese objetivo, lamentablemente los recursos humanos son la variable más fácil de reducir y la más notoria al reconstruir y rediseñar los procesos.









    Ingenieria Web

     Introducción
    Uno de los aspectos más tenidos en cuenta, en el desarrollo de sitios web es sin duda alguna el diseño gráfico y la organización estructural del contenido. En la actualidad la web está sufriendo grandes cambios, que han obligado a expertos en el tema a utilizar herramientas y técnicas basadas en la ingeniería del software, para poder garantizar el buen funcionamiento y administración de los sitios web.

    Para garantizar el buen funcionamiento y mantenimiento de los sitios web, este debe contar con ciertos atributos y características que en conjunto forman un concepto muy importante, para alcanzar el éxito en cualquier organización, herramienta, y todo aquello que se pueda considerar como servicio. Dicho concepto es la calidad, que con atributos como, usabilidad, navegabilidad, seguridad, mantenibilidad, entre otros, hace posible por un lado la eficiencia del artefacto web y por ende la satisfacción del usuario final.

    Pero para tener artefactos de calidad, a esa misma se le debe planificar, programar y controlar, es decir la calidad no podrá ser agregada a un artefacto web o a cualquier otro producto, al final del proceso de desarrollo, si no que se deberá implementar durante todo el ciclo de vida del desarrollo. Para finalizar el resultado de un proceso de calidad, podría arrojar recomendaciones para introducir mejoras, y la decisión final podría consistir en lanzar una nueva versión del sitio web o en modificar algunos atributos ausentes o pobremente diseñados.

    Cabe destacar que la ingeniería de la web hace una diferencia entre un sitio web y un aplicativo, ya que la ingeniería de la web no se dedica a la construcción de sitios web si no a la construcción de aplicativos web, la principal característica que los distingue (aplicativos de sitios web) es que los sitios web son sitios en la web en donde se publica contenido generalmente estático o un muy bajo nivel de interactividad con el usuario, mientras que los aplicativos son lugares con alto contenido de interactividad y funcionalidades que bien podrían ser de un software convencional, el aplicativo web más sencillo seria uno que contenga formularios y subiendo de nivel encontramos los que realizas conexión con bases de datos remotas, y administradores de contenidos entre otras.

    Entonces la ingeniería de la Web es la aplicación de metodologías sistemáticas, disciplinadas y cuantificables al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad en la World Wide Web. En este sentido, la ingeniería de la Web hace referencia a las metodologías, técnicas y herramientas que se utilizan en el desarrollo de aplicaciones Web complejas y de gran dimensión en las que se apoya la evaluación, diseño, desarrollo, implementación y evolución de dichas aplicaciones.

    Definición
    La ingeniería web es la aplicación de metodologías sistemáticas, disciplinadas y cuantificables al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad en la World Wide Web. La ingeniería web se debe al crecimiento desenfrenado que está teniendo la Web está ocasionando un impacto en la sociedad y el nuevo manejo que se le está dando a la información en las diferentes áreas en que se presenta ha hecho que las personas tiendan a realizar todas sus actividades por esta vía.

    Desde que esto empezó a suceder el Internet se volvió más que una diversión y empezó a ser tomado más en serio, ya que el aumento de publicaciones y de informaciones hizo que la Web se volviera como un desafío para los (Ingeniería del software) ingenieros del software, a raíz de esto se crearon enfoques disciplinados, sistemáticos y metodologías donde tuvieron en cuenta aspectos específicos de este nuevo medio.

     Áreas
    El desarrollo de aplicaciones Web posee determinadas características que lo hacen diferente del desarrollo de aplicaciones o software tradicional y sistemas de información. La ingeniería de la Web es multidisciplinar y aglutina contribuciones de diferentes áreas: arquitectura de la información, ingeniería de hipermedia/hipertexto, ingeniería de requisitos, diseño de interfaz de usuario, usabilidad, diseño gráfico y de presentación, diseño y análisis de sistemas, ingeniería de software, ingeniería de datos, indexado y recuperación de información, testeo, modelado y simulación, despliegue de aplicaciones, operación de sistemas y gestión de proyectos.

    La ingeniería de la Web no es un clon o subconjunto de la ingeniería de software aunque ambas incluyen desarrollo de software y programación, pues a pesar de que la ingeniería de la Web utiliza principios de ingeniería de software, incluye nuevos enfoques, metodologías, herramientas, técnicas, guías y patrones para cubrir los requisitos únicos de las aplicaciones web. Sin embargo el termino de ingeniería de la web ha sido un termino muy controvertido especialmente para profesionales en disciplinas tales como la ingeniería del software ya que no la consideran como un campo dentro de la ingeniería.

    Los principales aspectos de la ingeniería de la Web incluyen, entre otros, los siguientes temas:
    • Diseño de procesos de negocio para aplicaciones web.
    • Herramientas CASE para aplicaciones web.
    • Generación de código para aplicaciones web.
    • Desarrollo web colaborativo.
    • Modelado conceptual de aplicaciones web.
    • Diseño de Modelos de datos para sistemas de información web.
    • Ingeniería web empírica.
    • Entornos de desarrollo de aplicaciones web integrados.
    • Herramientas de autor para contenido multimedia.
    • Pruebas de rendimiento de aplicaciones basadas en web.
    • Personalización y adaptación de aplicaciones web.
    • Herramientas y métodos de prototipado.
    • Control de calidad y pruebas de sistemas.
    • Ingeniería de requisitos para aplicaciones web.
    • Aplicaciones para la Web Semántica.
    • Factorías de software para la web.
    • Métodos, herramientas y automatización de pruebas para aplicaciones web.
    • Aplicaciones web móviles y ubícuas.
    • Usabilidad de aplicaciones web.
    • Accesibilidad para la web.
    • Metodologías de diseño web.
    • Formación en ingeniería de la web.
    • Diseño de interfaces de usuario.
    • Métricas para la web, estimación de costes y medición.
    • Gestión de proyectos web y gestión de riesgos.
    • Desarrollo y despliegue de servicios web.
    Categorías
    Los sitios web pueden ser categorizados de la siguiente forma:
    • Sólo estático que se enfoca en la organización de la estructura y el contenido, en la forma como se va a presentar la información y que sea fácil de manejar para cualquier usuario, pero debe tener en cuenta la eficiencia y la confiabilidad.
    • Sitio estático con formularios de entrada este sitio tiene las mismas características que el anterior, adicionándole que el le permite a los usuarios la interacción por medio de cuestionarios, comentario y sugerencias.
    • Sitio con acceso de datos dinámicos aquí, además de las características antes mencionadas, cuenta con bases de datos en las cuales el usuario puede realizar consultas y búsquedas.
    • Sitio creado dinámicamente en este sitio los requerimientos son parecidos pero deben suplir con las necesidades de cada usuario; creando sitios dinámicos que sean compatibles con el entorno de navegación de cada usuario.
    • Aplicación de software basada en la Web este sitio puede tener todas las características antes mencionadas, pero logrando un parecido con una implementación cliente/servidor comúnmente conocido que a un sitio web estático.
    Con el pasar del tiempo y la constante evolución tecnológica que atraviesa nuestro mundo circundante hemos podido observar la necesidad y la utilidad de la red de redes; Internet para mejorar de cierta manera nuestras condiciones de vida y así fortalecer más nuestro proceso de formación educativa y contribuir con un mejoramiento del global de las necesidades de cada quien observemos que un proyecto que comenzó meramente con fines militares para no centralizar los datos, ha tenido un crecimiento significable hoy en día el mundo se mueve con la web, ayudando a pequeñas, medianas y grandes empresas a si como todo entidad educativa.

    Tengamos en cuenta que empresas mueven sus negocios por medio de la internet y que hasta políticas como el CRM para el manejo de clientes, son muy importantes para las empresas como por ejemplo, Dell, surgen políticas para el mantener los clientes y tenerlos en contactos vía Web, mediante Internet se cuidada de cierta manera la imagen de una empresa, por ejemplo mediante el marketing a través de Internet permite reforzar el servicio, haciendo más fuerte la relación entre la marca y el cliente.

    Esto implica un uso creativo del medio, involucrando verdaderamente a las personas con la compañía. Utilizando la inmediatez, que brinda esta vía de comunicación. Con la herramienta comunicacional, se permite una relación constante e inmediata con los clientes, así como mantener a los clientes contentos, conquistar nuevos nichos de mercado y, por ende, incrementar las ventas.

    Debemos tener en cuenta que para la efectiva comunicación en la web , se tienen protocolos que es como el lenguaje para que se haga efectiva el intercambio de comunicación, vale la pena preguntarse, así para poder acceder a toda la información que nos puede suministrar Internet sólo debes poseer un servicio de algún proveedor de Internet un navegador como Mozilla o Netscape.

    Por medio de un sitio web podremos tener nuestro sitio accesible o disponible 24 horas al día, 365 días del año en absolutamente todo el mundo para quienes tienen acceso; es decir, cerca de 600 millones de personas aproximadamente, es por esto que nuestros datos en internet publicados en el sitio web podrían ser accesibles a toda persona en cualquier momento en cualquier parte del mundo.

    Todas estas consideraciones nos llevan a la conclusión de que un sitio web bien logrado no es únicamente un espacio en la red para ver el mismo comercial que en televisión; es en realidad una extensión de las empresas o instituciones, así mismo teniendo en cuenta la importancia y aplicabilidad que tiene la ingeniería Web en nuestro desarrollo cognitivo, social y vivencial es fácil visionar que cada una de las funciones que ella emana estarán siempre ligadas a la vanguardia del desarrollo progresivo de la tecnología y del hombre.

    Naturaleza multidisciplinar
    La ingeniería del software, incluye nuevas metodologías de desarrollo esenciales para la administración de proyectos. Actualmente la ingeniería web ha adoptado también metodologías de la ingeniería del software y ha creado muchas nuevas. Debido a que la información es públicada para conocimiento de todo el mundo, hay que tener muy en cuenta aspectos sociales, jurídicos y éticos que pueden influir a la hora de la publicación. De acuerdo con esto, la ingeniería Web puede utilizar una parte de cada una de estas disciplinas y no ser dominada por puntos de vista muy particulares, es una respuesta de carácter multidisciplinario para las aplicaciones Web.

    Usualmente, las aplicaciones web son multidisciplinares, ya que son construidas en un medio constantemente cambiante, donde los requerimientos son inestables, los equipos de desarrollo generalmente son pequeños, las comunidades de usuarios son más amplias que antes y la competición ahora es a nivel mundial. En general, las aplicaciones web, necesitan ser funcionales, mantenibles, escalables y seguras. Como podemos ver, la actual demanda de las aplicaciones web es totalmente diferente de las aplicaciones convencionales y por lo tanto hay una gran necesidad de la ingeniería web.



    Cliente Servidor


    Introducción

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

    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) (Ver Figura 5.1). 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 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.

    Funcionamiento del sistema 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 direccion 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.


    Cuando implantar C/S?

             Cambios estructurales y organizativos.
             Cambios en organigramas.
             Respuesta dinámica de mercado.
             Cambio en procesos de negocio.

    ¿Qué ayuda a la implementación?

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

    Definición C/S: 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.

    ¿Qué es un 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

    Sus características son:
    • Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo).
    • Espera y recibe las respuestas del servidor.
    • Por lo general, puede conectarse a varios servidores a la vez.
    • Normalmente interactúa directamente con los usuarios finales mediante una interfaz grafica de usuario .
    • 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.
    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.

    ¿Qué es un 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.

    Sus características son:
    • Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo).
    • Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.
    • 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).
    • No es frecuente que interactúen directamente con los usuarios finales.

    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.

    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.

    Arquitectura Cliente/Servidor

    Con respecto a la definición de arquitectura cliente/servidor se encuentran las siguientes definiciones:
    • 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 tecnologia 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"

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


    Aplicaciones Simples  
    No requieren una gran Base de Datos compartida, pueden ser elaboradas solamente en el Cliente.
    Aplicaciones Complejas
    Exigen dos capas, una para la aplicación del usuario (Cliente) y otra para la base de datos (Servidor).


    Funciones de los Niveles en la Arquitectura Cliente/Servidor
     


    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 ABSTRACCIÓN



     
    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
    METODOLOGÍA ACTUAL DE PROYECOS




    DIAGRAMA PARA UN PROYECTO DE SISTEMAS


     
     CONCLUSIÓN 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 DIRTRIBUIDO

    *Distribución de Datos
    *Distribución de Procesamiento
    *Interfaz gráfica con el usuario

    SISTEMA DIRTRIBUIDO
     
     
     
    CAMBIOS EN LA NATURALEZA DE LOS SISTEMAS DE APLICACIÓN
     
    •        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 ÁREA DE INFORMÁTICA

    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 DESARROLLO



    DEL MODELO CONCEPTUAL A LO FÍSICO


    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.

    BIBLIOGRAFÍA

    es.wikipedia.org/wiki/Cliente-servidor
    www.monografias.com/trabajos24/arquitectura-cliente-servidor/arquitectura-cliente-servidor.shtml
    www.desarrolloweb.com/articulos/arquitectura-cliente-servidor.html
    www.csae.map.es/csi/silice/Global71.html
    temariotic.wikidot.com/la-arquitectura-cliente-servidor