En la actualidad las actividades en donde están involucrados los sistemas de software son muchas, resulta difícil imaginar alguna en la que no se requiera su automatización. Esta abundante presencia convierte a los sistemas de software en un elemento crítico para el buen funcionamiento de muchos negocios en múltiples ámbitos de la sociedad. Sin embargo, dada la relación que guardan los sistemas de software con las bases de datos es imposible concebir el uno sin el otro, por ello, las bases de datos, se han convertido en un componente esencial para éstos. Como consecuencia, no sólo es importante construir un buen software sino también diseñar buenas bases de datos. No obstante, el generar un buen diseño de la base de datos, que atienda las necesidades y restricciones particulares de un determinado problema, no es una tarea trivial, lo que ocasiona que un buen número de las bases de datos que se encuentran en operación presenten problemas o deficiencias. Este trabajo describe y valida un proceso de ingeniería inversa para mejorar el diseño e implementación de las bases de datos de sistemas de software existentes y en operación.