9
Ensayo InfOIIrultica Adaptativa - JesUs A. Herruindez R. 25 La aplicacion de la reingenlena no es una practica nueva en el mundo tecnol6gico, posiblemente si 10 sea la reciente aplicacion a nivel corporativo y en el area informatica, como tambien 10 es la palabra reingenieria. La Ingenieria del Oespiece ha sido una actividad comun en la produccion de maquinaria, sea computacional, medica, industrial, etc. EI aprovechamiento de la ingenieria del despiece como estrategia de desarrollo nacional tiene casos clasicos como los del Jap6n en su proceso de recuperacion luego de la II guerra mundial y el de la China modema en su transformacion hacia la economia de mercado. La recuperacion de las especificaciones del diseno de algun producto terminado es mas frecuente de 10 que se cree. EI propos ito de conocer 0 reconocer como esta construido un objeto, cuando se hace como una labor mas de una empresa, es mejorar sus propios productos, copiar 0 analizar los de la competencia, 0 lIegar hasta actividades de espionaje industrial. Puede decirse que los ciclos naturales de realimentacion que se presentan en las fases de construccion de un sistema corresponden a procesos de ingenieria inversa 0 revers a, como por ejemplo, cuando los resultados de las pruebas de implantacion obligan a retomar parcial 0 totalmente cualquier fase previa del desarrollo de la aplicaci6n. Estrictamente hablando, esto es cierto. Igualmente se argumentaria respecto al mantenimiento del software para decir que son actividades, ya sea, de ingenieria inversa 0 de reestructuracion. En el software, cuando el analista-programador va ha realizar un mantenimiento, debe primero aplicar la ingenieria inversa para elaborar un modelo mental del sistema informatico a mantener, a partir del codigo que observa y la informacion que el usuario Ie entrega, luego concreta con ingenieria progresiva ese modelo en un grupo de documentos que contiene el "diseno recuperado" y para terminar su tarea reconstruye el codigo aplicando ingenieria reversa. Complementemos 10 dicho con una breve descripcion de los elementos mostrados en la figura 2.3 y necesarios para trabajar en reingenieria, herramienta basica para la renovacion continua de sistemas.

A. Herruindez R. 25

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A. Herruindez R. 25

COdigo U·FT· 09.002 001

Ensayo InfOIIrultica Adaptativa - JesUs A. Herruindez R. 25

La aplicacion de la reingenlena no es una practica nueva en el mundo tecnol6gico, posiblemente si 10 sea la reciente aplicacion a nivel corporativo y en el area informatica, como tambien 10 es la palabra reingenieria. La Ingenieria del Oespiece ha sido una actividad comun en la produccion de maquinaria, sea computacional, medica, industrial, etc. EI aprovechamiento de la ingenieria del despiece como estrategia de desarrollo nacional tiene casos clasicos como los del Jap6n en su proceso de recuperacion luego de la II guerra mundial y el de la China modema en su transformacion hacia la economia de mercado. La recuperacion de las especificaciones del diseno de algun producto terminado es mas frecuente de 10 que se cree. EI propos ito de conocer 0 reconocer como esta construido un objeto, cuando se hace como una labor mas de una empresa, es mejorar sus propios productos, copiar 0 analizar los de la competencia, 0 lIegar hasta actividades de espionaje industrial.

Puede decirse que los ciclos naturales de realimentacion que se presentan en las fases de construccion de un sistema corresponden a procesos de ingenieria inversa 0 revers a , como por ejemplo, cuando los resultados de las pruebas de implantacion obligan a retomar parcial 0 totalmente cualquier fase previa del desarrollo de la aplicaci6n. Estrictamente hablando, esto es cierto. Igualmente se argumentaria respecto al mantenimiento del software para decir que son actividades, ya sea, de ingenieria inversa 0 de reestructuracion.

En el software, cuando el analista-programador va ha realizar un mantenimiento, debe primero aplicar la ingenieria inversa para elaborar un modelo mental del sistema informatico a mantener, a partir del codigo que observa y la informacion que el usuario Ie entrega, luego concreta con ingenieria progresiva ese modelo en un grupo de documentos que contiene el "diseno recuperado" y para terminar su tarea reconstruye el codigo aplicando ingenieria reversa. Complementemos 10 dicho con una breve descripcion de los elementos mostrados en la figura 2.3 y necesarios para trabajar en reingenieria, herramienta basica para la renovacion continua de sistemas.

~

(

s

a n

e

Page 2: A. Herruindez R. 25

Ensayo InfonDalica Adaptativa - JesUs A Hernandez R.

2.1 Ingenieria Progresiva.

La ingenieria progresiva no es un nuevo concepto en el contexto tecnologico ni un nuevo termino a acunar, la ingenieria progresiva 0 "hacia adelante" comprende los metodos convencionales de ingenieria que siempre hemos aplicado en cualquier dominio del conocimiento, en el caso del software se trata de las tradicionales metodologias de desarrollo en el nivel de formalidad que cada uno haya logrado en su implantacion. La ingenieria progresiva 0 ingenieria convencional es el proceso acostumbrado de seguir una secuencia que va desde los mas altos niveles de abstraccion representados en el modele 16gico del sistema (Ia concepcion del problema, los requerimientos del usuario, su especificaci6n formal), hasta el modele fisico y su implantacion operacional (diseno, codigo, pruebas, etc). En ingenieria de software solamente conviene utilizar esta clasificacion cuando sea necesario aclarar que no se esta practicando una secuencia opuesta a la tradicional, 10 que significa que la aplicacion resultante del trabajo no existia previamente.

2.2 Ingenieria Inversa.

La ingenieria inversa en software es el proceso de descubrir la especificaci6n de requerimientos de un sistema informatico en operacion 0 de alguno de sus componentes para conocer la memoria institucional que preservan y facilitar su posible reimplantacion utilizando las tecnicas modernas de ingenieria de software. Es el proceso de desarrollar un conjunto de especificaciones para un sistema complejo existente, a partir de un analisis agudo y sistematico de los elementos que 10 componen.

EI proposito de la ingenieria inversa es lograr una representaci6n del sistema a un nivel de abstraccion mucho mas alto que el que en la actualidad existe en la aplicacion, para conocer su comportamiento y su estructura, con el fin de duplicar el sistema, facilitar su mantenimiento, fortalecer su perfeccionamiento, posibilitar su administracion, soportar su reemplazo 0 simplemente conocer la forma como se procesa una informacion determinada. Es una dificil labor porque, generalmente, el proceso 10 efectua una persona diferente al constructor del sistema, este nuevo analista como norma habitual no cuenta con una documentaci6n actualizada y talvez ni siquiera con la vieja documentacion original.

26

Page 3: A. Herruindez R. 25

Ensayo lnforrn.atica Adaptativa - JesUs A Hernandez R.

La ingenierfa inversa no es un proceso de cambio 0 de creacion de un nuevo sistema basandose en la regresi6n del sistema objeto de estudio, es un proceso de ancilisis, es el reconocimiento de los mecanismos de diseno y construcci6n de un objeto, es la extraccion desde la aplicaci6n existente de las abstracciones independientes de su implantacion. La ingenierfa inversa es la herramienta que aprovecha el analista-programador cuando va ha realizar un mantenimiento, es cuando busca reconocer, comprender y manipular las decisiones de diseno que se tuvieron en cuenta para el desarrollo del sistema en cuesti6n y ahora representadas en el codigo fuente que el observa.

La ingenierfa inversa es el primer paso en cualquier proceso de reingenierla, para realizarla no es requisito indispensabte actuar sobre todo el sistema objeto de investigaci6n, puede efectuarse en cualquier nivel de abstraccion, de cualquier fase del cicio de vida como se puede apreciar en la figura 2.3. Por ejempJo, la ingenierla inversa puede utilizarse para controlar la calidad en informatica partiendo del funcionamiento del sistema para deducir los requerimientos del usuario y comprobar que si se satisfacen, 0 tam bien para recuperar el diseno del sistema a partir del codigo implantado

Dentro de la ingenieria inversa podemos destacar las actividades Recuperaci6n de Diserio y Redocumentaci6n. Aqui, el concepto de diserio va un poco mas alia de la formulacion de como realizar un programa de computador y su vfnculo con las restricciones impuestas por el instrumento mecanico en se implantara ese programa. Se pretende ir incluso hasta las especificaciones form ales del sistema, 10 que rigurosamente seria una recuperacion del analisis del mismo.

Recuperaci6n de Diseno es, entonces, el conjunto de procesos orientados a la consecusion de toda la informacion que se necesita para que una persona entienda integralmente 10 que un sistema hace, como 10 hace, por que 10 hace, como esta compuesto, etc. La recuperaci6n de diserio es mas comun de 10 que se cree, general mente esta encubierta en muchas actividades del cicio normal de vida de un sistema. Hay recuperacion de diseno cuando el analista consume grandes cantidades de tiempo buscando entender la estructura del sistema de informacion que luego se modelara en software 0

cuando estudia otros sistemas de informacion similares al que desea desarrollar. Tambien hay recuperacion de diseno cuando el encargado del mantenimiento invierte parte de su trabajo en la comprension de la naturaleza del cambio a realizar y del efecto que ese cambio puede ejercer en la estructura completa del sistema informatico. Recuperaci6n de diserio

27

Page 4: A. Herruindez R. 25

Ensayo Informatica Adaptaliva - JesUs A Hernandez R.

es la combinaci6n, principal mente, de experiencia personal, con conocimiento del problema, conocimiento del codigo fuente, documentaci6n existente, dominio de la aplicaci6n y deducciones de la observaci6n.

Redocumentacion. La redocumentaci6n es la forma mas antigua y sencilla de la ingenieria inversa y consiste en la creaci6n de una representaci6n semanticamente equivalente del sistema en un determinado nivel de abstracci6n en su cicio de vida. representaci6n con la cual se pretende recuperar documentaci6n que existi6 0 que deberia existir acompariando el sistema. La redocumentaci6n se realiza por medio de graficadores, editores, listados de referencias cruzadas, generadores de diagramas, herramientas CASE basicas, etc. En cualquier labor de ingenieria inversa 0 de reingenieria se presenta, como uno de los propositos del trabajo 0 como un resultado indirecto. la redocumentaci6n.

2.3 Reconstrucci6n.

La reconstrucci6n es una actividad muy frecuente en el area del software por las continuas nuevas solicitudes de los usuarios luego de entregado un sistema informatico. consiste en el proceso de aumentar 0 de reestructurar el codigo fuente y/o la documentaci6n de un sistema sin modificar su funcionalidad. Su expresi6n mas conocida es la reestructuraci6n de codigo.

Reestructuracion. La restructuraci6n es el proceso de transformaci6n de los mecanismos internos de un sistema. es la modificaci6n desde su forma actual de representaci6n a otra en el mismo nivel relativo de abstracci6n, manteniendo intacta la funcionalidad y semantica del sistema 0 la forma como 10 aprecia el usuario. La reestructuraci6n es el paso intermedio entre la ingenieria inversa y la reingenieria. en ella es indispensable conocer la estructura del objeto pero no es necesario entender su significado.

En el ambiente corporativo ha sido usual utilizar el instrumento de la reestructuraci6n para lograr algunos cambios de caracter organizacional, en el area informatica la denominaci6n reestructuraci6n proviene de la epoca en que se comenzaron a transformar los programas de computador realizados en codigo libre no estructurado, a formas estructuradas y a estandares particulares de programaci6n. La reestructuraci6n en otras palabras. es la acci6n sobre el c6mo sin afectar el que. Tipicos ejemplos de reestructuraci6n son: la actualizaci6n a formas continuas de los reportes

28

Page 5: A. Herruindez R. 25

Ensayo Informatica Adaptativa - JesUs A. HernBndez R.

impresos en papel corriente 0, cualquier mantenimiento preventivo a nivel de codigo fuente. Los productores de software son los verdaderos interesados en la actividad de la reestructuracion pues los resultados de ella facilitan su trabajo hacia el futuro, los usuarios podrian 0 no enterarse de esta labor y solo en algunos casos esporadicos podrian lIegar a ser sus originadores.

2.4 Ingenieria Reversa.

La ingenieria reversa comprende procesos de ingenieria inversa y de ingenierfa progresiva sobre el software existente. Es el proceso de redisenar todo un sistema informatico 0 alguno de sus componentes para mejorar su calidad tecnica y su desempeno organizacional, con la correspondiente implantacion del nuevo rediseno. La modernizacion de software normal mente se encuentra en este item, como es el caso, por ejemplo, de la emigracion de sistemas informaticos de tercera a cuarta generacion [Hernandez, 91]. Un caso particular de la ingenierfa reversa es la Compilacion Cruzada 0 "traduccion" del software de un lenguaje de programacion a otro.

La ingenierfa reversa se inicia con el reconocimiento de las falencias existentes en el sistema informatico, con el propos ito de lograr la identificacion de los componentes a redisenar, y sigue hasta construirlos de nuevo, de acuerdo a las mas recientes tecnicas en uso para desarrollo de software. En esta actividad no se cambian ni la vision macroestructural ni la vision funcional del sistema informatico, en la practica se trata de un proceso de refinamiento tecnico, necesario en todo sistema cuya relacion beneficio/costo sea positiva.

2.5 Mantenimiento de Software.

En el area de sistemas informaticos es aceptado el excesivo trabajo dedicado y el elevado costo del mantenimiento de software, para este oneroso gasto se han ofrecido muchas alternativas de solucion, que vienen desde la programacion estructurada, pasando por las metodologias formales, hasta desembocar hoy en la reingenierfa de software, que como dijimos al comienzo de este capftulo esta ya se extendio hasta el nivel organizacional. Con el advenimiento del concepto de la reingenierfa se ha delimitado el alcance del mantenimiento de software, y puede decirse este

29

Page 6: A. Herruindez R. 25

Ensayo Informatica Adaptativa - JesUs A HernAndez R.

que comienza a disminuir pues al tener mayor claridad en la clasificaci6n de las actividades de cambio de un sistema existente, se entiende que no todas elias son mantenimiento.

EI mantenimiento es, entonces, el proceso de modificar un sistema informatico luego de su entrega formal al usuario para corregir defectos de conformaci6n y de operaci6n 0 para adaptar el producto a un cambio ambiental (del hardware en el que se encuentra instalado), con el propos ito de sostener el conjunto inicial de requerimientos que el usuario estableci6 en el sistema. Es decir, las tareas de mantenimiento no se hacen para extender el sistema con nuevos modulos 0 para actualizarlo tecnicamente 0

para una renovaci6n total del mismo sino para conservar el cumplimiento de unos propositos convenidos cuando se defini6 el problema a resolver.

2.6 Reingenieria.

La reingenieria consiste en la conversIon de un sistema existente, en capacidad de operaci6n y objeto de investigaci6n, a una nueva forma mas moderna y completa, en el mismo nivel de abstracci6n y con su correspondiente implantaci6n. La transformaci6n de que se habla en reingenieria presenta en forma simultanea aspectos organizacionales y tecnicos y puede manifestarse como la construcci6n de un nuevo sistema, la modificaci6n de elementos 0 la adici6n de otros, a causa de graves alteraciones en su entorno 0 a nuevos requerimientos del usuario, que el sistema original ya no logra satisfacer. En otras palabras, es un proceso de renovaci6n total de los sistemas y de adecuaci6n para su reutilizaci6n. N6tese que hablamos de sistemas generales, por 10 tanto debemos dividir el problema en objetos informaticos reutilizables y en objetos organizacionales reutilizables [Hernandez-93c] que se soportan mutuamente y que se integran para conformar el sistema; la reingenieria puede actuar sobre cada uno de ellos 0 ambos al mismo tiempo. Conviene destacar que los nuevos sistemas a desarrollar deben incluir esta partici6n entre instrumentaci6n y especificaci6n porque como fue explicado previamente ellos en el futuro tambiem seran candidatos a reingenierar.

La reingemena involucra actividades tanto de ingenieria inversa, para conseguir una descripci6n a alto nivel del problema, como labores de ingenierias progresiva y reversa, para lograr la implantacion de los cam bios que exige la soluci6n. Recordemos que en la ingenierfa inversa no se

30

Page 7: A. Herruindez R. 25

Ensayo illform.atiC<! Adaptativa - JesUs A Hernandez R.

desarrollan sobre el sistema modificaciones de ninguna naturaleza, aunque si suceden en la ingenieria reversa y la reconstrucci6n.

La reingenierfa se efectua sobre un sistema completo 0 sobre partes del mismo, ya que los nuevos requerimientos podrian conducir a rechazar todo el sistema actual 0 tan solo alguno de sus subsistemas, pera de cualquier caso que se trate, los cambios a realizar siempre seran tanto funcionales como estructurales. Estos cambios simultaneos en la funci6n y la estructura establecen la gran diferencia con los procesos de reconstruccion, ingenieria reversa y los otros items que se han presentado en parrafos anteriores. Una situaci6n en la que pueden ubicarse frecuentemente labores de reingenieria son las nominas de personal luego de los resultados de las convenciones colectivas. Reingenieria es 10 que se ha hecho en las contabilidades con los ajustes por inflacion 0 en los sistemas comerciales con la apertura economlca; En los casos de reingenlena se presentan nuevos requerimientos funcionales que van mas alia de un mantenimiento y que obligan ademas a mejorar las caracteristicas tecnicas del sistema existente.

Si al construir el sistema informatico tenemos clara Ja futura presencia de los elementos de la reingenieria que se exponen en este documento y las relaciones que se generan entre ellos, es evidente que el producto final sera realmente un sistema de software abierto, con facil modificaci6n y verificabilidad. Esta apreciacion significa que la idea tradicional del cicio de vida debe extenderse para abarcar la reingenieria como parte natural de los sistemas, sean estos organizacionales, de informacion 0 informaticos.

Si en el proceso de construcci6n de los sistemas se considera la reingenieria como una de sus partes integrantes, es indudable que se facilitan, se aceleran y efectivizan las modificaciones futuras de los sistemas. Sin embargo, esto no es suficiente para evitar la absoluta obsolescencia pues siempre habra novedosas tecnicas que implantar y nuevas necesidades que resolver. Lo que nos conduce a un concepto mas avanzado, la Renovaci6n Continua de Sistemas, intraducido previamente y ampliado en el siguiente capitulo, que es el conjunto de actividades que involucra todas las facetas de las ingenierfas progresiva y regresiva y de la reingenieria, buscando adelantarse a las continuas transformaciones organizacionales para conseguir un verdadero software adaptativo que vaya al ritmo del cambio corporativo.

31

Page 8: A. Herruindez R. 25

3. EI Entorno de Informatica Adaptativa

Desde el advenimiento de la ingenierra de software se intenta que miles de aplicaciones informaticas aumenten su grado de flexibilidad y apertura, aunque la recompensa no ha side muy afortunada [Gibbs 94]; como tambiem se busca que los nuevos sistemas de software que se realizen tengan esas mismas propiedades. Sin embargo, este objetivo todavia esta lejos de lograr, pues las soluciones que se han planteado para tal efecto estan mas orientadas al instrumento -tecnologias de hardware y software, que a la materia prima que este manejara -Ia informaci6n. Las tecnologras de bases de datos y las de orientaci6n por objetos han hecho aportes para hacer mas flexible la recomposici6n de las aplicaciones informaticas, pero estas siguen siendo instrumentos complejos cuya efectividad depende de la adecuada comprensi6n de la informaci6n que procesaran. EI meollo de este reves radica en que la informaci6n es, al mismo tiempo, la materia prima, eJ agente de cambio y el producto final de las construcciones de software

La dinamica organizacional y la de su entorno se conocen a traves de la informaci6n y las propiedades de esta ultima son las que definen las caracteristicas deseables en los sistemas informaticos. Aunque los sistemas informaticos se hacen para manejar informaci6n no se desarrollan con base a la naturaleza de la informacion y los profesionales del software casi solo se interesan en las caracterfsticas del instrumento mas que en el propos ito de este [Hernandez-93a]. La informaci6n es indispensable en el curso de evoluci6n de una organizaci6n, pero la velocidad de cambio del mundo actual, obliga a un manejo rapido y eficaz de las modificaciones en las especificaciones de requerimientos de la corporaci6n. Se requiere, entonces, de medios tecnol6gicos competentes que apoyen esta tarea. No obstante, dedicarse unicamente, por la complejidad de cada uno, al instrumento 0 a la especificacion serra un error si en realidad se desea participar de un genuino proceso de adaptaci6n. Un Entomo de Informatica Adaptativa debe inc/uir de forma simultanea el conocimiento y control deliberados de esos dos aspectos: Ja especificacion y la instrumentacion, ya que la informaci6n es fundamental para conocer el cambio al interior y al exterior de la organizaci6n, y la tecnologfa es la fuente que provee los

Page 9: A. Herruindez R. 25

Ensayo Inforrmltica Adaptativa - jesUs A Hemimdez R.

mecanismos necesarios para acometer las transformaciones, propias inducidas, que se reconozcan por medio de la informacion.

En la era de la informacion esperar mantenerse en un largo periodo de estabilidad ya no es posible, se ha hecho claro que el caos es la unica caracterlstica comun, que no hay un marco particular de referencia que seguir [Ehrhardt-95]. Es decir, las organizaciones contemporaneas deben buscar, y pueden lograr, solo estados temporales de equilibrio, y se encuentran en un continuo proceso de adaptaci6n que las obliga a ser flexibles, innovadoras, crear cambios. Las empresas actuales deben conocer, manejar y aprender de sus modificaciones internas y de las turbulencias del entorno, perturbaciones vitales de comprender porque originan sus estados temporales de equilibrio, a las cuales hay que responder de forma rapida.

Es evidente que para enfrentar una situacion en donde el desconocimiento del orden es la base, el uso tradicional de la tecnologia de la informacion no sirve para sacar adelante una empresa en crisis, ni para sostener a otra ya en funcionamiento ni para generar nuevas aplicaciones informaticas capaces de soportar con exito continuos cambios en forma y funcion. No basta con establecer estandares de desarrollo 0 de comunicaciones 0 de gestion en los proyectos i nformati cos, tampoco con adquirir las mejores herramientas disponibles de hardware y software. Ante las continuas modificaciones del entorno se requiere que se transforme la vision global de la informatica en la organizaci6n, debe proveerse una percepci6n de la informatica que vaya desde el mismo modelo corporativ~ de la empresa y la declaracion de requisitos que el usuario hace para un sistema hasta la operacion del codigo ejecutable resultante. Una informatica con una perspectiva que Ie facilite la adaptacion de sus productos de forma tal que las aplicaciones de software se engranen con eficacia a los permanentes cam bios organizacionales.

Los sistemas de informacion, como se demostro en el capitulo 1, se encuentran, de manera natural, en un estado inestable y de forma continua estan disminuyendo su capacidad para lograr los objetivos propuestos con su construccion. Esta circunstancia no es facil de apreciar por los tiempos tan breves que empleamos para observar el software, intervalos relativamente cortos respecto a to do el periodo hist6rico de la empresa, asi, las aplicaciones informaticas aparentan ser muy estables. AI considerar tiempos mayores, (en organizaciones maduras podriamos hablar de lustros, en las noveles empresas el cambio corporativ~ y del software es mucho mas

33

0