0 INGENIERÍA DEL SOFTWARE CLIENTES - SERVIDOR

miércoles, 8 de diciembre de 2010

  A finales de siglo, el desarrollo de una nueva generación de máquinas herramientas capa ces de soportar fuertes tolerancias dieron poder a los ingenieros que diseñaban un pro- ceso nuevo de fabricación llamado producción en masa. Antes de la llegada de esta tecnología avanzada de máquinas herramientas, no se podían soportar fuertes tolerancias. Pero con esta tecnología se podían construir piezas intercambiables y fácilmente ensamblables la piedra angular de la producción en masa.


Cuando se va a desarrollar un sistema basado en computadora, un ingeniero de software se ve restringido por las limitaciones de las tecnologías existentes y potenciadas cuando las tecnologías nuevas proporcionan capacidades que no estaban disponibles para las generaciones anteriores de ingenieros. La evolución de las arquitecturas distribuidas de computadora ha capacitado a los ingenieros de sistemas y del software para desarrollar nuevos enfoques sobre cómo se estructura el trabajo y cómo se procesa la información dentro de una empresa.

Las nuevas estructuras de las organizaciones y los nuevos enfoques de proceso de información (por ejemplo: tecnologías intranet e Intemet, sistemas de apoyo a las decisiones, software de grupo, e imágenes) representan una salida radical de las primeras tecnologías basadas en minicomputadoras o en mainframes. Las nuevas arquitecturas de computadora han proporcionado la tecnología que ha hecho posible que las empresas vuelvan a diseñar sus procesos de negocio.

En este capítulo, examinaremos una arquitectura dominante para el proceso de información -los sistemas clientelservidor (C/S) dentro del contexto de los sistemas de comercio electrónico-. Los sistemas clientehervidor han evolucionado junto con los avances de la informática personal, en la ingeniería del software basada en componentes, con las nuevas tecnologías de almacenamiento, comunicación mejorada a través de redes, y tecnología de bases de datos mejoradas. El objetivo de este capítulo' es presentar una visión global y breve de los sistemas Cliente - servidor con un énfasis especial en los temas de la ingeniería del software que deben de afrontarse cuando se analizan, diseñan, prueban y se da soporte a dichos sistemas C/S.



Sistema distribuidos:


 Clientes y servidores
El propósito de esta sección es introducir tanto la idea de cliente como la de servidor. Estos son los bloques básicos de construcción de un sistema distribuido y, de esta manera, cuando se describa el diseño y el desarrollo de dichos sistemas, será necesario tener conocimiento de sus funciones y de su capacidad.

Un servidor es una computadora que lleva a cabo un servicio que normalmente requiere mucha potencia de procesamiento. Un cliente es una computadora que solicita los servicios que proporciona uno o más servidores y que también lleva a cabo algún tipo de procesamiento por sí mismo. Esta forma de organización de computadoras es totalmente diferente a los dos modelos que dominaron los años ochenta y principios de los noventa.

El primer modelo se conoce como procesamiento central (host). En este modelo de organización todo el procesamiento que se necesitaba para una organización se llevaba a cabo por una computadora grande -normalmente una mainframe- mientras que los usuarios emplean sencillas terminales informáticas o PCs de muy poca potencia para comunicarse con el central. Los dos problemas más serios son la dificultad de mejorar y de copiar con interfaces IGU modernas. A medida que las aplicaciones van siendo más grandes, la carga de una mainframe común llega al punto en que también necesita mejorar y normalmente con hardware de procesamiento nuevo, memoria o almacenamiento de archivos. Mejorar dichas computadoras es más fácil que antes; sin embargo, puede resultar un proceso moderadamente difícil y caro -es ciertamente más caro y más difícil que añadir un servidor nuevo basado en PC a un conjunto de computadoras configuradas como clientes y servidores-. El segundo problema es hacerse con interfaces IGU modernas. Para ordenar a una computadora que visualice incluso una pantalla relativamente primitiva relacionada, digamos, con unos cuantos botones y una barra de desplazamiento de la misma, conlleva tanto tráfico en las líneas de comunicación que un sistema podría colapsarse fácilmente con los datos que se utilizan para configurar y manterer una serie de interfaces basadas en IGUs.

El segundo modelo de computación es en donde hay un grupo de computadoras actuando como servidores,pero poseen poco procesamiento que llevar a cabo. Normalmente estos terminales poco inteligentes actuarían como servidores de archivos o servidores de impresión
para un número de PCs potentes o minicomputadoras que llevarían a cabo el procesamiento y estarían conectados a una red de área local. Las computadoras cliente solicitarían servicios a gran escala, como es obtener un archivo, llevando a cabo entonces el procesamiento de dicho archivo. De nuevo, esto conduce a problemas con el tráfico en donde, por ejemplo, la transmisión de archivos grandes a un número de clientes que requieren simultáneamente estos archivos hace que el tiempo de respuesta de la red vaya tan lento como una tortuga.

La computación cliente/servidor es un intento de equilibrar el proceso de una red hasta que se comparta la potencia de procesamiento entre computadoras que llevan a cabo servicios especializados tales como acceder a bases de datos (servidores), y aquellos que llevan a cabo tareas tales como la visualización IGU que es más adecuado para el punto final dentro de la red. Por ejemplo, permite que las computadoras se ajusten a tareas especializadas tales como el procesamiento de bases de datos en donde se utilizan hardware y software de propósito especial para proporcionar un procesamiento rápido de la base de datos comparado con el hardware que seencuentra en las mainframes que tienen que enfrentarse con una gran gama de aplicaciones.

Categorías de servidores
Ya se ha desarrollado una gran variedad de servidores. La siguiente lista ampliada se ha extraído de [ORF99]:

Servidores de archivos. Un servidor de archivos proporciona archivos para clientes. Estos servidores se utilizan todavía en algunas aplicaciones donde los clientes requieren un procesamiento complicado fuera del rango normal de procesamiento que se puede encontrar en bases de datos comerciales. Por ejemplo, una aplicación que requiera el almacenamiento y acceso a dibujos técnicos, digamos que para una empresa de fabricación, utilizaría un servidor de archivos para almacenar y proporcionar los dibujos a los clientes. Tales clientes, por ejemplo, serían utilizados por ingenieros quienes llevarían a cabo operaciones con dibujos, operaciones que serían demasiado caras de soportar, utilizando una computadora central
potente. Si los archivos solicitados no fueran demasiado grandes y no estuvieran compartidos por un número tan grande de usuarios, un servidor de archivos sería una forma excelente de almacenar y procesar archivos.

Servidores de bases de datos. Los servidores de bases de datos son computadoras que almacenan grandes colecciones de datos estructurados. Por ejemplo, un banco utilizaría un servidor de bases de datos para almacenar registros de clientes que contienen datos del nombre de cuenta, nombre del titular de la cuenta, saldo actual de la cuenta y límite de descubierto de la cuenta.

Una de las características de las bases de datos que invalidan la utilización de los servidores de archivos es que los archivos que se crean son enormes y ralentizan el tráfico si se transfirieran en bloque al cliente. Afortunadamente, para la gran mayoría de aplicaciones no se requiere dicha transferencia.

Actualmente una base de datos bancaria típica tendrá millones de registros, sin embargo, las consultas anteriores conllevarían transferir datos a un cliente que sería solamente una fracción muy pequeña del tamaño.

En un entorno de bases de datos clientehervidor los clientes envían las consultas a la base de datos, normalmente utilizando alguna IGU. Estas consultas se envían al servidor en un lenguaje llamado SQL (Lenguaje de Consultas Estructurado). El servidor de bases de datos lee el código SQL, lo interpreta y, a continuación, lo visualiza en algún objeto HCI tal como una caja de texto. El punto clave aquí es que el servidor de bases de datos lleva a cabo todo el procesamiento, donde el cliente lleva a cabo los procesos de extraer una consulta de algún objeto de entrada, tal como un campo de texto, enviar la consulta y visualizar la respuesta del servidor de la base de datos en algún objeto de salida, tal como un cuadro de desplazamiento.

Servidores de software de grupo. Software de grupo es el término que se utiliza para describir el software que organiza el trabajo de un grupo de trabajadores. Un sistema de software de grupo normalmente ofrece las siguientes funciones:

Gestionar la agenda de los individuos de un equipo de trabajo.

Gestionar las reuniones para un equipo, por ejemplo, asegurar que todos los miembros de un equipo que tienen que asistir a una reunión estén libres cuando se vaya a celebrar.

Gestionar el flujo de trabajo, donde las tareas se distribuyen a los miembros del equipo y el sistema de software de grupo proporciona información sobre la finalización de la tarea y envía un recordatorio al personal que lleva a cabo las tareas.

Gestionar el correo electrónico, por ejemplo, organizar el envío de un correo específico a los miembros de un equipo una vez terminada una tarea específica.

Servidores Web. Los documentos Web se almacenan como páginas en una computadora conocida como servidor Web. Cuando se utiliza un navegador (browser) para ver las páginas Web normalmente pincha sobre < j enlace en un documento Web existente. Esto dará como resultado un mensaje que se enviará al servidor Web que contiene la página. Este servidor responderá entonces enviando una página a su computadora, donde el navegador pueda visualizarlo. De esta manera los servidores Web actúan como una forma de servidor de archivos, administrando archivos relativamente pequeños a usuarios, quienes entonces utilizan un navegador para examinar estas páginas. Para comunicarse con un navegador Web, un cliente que utiliza un navegador está haciendo uso a su vez de un protocolo conocido como HTTP.

Servidores de correo.Un servidor de correo gestiona el envío y recepción de correo de un grupo de usuarios. Para este servicio normalmente se utiliza un PC de rango medio. Existen varios protocolos para el correo electrónico. Un servidor de correo estará especializado en utilizar solo uno de ellos.

Servidores de objetos. Uno de los desarrollos más excitantes en la informática distribuida durante los últimos cinco años ha sido el avance realizado, tanto por parte de los desarrolladores, como por parte de los investigadores, para proporcionar objetos distribuidos. Estos son objetos que se pueden almacenar en una computadora, normalmente un servidor, con clientes capaces de activar la funcionalidad del objeto enviando mensajes al objeto, los cuales se corresponden con métodos definidos por la clase de objeto. Esta tecnología liberará finalmente a los programadores de la programación de bajo nivel basada en protocolos requerida para acceder a otras computadoras de una red. En efecto, esto permite que el programador trate a los objetos a 'distancia como si estuvieran en su computadora local. Un servidor que contiene objetos que pueden accederse a distancia se conoce como servidor de objetos.

Servidores de impresión. Los servidores de impresión dan servicio a las solicitudes de un cliente remoto. Estos servidores tienden a basarse en PCs bastante baratos, y llevan a cabo las funciones limitadas de poner en cola de espera las peticiones de impresión, ordenar a la impresora que lleve a cabo el proceso de impresión einformar a las computadoras cliente que ya ha finalizado una petición de impresión en particular.

Servidores de aplicaciones. Un servidor de aplicaciones se dedica a una aplicación única. Tales servidores suelen escribirse utilizando un lenguaje tal como Java o C++. Un ejemplo típico del servidor que se utiliza en el dibujo de un fabricante de aviones que gestionaba las versiones diferentes de dibujos producidos por el personal técnico iría dirigido a algún proceso de fabricación.

Software intermedio (middleware) Hasta el momento probablemente ya tenga la impresión de que la comunicación entre cliente y servidor es directa. Desgraciadamente, esto no es verdad: normalmente existe por lo menos una capa de software entre ellos. Esta capa se llama software intermedio (rniddíeware). Ésta muestra la comunicación entre un cliente ejecutando un navegador como Internet Explorer y un servidor Web.

¿Qué es el comercio electrónico?
Para ilustrar la apariencia de un sistema distribuido examinaremos un ejemplo tomado de un área de aplicación conocida como comercio electrónico. En un sentido amplio, el término «comercio electrónico» (Ecommerce) se puede definir como la aplicación de la tecnología de sistemas distribuidos que apoya las operaciones comerciales.

Sistemas para simular alguna actividad comercial en tiempo real utilizando tecnología de red. Un buen ejemplo de este tipo de sistemas es una subasta en la red.Un sistema de subasta típico solicitaría artículos a los usuarios de Internet, ubicaría los datos en una página Web y entonces comenzaría la oferta para ese artículo. Normalmente la compañía de subastas
especificaría un período de oferta para así darla por finalizada.

Sistemas que proporcionan algún servicio basado en red para usuarios. Probablemente los más conocidos son los que ofrecen cuentas de correo gratis, donde los ingresos de dicha empresa probablemente procedan de la publicidad en las páginas Web que se utilizan para ese sitio Web. Estas son compañías que mediante un honorario monitorizan su sitio Web y le envían un mensaje, normalmente por correo electrónico o mediante un buscador si han detectado un problema, como el mal funcionamiento del servidor que se utiliza para el sitio Web.

Sistemas que proporcionan servicios de asesoramiento. Los sistemas típicos de este tipo son los que procesan una descripción de artículos, como un CD, para los que establecerán el mejor precio, después de haber explorado un número de sistemas de venta en la red.

Sistemas internos que el cliente no ve, pero que dan soporte a más actividades comerciales convencionales. Por ejemplo, un sistema que apoya el suministro de mercancías a un comerciante minorista de la calle.

Tecnología usadas para el comercio electrónico.

Existen varias tecnologías basadas en red que se utilizanpara las aplicaciones de comercio electrónico. Antes de describirlas merece la pena decir que muchas tecnologías antiguas todavía se utilizan para este tipo de aplicación;el mejor ejemplo es el uso de la tecnología de bases de datos relacionales para proporcionar almacenesde datos a gran escala.

Paquetes cliente/servidor
Este término describe las colecciones de software que normalmente llevan a cabo algún tipo de procesamiento de sistemas. A continuación, se muestra un grupo de
ejemplos típicos de paquetes de software: Paquetes de reproducción de datos. Este tipo de software realiza una transacción en la base de datos y la aplica a un número de bases de datos reproducidas, evitando así acceder a estas bases de datos hasta que estén todas en sincronización.

Paquetes de seguridad. Estos son paquetes que monitorizan el tráfico dentro de un sistema distribuido y avisan al administrador de sistemas de la aparición de cualquier violación posible en la seguridad. Por ejemplo, el hecho de que alguien intente entrar en un sistema con una contraseña sin reconocer.

Monitores de transacciones. Estos son paquetes de software que administran las transacciones que tienen lugar dentro de un sistema distribuido y aseguran que se devuelvan los datos correctos como resultado de una transacción y en el orden correcto. Muchas de las funciones de estos monitores tienen que ver con asegurar que los resultados correctos se devuelvan incluso en el entorno en donde podrían aparecer errores de hardware o de transmisión.

El diseño de sistemas distribuidos.

 Correspondencia del volumen de transmisión con los medios de transmisión

Este es uno de los principios más obvios. Esto significaque para un tráfico denso de datos en un sistema distribuido se deberían utilizar medios de transmisión rápidos (y caros). El proceso de asignar tales medios normalmente tiene lugar después de haber tomado decisiones sobre la potencia de procesamiento de distribución en un sistema y, algunas veces, conlleva unas ligeras iteraciones al final de la fase de diseño.

 Mantenimiento de los datos más usados en un almacenamiento rápido

Este principio también es obvio. Requiere que el diseñador examine los patrones de datos en un sistema y asegure que los datos a los que se accede frecuentemente se guarden en algún medio de almacenamiento rápido. En muchos sistemas tales datos pueden constituir no más del 5 por 100 de los datos originales almacenados en el sistema, y de esta manera permite utilizar con frecuencia las estrategias que conllevan el almacenamiento de estos datos dentro de la memoria principal.

Mantenimiento de los datos cerca de donde se utilizan.

Este principio de diseño intenta reducir el tiempo que pasan los datos en medios lentos de transmisión. Muchos de estos sistemas son en donde los usuarios acceden con frecuencia a un subconjunto de datos. Por ejemplo, un sistema distribuido usado en una aplicación bancaria contendría bases de datos con datos de las cuentas de los clientes, en donde la mayor parte de las consultas a las bases de datos de las sucursales las realizarán los clientes de esa sucursal; entonces, si los datos de un sistema bancario se distribuyen a los servidores de las sucursales, y los datos asociados a los clientes de esa sucursal están en esa sucursal, el resto de los datos podrían estar en otros servidores con otras ubicaciones, y cualquier consulta que se originara sobre los datos se tendría que comunicar a través de líneas lentas de transmisión.

Utilización de la duplicación de datos todo lo posible

La duplicación consiste en mantener múltiples copias de datos en un sistema al mismo tiempo. Existen muchas razones para la duplicación de datos. La primera es que hay que asegurar la redundancia que permite que un sistema distribuido continúe funcionando aun cuando una computadora con datos importantes quede fuera de servicio normalmente por un mal funcionamiento del hardware.

La otra razón es que proporciona una forma de implementar el principio dilucidado en la sección anterior: el de asegurar que los datos estén ubicados cerca de donde se utilizan. Por ejemplo, una compañía hotelera con una base central de reservas que hace el seguimiento de todas las reservas de las habitaciones para todos sus hoteles. Es posible que esta compañía tenga dos puntos de contacto para clientes que deseen hacer las reservas: los hoteles en y una oficina central de reservas. Una forma de asegurar el alto rendimiento es duplicando los datos asociados a un hotel en particular y guardar los dato? en el servidor ubicado en el hotel.

Esto significa que cualquier reserva realizada por el hotel solo necesitará acceder a una base de datos local y no requerirá ningún tráfico en la línea lenta de transmisión. Esto suena a un principio muy simple de implementación sencilla. Desafortunadamente, las cosas nunca son tan simples. En el ejemplo de las reservas de hoteles no hay necesidad de que las bases de datos asociadas a los hoteles se comuniquen con la base de datos central. La razón que apoya esto es el hecho de que también habrá clientes que utilicen la oficina central de reservas, así como clientes realizando reservas de habitaciones que ofrecen los mismos hoteles. A menos que haya coordinación entre la base de datos de la oficina central de reservas y las bases de datos individuales duplicadas de cada hotel, surgirán problemas: por ejemplo, el hecho de decir que hay una habitación libre en un momento concreto en un hotel a un cliente que utiliza el servicio central de reservas aun cuando esa habitación ya ha sido reservada por otro cliente que ha llamado directamente al hotel.



El problema anterior implica que en un sistema donde hay una relación dinámica entre las bases de datos individuales existe la necesidad entonces de que cada base de datos mantenga informadas de los cambios a otras bases de datos, y de que aseguren que los cambios se reflejen en todos los datos duplicados. Esto también implica la aparición de retrasos porque las transacciones permanecerán en cola esperando a que la base de datos se sincronice con otras bases de datos. Esto no significa que se tenga que utilizar la duplicación de datos, lo que significa es que se necesita un diseño cuidadoso para minimizar la cantidad de gastos asociados a él en las transmisiones.

Hay que señalar que en los sistemas distribuidos donde existe menos relación dinámica entre los datos, se pueden emplear estrategias más simples que eliminen muchos de los gastos. Por ejemplo, un banco normalmente lleva a cabo transacciones una vez al día en las bases de datos de los clientes y normalmente después del cierre del negocio. Esto significa que un sistema bancario distribuido puede duplicar datos en sus sucursales y solamente puede volver a copiar los datos cambiados en las bases de datos una vez al día: no habría necesidad de coordinar las bases de datos con frecuencia durante el día de trabajo. Habría que señalar también que esta subsección ha ratado la duplicación de datos en función de mantener los datos cerca de los usuarios para reducir el tiempo de transmisión con medios lentos. Hay otras razones para duplicar los datos, por ejemplo una base de datos que se utiliza mucho tendrá colas de transacciones preparadas y esperando a ejecutarse. Estas colas se pueden reducir disfrutando de bases de datos idénticas mantenidas en otros servidores de bases de datos concurrentes.

Eliminar cuellos de botella

En un sistema distribuido un servidor se convierte con frecuencia en un cuello de botella: tiene que manipular tanto tráfico que se construyen grandes colas de transacciones esperando a ejecutarse, con el resultado de que los servidores que están esperando los resultados del procesamiento estarán, en el mejor de los casos, ligeramente cargados y, en el peor, inactivos. La estrategia normal para manipular cuellos de botella es compartir la carga de procesamiento entre los servidores, normalmente servidores físicamente cerca del que está sobrecargado.

Minimizar la necesidad de un gran conocimiento del sistema


Los sistemas distribuidos suelen necesitar conocer el estado del sistema completo, por ejemplo, podría ser que necesitaran conocer la cantidad de registros de una base de datos central. El hecho de necesitar este conocimiento genera más tráfico reduciendo así la eficiencia de un sistema, ya que generará tráfico extra a lo largo de las líneas de transmisión. El diseñador de un sistema distribuido en primer lugar necesita minimizar que el sistema dependa de datos globales, y entonces asegurar que el conocimiento necesario se comunique rápidamente a aquellos componentes del sistema que lo requieran.

Agrupar datos afines en la misma ubicación


Los datos que están relacionados deberían de estar dentro del mismo servidor. Por ejemplo, en una aplicación de reservas en un sistema de vacaciones, los paquetes individuales de vacaciones deberían de estar cerca de los datos que describen las reservas actuales de ese paquete. Ubicar por separado los datos en diferentes servidores asegura que los medios de baja transmisión y muy cargados se cargarán incluso más. El diseñador de un sistema distribuido debe asegurarse de que los datos relacionados gracias al hecho de que se suelen recuperar juntos tendrán que residir lo más cerca posible, preferiblemente en el mismo servidor, o si no, y no de manera tan preferible, en servidores conectados a través de medios de transmisión rápidos tales como los medios utilizados en una red de área local.

Considerar la utilización de servidores dedicados a funciones frecuentes

Algunas veces se puede lograr un mayor rendimiento mediante la utilización de un servidor de empleo específico para una función en particular en lugar de, por ejemplo, un servidor de bases de datos.

 Correspondencia de la tecnología con las exigencias de rendimiento

Muchas de las tecnologías que se estudian en este capítulo tienen pros y contras, y un factor importante aquí son las demandas de rendimiento de una tecnología en particular. Por ejemplo, como medio de comunicación, las conexiones (sockets) normalmente son un medio de comunicación mucho más rápido que los objetos distribuidos. Cuando el diseñador elige una tecnología debe de tener conocimiento de la transmisión y de las cargas de procesamiento que conlleva, y seleccionar una tecnología que minimice estas cargas.

Empleo del paralelismo todo lo posible

Una de las ventajas principales de la tecnología cliente-servidor es el hecho de que se pueden añadir servidores y, hasta cierto punto, elevar el rendimiento del sistema. Muchas funciones del comercio electrónico pueden beneficiarse de la ejecución que están llevando a cabo diferentes servidores en paralelo. Esta no es una decisión sencilla. Mediante el empleo de varios servidores, el diseñador está creando la necesidad de que estos servidores se comuniquen, por ejemplo, un servidor puede que necesite a otro para completar una tarea en particular antes de finalizar la suya propia. Esta comunicación puede introducir retrasos y, si el diseñador no tiene cuidado, pueden negar los avances de rendimiento que se han logrado utilizando el paralelismo.




0 REINGENIERÍA

QUE ES REINGENIERÍA?
Reingeniería en un concepto simple es el rediseño de un proceso en un negocio o un cambio drástico de un proceso. A pesar que este concepto resume la idea principal de la reingeniería esta frase no envuelve todo lo que implica la reingeniería.
Reingeniería es comenzar de cero, es un cambio de todo o nada, además ordena la empresa alrededor de los procesos. La reingeniería requiere que los procesos fundamentales de los negocios sean observados desde una perspectiva transfuncional y en base a la satisfacción del cliente.
Para que una empresa adopte el concepto de reingeniería, tiene que ser capaz de deshacerse de las reglas y políticas convencionales que aplicaba con anterioridad y estar abierta a los cambios por medio de los cuales sus negocios puedan llegar a ser más productivos
Una definición rápida de reingeniería es "comenzar de nuevo". Reingeniería también significa el abandono de viejos procedimientos y la búsqueda de trabajo que agregue valor hacia el consumidor.
Las actividades de valor agregado tienen dos características, es algo que el cliente aprecia y es importante que se ejecuten correctamente desde laprimera vez. La reingeniería se basa en crear procesos que agreguen el mayor valor a la empresa.
La definición más aceptada actualmente es la siguiente "La Reingeniería es el replanteamiento fundamental y el rediseño radical de los procesos del negocio para lograr mejoras dramáticas dentro de medidas críticas y contemporáneas de desempeño, tales como costocalidadservicio y rapidez". (Hammer 1994)
En la definición anterior planteada por Hammer y Champy existen cuatro palabras claves: Fundamental, Radical, dramáticas y Procesos.
Estas palabras son claves debido a que:
1. Una reingeniería buscará el porqué se está realizando algo fundamental.
2. Los cambios en el diseño deberán ser radicales (desde la raíz y no superficiales).
3. Las mejoras esperadas deben ser dramáticas (no de unos pocos porcentajes).
4. Los cambios se deben enfocarse únicamente sobre los procesos.

Se puede decir que una reingeniería es un cambio dramático en el proceso y que como efecto de esto se tendrá un rompimiento en la estructura y lacultura de trabajo.
La base fundamental de la reingeniería es el servicio al cliente, a pesar del énfasis en esto, en general las empresas no logran la satisfacción del cliente y una de las razones es que los métodos y los procesos han dejado de ser inadecuados en tal grado que el reordenamiento no es suficiente, lo que se necesita es elaborar de nuevo la "ingeniería" del proceso.
A juicio de Hammer la esencia de la reingeniería es que la gente este dispuesta a pensar de un modo diferente en el proceso y accedan a deshacerse de las anticuadas reglas y suposiciones básicas de los procesos en la organización.
Además la reingeniería requiere el abandono de los viejos procesos y la búsqueda de nuevos que agreguen valor al consumidor, rompiendo laestructura y cultura de trabajo.
Desde otro punto de vista la reingeniería "Es el rediseño rápido y radical de los procesos estratégicos de valor agregado - y de los sistemas, las políticas y las estructuras organizaciones que los sustentan - para optimizar los flujos del trabajo y la productividad de una organización". (Manganelli, 1995) En su forma más sencilla la reingeniería cambia el proceso para corregir el ajuste entre el trabajo, el trabajador, la organización y su cultura para maximizar la rentabilidad del negocio.
El concepto de avance decisivo no es nuevo, anteriormente las ideas innovadoras casi siempre encontraba respuestas como: Si se pudiera hacer, ¿Alguien ya lo habría hecho? ¿Ya se le habría ocurrido a alguien más? ¿Si se hiciera cual seria el impacto en la estructura organizacional?.
El objeto de la reingeniería lo constituyen aquellos procesos que son a la vez estratégicos y de valor agregado.
En general solo el 50% de los procesos son estratégicos y agregan valor.
La optimización que la reingeniería pide se mide en términos de resultados del negocio, incremento de rentabilidad, participación del mercadoingresosy rendimiento sobre la inversión. Sin la relación entre la reingeniería y mejorar los resultados del negocio la reingeniería esta condena al fracaso.
Otra características de la reingeniería es que en general debe ser rápida porque los ejecutivos esperan resultados en tiempos muy cortos.
Además los resultados deben ser radicales para que logren resultados notables y sorprendentes. Además debe rediseñar los procesos que agreguen valor y desechar los demás.
POR QUE HACER REINGENIERÍA
El ritmo del cambio en la vida de los negocios se ha acelerado a tal punto que ya no pueden ir al paso las iniciativas capaces de alcanzar mejoras increméntales en rendimiento. La única manera de igualar o superar la rapidez del cambio en el mundo que nos rodea es lograr avances decisivos, discontinuos.
Sucede que muchas veces se culpa a los empleados, a los encargados o la maquinaria cuando las cosas no marchan bien; cuando en realidad la culpa no es de ellos sino de la forma en qué se trabaja. También es importante hacer notar que no es porque el proceso sea malo, sino que es malo en la actualidad debido a que el proceso fue diseñado para otras condiciones de mercado que se daban en el pasado. (Hammer 1994)
Según Hammer y Champy las Tres C´s: Consumidores, Competencia y Cambio, son las tendencias que están provocando estos cambios. Estas tres fuerzas no son nada nuevas, aunque si son muy distintas de cómo fueron en el pasado.
Consumidores
Los vendedores ya no mandan, los consumidores sí. Ahora los consumidores le pueden pedir al vendedor qué quieren, cuándo lo quieren, cómo lo quieren y en algunos casos hasta cuánto están dispuestos a pagar y de qué forma. 

Competencia
Antes la competencia era simple y casi cualquier empresa que pudiera entrar en el mercado y ofreciera un producto aceptable, a buen precio, lograríavender. Ahora no sólo hay más competencia sino que compiten de distintas formas.
Se puede competir con base al precio, con base a variaciones del producto, con base a calidad o con base al servicio previo, durante y posterior a laventa.
Por último, no hay que olvidar que la tecnología moderna ha introducido nuevas formas de competir y nueva competencia, Internet por ejemplo. Por lo tanto hay que estar atento a esto para poder hacerle frente y estar preparados a ese nuevo tipo de competencia.
Cambio
Ya se ha hecho notar que los consumidores y la competencia ha cambiado, pero también hay que hacer énfasis al hecho de que la forma en que se cambia ha cambiado. Sobretodo se tiene que el cambio ahora se ha vuelto más esparcido y persistente; además, el ritmo del cambio se ha acelerado.
Con la globalización las empresas se enfrentan a más competidores; también la rapidez de los cambios tecnológicos promueve innovación.
Antes se creía que la automatización era la solución, pero esto lo único que hace es hacer más rápidos los procesos actuales, lo cuál está mal si el proceso es inadecuado y peor aún si ni siquiera hay necesidad de realizarlo, lo que a la larga sería una ligera mejora a expensas de una inversión sumamente fuerte. Por eso es que la única forma de afrontar este nuevo mundo es conociendo cómo hacer mejor el trabajo actual, lo cual se podrá realizar al analizar dicho trabajo.
Lo anterior nos lleva a la raíz de la Reingeniería; olvidarse de que es obligatorio organizar el trabajo de acuerdo a los principios de la división del trabajo y hacerse de la idea que es necesario organizar el trabajo alrededor de los procesos. Lo anterior es necesario debido a que es fundamental tener enfoque hacia el cliente y no hacia el jefe, el departamento o la empresa.
Globalización
Otro factor a tomar en cuenta en explicar porque realizar un reingeniería es la globalización. La globalización presenta nuevos retos a la forma de realizar negocios. El comercio y la industria deben cambiar, deben adaptarse y evolucionar hacia la nueva estructura del mercado.
Reingeniería versus el mejoramiento continuo
Reingeniería significa cambio radical. La tendencia de las organizaciones es evitar el cambio radical, la mejora continua esta mas de acuerdo con la manera como las organizaciones se entienden naturalmente con el cambio.
La mejora continua hace hincapié en cambios pequeños, increméntales, pero se debe notar que el objeto es mejorar lo que una organización ya esta haciendo.
Así, la situación ideal es afrontar una reingeniería inicial de procesos para a partir de ahí, trabajar con los conceptos de mejora continua. Para ello proponemos la siguiente metodología:

Esta grafica explica como una reingeniería bien hecha logra mejorar drásticamente el rendimiento porque se basa en rediseñar totalmente el proceso. Esto no implica que se esta desechando la mejora continua, al contrario esta se debe realizar después de la reingeniería para seguir mejorando. De igual forma con el Control total de calidad. El control total de calidad examina todos los procesos, pero para mejorarlos incrementalmente, no para diseñarlos.
¿QUE IMPLICA LA REINGENIERÍA?
Se necesita reingeniería en una empresa cuando:
·         Cuando el rendimiento de la organización esta por detrás de la competencia.
·         Cuando la organización esta en crisis; como una caída en el mercado.
·         Cuando las condiciones del mercado cambian; como por ejemplo tecnología.
·         Cuando se quiere obtener una posición de líder del mercado.
·         Cuando hay que responder a una competencia agresiva.
·         Cuando la empresa es líder y sabe que debe seguir mejorando para mantener el liderazgo.
Según Stamatis, reingeniería no necesariamente implica corte de personal, aunque puede suceder. Debe ser aplicada siempre con una visión a largo plazo ya que cualquier intento a corto plazo será un fracaso. Las nuevas tendencias creen que el futuro es que las empresas se den cuenta rápidamente las áreas de oportunidad en sus reingenierías y vuelvan a realizarlas constantemente.
Según Omachumo, las ventajas de la reingeniería son:
1. Mentalidad revolucionaria. Induce a pensar en grande en la organización.
2. Mejoramiento decisivo. Cambios notables en tiempos cortos para responder a
la satisfacción del cliente.
3. Estructura de la organización. Enfocarse a las verdaderas necesidades del
cliente.
4. Renovación de la organización. Aumenta participación en el mercado,
rentabilidad y mejor posición frente a la competencia.
5. Cultura corporativa. Ayuda a evolucionar la cultura de la organización.
6. Rediseño de puestos. Crea empleos más incitantes y satisfactorios.
Existen factores necesarios para que una reingeniería sea efectiva. Estos son:
·         orientación hacia el proceso
·         Ambición
·         Rompimiento de reglas
·         Creatividad en el uso de la tecnología.
Las características comunes después de realizar una reingeniería son:
·         Varios trabajos se comprimen en uno solo
·         Se comprimen verticalmente los procesos
·         Los pasos del proceso siguen un orden natural
·         Existen procesos en múltiples versiones
·         Se realiza el trabajo donde tiene sentido
·         Se reducen chequeos y controles
·         Se da la administración por casos
·         Opera de forma centralizada y descentralizada
La reingeniería no trata de componer algo, la reingeniería significa que se comienza de nuevo desde cero. Lo único que debe importar es cómo se quiere organizar el trabajo en el presente dadas las demandas de los mercados y el poder de la tecnología de la actualidad se debe hacer énfasis en que no debe importar cómo se ha hecho el negocio en el pasado.
por esto para analizar los procesos no se deben hacer preguntas como las siguientes: ¿Cómo hacer el proceso más rápido? ¿Cómo lo podemos hacer mejor? o ¿Cómo hacerlo a un costo más bajo? En cambio la reingeniería debe cuestionarse ¿porqué se hace lo que se está haciendo? Para poder contestar esto se debe tener claro que todo proceso relevante debe llevar un valor agregado para el cliente, esto puede ser de calidad, precio justo, proveer excelente servicio, etc., es decir que nunca se debe realizar un proceso solo por satisfacer alguna demanda interna de la organización de la empresa.
Herramienta que utiliza la reingeniería
Uno de los principales aspectos a tomar en cuenta en la reingeniería es la tecnología, sin embargo hay que tener cuidado en su aplicación. La reingeniería cambia los procesos, la manera de hacer el trabajo, la automatización hace más rápido el proceso.
En la actualidad, con los altos niveles tecnológicos alcanzados a nivel mundial, se dice que una compañía no puede hacer una reingeniería si no cambia su forma de pensar acerca de la tecnología informática. De igual forma, y aun de mayor importancia es que una compañía que crea que la tecnología es lo mismo que la automatización no puede hacer reingeniería.
Por ultimo, una compañía que primero busca los problemas y luego busca en la tecnología la solución a estos, no puede hacer una reingeniería. Este principio se basa en la premisa de que en este caso no se estará rediseñando el proceso sino que mejorándolo.
Entonces lo que se busca inculcar es que en vez de preguntar ¿Cómo podemos usar estas nuevas capacidades tecnológicas para mejorar lo que ya hacemos? Se debe preguntar ¿Cómo podemos usar la tecnología para que nos permita hacer cosas que aun no estamos haciendo?
Entonces el verdadero poder de la tecnología no radica en como mejorar viejos procesos sino en el rompimiento de viejas reglas y la creación de nuevas formas de trabajar, que justamente cae dentro de la función y definición de reingeniería.
Es importante hacer notar que la reingeniería es aplicable a nivel operativo pero no a nivel estratégico y táctico del negocio. Puede mostrarle a una compañía como hacer las cosas, pero solo en una forma muy limitada como debe hacer las cosas. No identifica los mercados en que debe estar la compañía, ni los productos que debe desarrollar, pero si puede darle a la compañía procesos eficaces para tomar tales decisiones.
¿CÓMO SE HACE UNA REINGENIERÍA?
Para poder reinventar empresas los gerentes tienen que deshacer los conceptos antiguos que saben sobre cómo organizar y manejar los negocios: deben abandonar los principios y procedimientos organizacionales y operacionales que actualmente utilizan y crear otros completamente nuevos. Esto creará que las nuevas organizaciones no se parezcan a las actuales.
Las empresas deben realizar estos 5 pasos generales para dar un nuevo diseño a sus procesos de operación:
1. Desarrollar la visión y los objetivos de los procesos de la empresa. Establecer prioridades y metas.
2. Identificar los procesos que es necesario volver a diseñar. Identificación de los procesos críticos, cuellos de botellas, etc.
3. Entender y medir los procesos actuales
4. Reunir a las personas involucradas y realizar sesiones de trabajo.
5. Diseñar y elaborar un prototipo del proceso. Implementación técnica.
Además de estos pasos generales las empresas deben seguir los siguientes principios para hacer una reingeniería:
1.    Organizar en torno a los resultados y no a las tareas. Una persona lleve a cabo todos los pasos de un proceso, este diseño debe ser hecho para lograr un objetivo o resultado y no una tarea.
2.    Que el proceso sea diseñado por los que van a usar el producto del mismo.
3.    La tecnología lleva a automatizar procesos y a eliminar interfases y vínculos.
4.    Incluir la labor del procesamiento de la información en el trabajo real que la produce. Trasladar la información y las tareas.
5.    Considere los recursos geográficamente dispersos como si estuvieran centralizados.
6.    Eficiencia e innovación en las comunicaciones.
7.    Vincule las actividades paralelas en lugar de integrar sus resultados. Forjar vínculos entre funciones y coordinar mientras las actividades se realizan.
8.    Coloque el sitio de la decisión en el lugar donde se realiza el trabajo e incorpore el control a ese proceso. Quienes realizan el trabajo deben tomar las decisiones. Comprimir la organización piramidal en plana.

El papel de la gerencia al iniciar una reingeniería es básico. Para la realizar la reingeniería la gerencia debe:
1. Persuadir al personal para aceptar el cambio
2. Educar desde el principio del proceso
3. Dar mensajes claros
4. Aclarar donde se encuentra la compañía y porque debe cambiar.

El aspecto vital y crucial de la reingeniería y que debe darse necesariamente al inicio del esfuerzo para que esta logre darse, es la persuasión de la gente dentro de la empresa para que acepten o cuando menos no rechacen la posibilidad de un gran cambio dentro de la empresa.
En general, los participantes de la reingeniería son:
1.    Líder. Que autorice y motive el cambio.
2.    Dueño del proceso. Que conozca todos los detalles y sea responsable de estos.
3.    Equipo de reingeniería. Diagnostica el proceso, lo rediseñan e implementan el nuevo proceso
Comité de dirección. Formado por gerentes, desarrolla las estrategias
para la reingeniería
METODOLOGÍA RÁPIDA REINGENIERIA
La metodología Rápida Re se compone de varias técnicas administrativas actualmente familiares, como: lluvia de ideas, análisis de procesos, medidas de desempeño, identificación de oportunidades, etc. La metodología se basa en 5 etapas que permiten resultados rápidos y sustantivos efectuando cambios radicales en los procesos estratégicos de valor agregado. La metodología se diseñó para que la utilicen equipos de reingeniería en organizaciones de negocios sin tener que basarse de expertos de fuera.
Etapa 1 – Preparación
Definir las metas y los objetivos estratégicos que justifiquen la reingeniería y los vínculos entre los resultados de la reingeniería y los resultados de la organización.
Etapa 2 – Identificación
El propósito de esta etapa es el desarrollo de un modelo orientado al cliente, identifica procesos específicos y que agregan valor.
Aquí se incluye la definición de clientes, procesos, rendimiento, éxito, recursos, etc. Además requiere un conocimiento profundo de toda la empresa y sus procesos.
Etapa 3 Visión
El propósito de esta etapa es desarrollar una visión del proceso capaz de producir un avance decisivo en rendimiento. La visión del nuevo proceso debe ser comprensible para todo el personal, describir las características primarias del proceso, debe ser motivadora e inspiradora
Etapa 4 – Solución
En esta etapa se produce un diseño técnico y un diseño cultural-organizacional de la empresa.
La etapa de diseño técnico busca realizar la visión (Etapa 3), especificando las dimensiones técnicas del nuevo proceso
El diseño social necesariamente debe ser realizado al mismo tiempo que el técnico, pues para que un proceso sea eficaz, estos diseños deben ser congruentes.
Etapa 5 – Transformación
El propósito de esta etapa es realizar la visión del proceso implementando el diseño de la etapa 4.
Expectativas de la reingeniería
La reingeniería exitosa se da de manera progresiva a través del tiempo. Cada desarrollo progresivo requiere información de apoyo, que debe reunirse por separado cuando no existe una guía básica de posicionamiento. Promover la reingeniería y controlar las expectativas son actividades similares a la de comercializar un nuevo producto.
Los equipos de cambio deben comprender las expectativas básicas del cliente potencial, luego crear estrategias aceptables y, posteriormente, vender el resultado, ésta no es una venta única, todo debe venderse sobre una base de continuidad porque dada la magnitud de los esfuerzos de reingeniería, con facilidad la gente pierde de vista los objetivos.
Algunos beneficios de la reingeniería serán tangibles, otros no. Reducir la cantidad de movimientos que hace un trabajador en la línea de trabajo de Toyota, no puede tomarse solamente como cuanto dinero puede ahorrar, sino en la comodidad con la que el trabajador realizará su labor, y la consecuencia de que se enferme menos o pueda trabajar durante más años, pero esto no resulta del todo tangible para los gerentes.
Del mismo modo que en las comparaciones de costo beneficio, los beneficios pueden dividirse en dos categorías: los que pueden cuantificarse (como la reducción de desechos o tiempo) y los que no. Sin embargo, los beneficios intangibles, pueden dar el mayor impacto a largo plazo.
Por ejemplo, mejorar el apoyo al cliente tendrá partes tangibles y partes intangibles, de manera similar mejorar la confiabilidad del producto y, además, aumentará el buen nombre de la compañía y la lealtad del cliente.
TIPOS DE CAMBIOS QUE OCURREN AL REDISEÑAR LOS PROCESOS
Cambian las unidades de trabajo: de departamentos funcionales a equipos de proceso
En cierto modo lo que se hace es volver a reunir a un grupo de trabajadores que habían sido separados artificialmente por la organización.
Cuando se vuelven a juntar se llaman equipos de proceso. En síntesis, un equipo de procesos es una unidad que se reúne naturalmente para completar todo un trabajo -un proceso.
Los oficios cambian: de tareas simples a trabajo multidimensional
Los trabajadores de equipos de proceso que son responsables colectivamente de los resultados del proceso, más bien que individualmente responsables de una tarea, tienen un oficio distinto. Comparten con sus colegas de equipo, la responsabilidad conjunta del rendimiento del proceso total, no sólo de una pequeña parte de él.
Aunque no todos los miembros del equipo realizan exactamente el mismo trabajo, la línea divisoria entre ellos se desdibuja. Todos los miembros del equipo tienen por lo menos algún conocimiento básico de todos los pasos del proceso, y probablemente realizan varios de ellos. Además todo lo que hace el individuo lleva el sello de una apreciación del proceso en forma global.
Cuando el trabajo se vuelve multidimensional, también se vuelve más sustantivo. La reingeniería no sólo elimina el desperdicio sino también el trabajo que no agrega valor.
La mayor parte de la verificación, la espera, la conciliación, el control y el seguimiento -trabajo improductivo que existe por causa de las fronteras que hay en una empresa y para compensar la fragmentación de un proceso- se eliminan con la reingeniería, lo cual significa que la gente destinará más tiempo a hacer su trabajo real.