<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="id8800155">
  <name>Procesos involucrados en la Reingeniería del Software</name>
  <metadata>
  <md:version>1.2</md:version>
  <md:created>2008/09/10 16:27:58 GMT-5</md:created>
  <md:revised>2008/10/07 15:21:33.077 GMT-5</md:revised>
  <md:authorlist>
      <md:author id="msicilia">
      <md:firstname>Miguel-Angel</md:firstname>
      
      <md:surname>Sicilia</md:surname>
      <md:email>msicilia@uah.es</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="msicilia">
      <md:firstname>Miguel-Angel</md:firstname>
      
      <md:surname>Sicilia</md:surname>
      <md:email>msicilia@uah.es</md:email>
    </md:maintainer>
    <md:maintainer id="veronicadlmm">
      <md:firstname>Verónica</md:firstname>
      
      <md:surname>De la Morena</md:surname>
      <md:email>veronicadlmm@hotmail.com</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist>
    <md:keyword>Procesos en la Reingeniería del Software</md:keyword>
    <md:keyword>Reingeniería del Software</md:keyword>
  </md:keywordlist>

  <md:abstract>Procesos involucrados en la Reingeniería del Software.</md:abstract>
</metadata>
  <content>
    <section id="id8648386">
      <name>Procesos involucrados en la reingeniería</name>
      <para id="id7851871">La reingeniería debe ser entendida como un proceso mediante el cual se mejora un software existente haciendo uso de técnicas de ingeniería inversa y reestructuración de código. En este proceso juega un papel importante el uso de repositorios para almacenar los resultados de la ingeniería inversa y las herramientas case, tal y como se ve en la figura siguiente:</para>
      <figure id="id8140890">
        <media type="image/png" src="graphics1.png">
          <param name="height" value="232"/>
          <param name="width" value="419"/>
        </media>
      </figure>
      <para id="id8615945">Puesto que la reingeniería es una suma de tareas que requiere tiempo y esfuerzo, esta se puede dividir en una serie de procesos separados que se llevan a cabo secuencialmente. Los procesos fundamentales en la reingeniería son:</para>
      <list id="id7815800" type="enumerated"><item>Análisis de inventario: Esta proceso consiste en el estudio de la antigüedad, importancia de la aplicación en el negocio y la mantenibilidad actual, entre otros criterios, para estudiar la posible conveniencia de la reingeniería.</item>
        <item>Reestructuración de documentos: En este proceso se puede optar por una de tres opciones:<list type="bulleted" id="id8759603"><item>Evitar la documentación de los módulo estáticos que no van a sufrir cambios.</item><item>Documentar sólo lo que se va a modificar.</item><item>Documentar toda la información del sistema, si es que este es fundamental para el negocio. </item></list></item>
        <item>Ingeniería inversa: En este proceso se extraen modelos de alto nivel de abstracción que ayuden a la comprensión de la aplicación para poder modificarla y que sirvan como punto de partida para el siguiente proceso. Estos datos se deben almacenar en un repositorio que permita que las personas o herramientas case que lleven a cabo los siguientes pasos lo encuentren disponible. De esta manera se conforma también la documentación de análisis y diseño de la aplicación que facilitará su posterior mantenimiento. </item>
      </list>
      <para id="id7933628">Reestructuración del código y de los datos y/o aplicación de técnicas de ingeniería directa. A la luz de los resultados de la ingeniería inversa, se reestructuran el código y los datos o se aplican técnicas de ingeniería directa para rehacer la aplicación.</para>
    </section>
  </content>
</document>
