Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El software suele ser la realización de las reglas de negocios. A medida que cambian estas reglas, el
soft. tiene que cambiar también.
La reingeniería de procesos de negocio (BPR) va más alla del ámbito de las tecnologías de la
información y de la ingeniería del software.
Def: búsqueda e implementación, de cambios radicales en los procesos de negocios para lograr
resultados emergentes.
La tecnología de la información es el medio para hacer que los negocios sean más competitivos. El
que la BPR tenga su papel sigue debatiéndose en la actualidad.
Def: conjunto de tareas lógicamente relacionadas que se efectúan con el objeto de obtener un
determinado resultado de negocios. Se combinan en el: personas, equipos, recursos materiales y
procedimientos de negocios con el objeto de producir un resultado concreto. Ej: diseño de un nuevo
producto, pago a proveedores, la adquisición de servicios y suministros, etc.
Cada proceso del negocios posee un cliente bien definido – una persona o grupo que recibe el
resultado. Requieren que participen distintos grupos de la organización en las tareas lógicamente
relacionadas que definen el proceso.
Cada sistema de negocios (negocio global) está compuesto por uno o más procesos de negocio y
cada proceso de negocio esta definido por un conjunto de subprocesos.
Se puede aplicar BPR a cualquier nivel de la jerarquía pero a medida que se asciende dentro de la
jerarquía los riegos asociados a la BPR crecen de forma dramática. Por esto la mayor parte de los
esfuerzos de BPR se centran en procesos o subprocesos individuales. A medida que crecen las
capacidades de TI (Tecnologías de la información) pueden generar cambios en los procesos de
negocio.
La reingeniería de procesos de negocios es iterativa. Los objetivos y los procesos que lo logran,
deben de adaptarse a un entorno de negocios cambiante. por esta razón no existe un principio ni un
fin en la BPR, se trata de un proceso evolutivo.
1
Este modelo define seis actividades:
- Definición del negocio: se identifican los objetivos de negocio en el contexto de 4 controladores
principales:
1) reducción de costes
2) reducción de tiempos
3) mejora de calidad
4) desarrollo y potenciación del personal.
Los objetivos se pueden definir en el nivel de negocios o para un componente específico de ese
negocio.
- Identificación de procesos: se deben identificar los procesos que sean críticos para alcanzar
las metas definidas en la definición del negocio deben de ser identificados. Se les pude asignar
prioridades por importancia.
Las actividades de BPR descritas anteriormente se utilizan en algunas ocasiones en conjunción con
herramientas de análisis de flujo de trabajo. El objetivo de estas herramientas es construir un modelo
del flujo de trabajo existente, en un esfuerzo por analizar mejor los procesos existentes.
27.1.4. Advertencias.
Si la BPR se lleva a cabo de forma efectiva, los sistemas de información se integran mejor con los
procesos de negocios.
Aun cuando la reingeniería de negocios sea una estrategia rechazada por parte de una compañía, la
reingenierìa del software es algo que debe de hacerse.
El mantenimiento del soft. es algo que va mucho más allá de corregir errores. Se puede definir el
mantenimiento describiendo las cuatro actividades que se emprenden cuando se publica un
programa para su utilización:
- Mantenimiento correctivo
- Mantenimiento adaptivo
- Mejoras o mantenimiento de perfeccionamiento
- Mantenimiento preventivo o reingeniería
2
27.2.2. Un modelo de procesos de reingeniería del software
La reingeniería requiere tiempo; cuesta unas cantidades significativas de dinero y absorbe recursos,
la ingeniería no se lleva a cabo en unos pocos meses, ni siquiera en unos pocos años. La
reingeniería de sistemas de información es una actividad que absorberá recursos de las tecnologías
de la información durante muchos años.
La reingeniería es una tarea de reconstrucción.
Análisis de inventario: toda organización de soft. debería disponer de un inventario de todas sus
aplicaciones; que contenga la información siguiente: nombre de la aplicación, año de creación,
número de cambios efectuados, base o bases de datos a las que se accede, número de usurarios,
calidad de la documentación, importancia para el negocio, fecha del último cambio importante, etc.
Al ordenar esta información según su importancia para el negocio, longevidad, mantenimiento actual
y otros criterios localmente importantes, aparecen los candidatos para la reingeniería.
El estado de las aplicaciones puede cambiar en función del tiempo y como resultado, cambiarán las
prioridades para la reingeniería.
Reestructuración del código: es el tipo más común de reingeniería. Se produce en un nivel bajo de
abstracción. Para llevar a cabo esta actividad, se analiza el código fuente utilizando una
herramienta de reestructuración. Las violaciones de las estructuras de programación
estructurada se indican y se reestructura el código. El código reestructurado resultante se
revisa y se comprueba para asegurar de que no se hayan introducido anomalías. Se actualiza
la documentación interna de código.
Reestructuración de datos: un programa que posea una estructura de datos débil será difícil de
adaptar y de mejorar. Se aplica reingeniería a los datos cuando la estructura de datos es débil. Se
produce en un nivel alto de abstracción. En la mayoría de los casos comienza con una ingeniería
inversa. Se disecciona la arquitectura de datos actual. Cuando es necesario, se definen modelos de
datos, objetos de datos, atributos y a continuación se revisan las estructuras de datos a efectos de
calidad.
La arquitectura de datos tiene una gran influencia sobre la arquitectura del programa, los cambios de
los datos darán invariablemente a cambios de arquitectura o bien del nivel de código.
En algunas ocasiones, estas actividades se producen de forma secuencial lineal, pero no siempre es
así. Quizá la ingeniería inversa tenga que producirse antes de que pueda comenzar la
reestructuración de documentos. Cada una de las actividades como parte del paradigma pueden
3
volver a visitarse en otras ocasiones. Para cualquier ciclo particular, el proceso puede terminar
después de cualquiera de estas actividades.
27.3. INGENIERIA INVERSA
La ingeniería inversa puede extraer la información de diseño aparte del código fuente, pero el nivel
de abstracción, la completitud de la documentación, el grado con el cuál trabajan al mismo tiempo las
herramientas y el analista humano, y la direccionalidad del proceso son sumamente variables.
El nivel de abstracción de un proceso de ingeniería inversa y las herramientas que se utilicen para
realizarlo aluden a la sofisticación de la información de diseño que se puede extraer del código
fuente. Idealmente el nivel de abstracción sería lo más alto posible.
A medida que crece el nivel de abstracción se proporciona al ingeniero del software información que
le permitirá una comprensión más sencilla de estos programas.
La interactividad alude al grado con el cual el ser humano se integra con una herramientas
automatizadas para crear un proceso de ingeniería inversa efectivo. En la mayoría de los casos, a
medida que crece el nivel de abstracción, la interactividad debe de incrementarse o bien la
completirtud se verá reducida.
Antes de que pueda comenzar las actividades de ingeniería inversa, el código fuente no estructurado
se reestructura para que solamente contenga estructuras de programación estructurada. Esto hace
que el código fuente sea más fácil de leer y proporciona la base para todas las actividades de la
ingeniería inversa subsiguientes.
4
En el nivel de programa, es frecuente que sea preciso realizar una ingeniería inversa de las
estructuras de datos de programa internas, como parte de un esfuerzo global se reingeniería. En el
nivel de sistema, es frecuente que se efectué una reingeniería de las estructuras globales de datos
para ajustarlas a los nuevos paradigmas de gestión de bases de datos.
Estructuras de datos internas: las técnica de ingeniería inversa para datos de programa internos
se centran en la definición de clases de objetos. Esto se logra examinando el código del programa
con la intención de agrupar variables de programa que estén relacionadas.
Enfoque para la determinación de clases para la ing. Inversa:
1) Se identifican los indicadores y estructuras de datos locales dentro del programa que registren
información importante acerca de las estructuras de datos globales.
2) Se define la relación entre indicadores y estructuras de datos locales y las estructuras de datos
globales.
3) Para toda variable que represente una matriz o archivo, se enumeran todas las demás variables
que tengan una relación lógica con ella.
Pasos para definir el modelo de datos existente como precursor para una ing. que producirá un
nuevo modelo de base de datos:
1. Se construye un modelo de objetos inicial
2. Se determinan los candidatos a clases
3. Se refinan las clase tentativas: se determinan si ciertas clases similares pueden o no combinarse
en una única clase.
4. Se definen las generalizaciones se examinan las clases que puedan tener muchos atributos
similares para determinar si se debería o no construir una jerarquía de clases con una clase de
generalización como precursor de todos sus descendientes.
5. Se descubren las asociaciones. Mediante el uso de técnica análogas al enfoque de CRC se
establecen las asociaciones entre clases.
El nuevo desarrollo de interfaces de usuario ha pasado a ser uno de los tipos de actividades de
reingeniería. Antes de que sea posible reconstruir una interfaz de usuario suele ser necesario que se
produzca una actividad de ingeniería inversa.
Tres preguntas básicas a las cuales hay que responder cuando comienza la ingeniería inversa de la
IU:
¿ Cuales son las acciones básicas que debe de procesar la interfaz, por ejemplo, acciones de
teclado y clics de ratón?
¿cuál es la descripción compacta de la respuesta del sistema a estas acciones?
¿Qué quiere decir una “sustitución” o más exactamente que concepto de equivalencia de interface es
relevante en este caso?
Se puede utilizar álgebra de procesos para presentar el comportamiento de una interfaz de manera
formal.
Existen al menos dos entidades activas concurrentes: el sistema y el usuario. Uno tiene que ser
capaz de expresar ciertas opciones “externas” que no se encuentran bajo control del usuario. Estos
ingredientes, la reactividad, la concurrencia y las operaciones externas resultan básicos para el
álgebra del procesos.
La descripción de la interfaz hace uso de agentes y acciones. Un agente es algo que da vida a algún
aspecto del sistema. Las acciones permiten que los agentes se comuniquen entre sí. En esencia, el
5
álgebra de procesos es una notación taquigráfica para representar la forma en que los agentes y las
acciones dan vida a la función de una IU.
27.4. REESTRUCTURACION
La reestructuración del software modifica el código fuente y/o los datos en un intento de hacerlo
adecuado para cambios futuros. En general no modifica la arquitectura global del programa. Tiende a
centrase en los detalles de diseño individuales y en las estructuras de datos locales definidas dentro
de los módulo. Si el esfuerzo de la reestructuración se extiende más allá de los límites de los módulo
y abarca a la arquitectura del software, la reestructuración pasa a ser ingeniería progresiva.
Se lleva a cabo para conseguir un diseño que produzca la misma función pero con una mayor calidad
que el programa original. Las técnica de reestructuración del código modelan la lógica del programa
empleando álgebra Booleana y a continuación aplican una serie de reglas de transformación que dan
lugar a una lógica reestructurada.
Antes de que pueda comenzar la reestructuración de datos, es preciso llevar a cabo una ingeniería
inversa, un análisis del código fuente. Todas las sentencias del lenguaje de programación que
contengan definiciones de datos, descripciones de archivos, E/S y descripciones de interfaz se
evalúan en primer lugar. El objetivo es extraer elementos y objetos de datos, para obtener
información acerca del flujo de datos, así como comprender las estructuras de datos ya existentes
que se hayan implementado. Esta actividad se denomina a veces análisis de datos.
En un programa con un flujo de control que sea el equivalente al gráfico de un “plato de espaguetis”
se tiene las opciones siguientes:
1. Efectuar una modificación tras otra, luchando con el código fuente para implementar los cambios
necesarios.
2. Intentar comprender el funcionamiento interno en un esfuerzo por hacer que las modificaciones
sean más efectivas.
6
3. Se puede rediseñar, recodificar y comprobar aquellas partes del software que requieren
modificaciones, aplicando ingeniería del soft a todos los elementos revisados.
4. Se puede rediseñar, recodificar y comprobar el programa en su totalidad, usando herramientas
CASE que servirán para comprender el diseño actual.
Este enfoque de mantenimiento preventivo fue diseñado por MILLER con el nombre de reajuste
estructurado: aplicación de las metodologías de hoy a los sistemas de ayer para prestar apoyo a los
requisitos del mañana.
Cuando una organización de desarrollo de software vende un soft como producto, el mantenimiento
preventivo se ve como nuevas versiones del programa.
La migración desde computadoras centrales a C/S requiere una ingeniería del negocio como una
reingeniería del soft.. Es preciso establecer una infraestructura de red de empresa.
La ingeniería de aplicaciones C/S comienza con un análisis del entorno de negocios que abarca la
computadora central. se identifican tres capas de abstracción:
Capa Bases de datos: se encuentra en los cimientos de la arquitectura C/S y gestiona las
transacciones y consultas. Las mismas tiene que ser controladas por un conjunto de reglas de
negocios. Las funciones del sistema de gestión de base de datos y la arquitectura de datos de la
base de datos existente deben de sufrir un proceso de ingeniería inversa como precedente para el
rediseño de la capa de fundamento de la base de datos.
Capa de reglas de negocios: representa un soft que está residente tanto en el cliente como en el
servidor. Este soft lleva a cabo las tareas de control y coordinación para asegurar que las
7
transacciones y consultas entre la aplicación cliente y la base de datos se ajusten a los procesos de
negocios.
Capa de aplicación de cliente: implementa las funciones de negocios requeridas por grupos
especificos de usuarios finales. En muchos casos se segmenta una aplicación de computadora
central en un cierto número de aplicaciones más pequeñas, sometidas a reingeniería ya adecuadas
para funcionamiento de sobremesa. La comunicación entre aplicaciones de sobremesa será
controlada por la capa de reglas de negocios.
La reingeniería del soft convencional para producir una implementación orientada a objetos hace una
ingeniería inversa del soft existente para que sea posible crear los modelos adecuados de datos,
funcional y de comportamiento. Los modelos de datos creados durante la ingeniería inversa se
utilizan entonces en conjunción con un modelado CRC para establecer la base para definición de
clases. Las jerarquías de clases, los modelos de relaciones entre objetos, los modelos de
comportamiento de objetos y los subsistemas se definen a continuación y comienza el diseño
orientado a objetos.
A medida que progresa la ingeniería inversa orientada a Objetos desde el análisis hasta el diseño, el
modelo de proceso de reutilización se podrá invocar también.
Una parte significativa de todos los esfuerzos invertidos en la transición desde la computación de
computadora central hasta la arquitectura cliente /servidor se pueden reinvertir en reingeniería de las
interfaces de usuario de la aplicación.
Antes de que una organización intente efectuar una reingeniería de una aplicación existente, deberá
de llevar a cabo un análisis de costes y beneficios: