ρDB: Refactorizando Bases de Datos Mediante Ingeniería .ρDB: Refactorizando Bases de Datos...

download ρDB: Refactorizando Bases de Datos Mediante Ingeniería .ρDB: Refactorizando Bases de Datos Mediante

of 8

  • date post

    14-Oct-2018
  • Category

    Documents

  • view

    212
  • download

    0

Embed Size (px)

Transcript of ρDB: Refactorizando Bases de Datos Mediante Ingeniería .ρDB: Refactorizando Bases de Datos...

  • DB: Refactorizando Bases de Datos Mediante Ingeniera Inversa

    Jessica Mariana Villar-Garca1, Miguel Ehcatl Morales-Trujillo1,2 y Guadalupe Ibargengoitia1,2

    1Facultad de Ciencias, Universidad Nacional Autnoma de Mxico,

    Ciudad de Mxico, Mxico 2Grupo de Investigacin KUALI-KAANS, Universidad Nacional Autnoma de Mxico,

    Ciudad de Mxico, Mxico

    {jess, migmor, gig}@ciencias.unam.mx

    Resumen

    Dada la estrecha relacin entre los sistemas de

    software y las bases de datos, se vuelve imprescindible

    que su interaccin sea precisa. Uno de los atributos

    necesarios para que esta interaccin se d, es contar

    con una base de datos bien diseada. Sin embargo

    generar un buen diseo que atienda las necesidades

    y restricciones particulares de un determinado

    problema, no es una tarea trivial, mucho menos

    cuando el sistema se encuentra en operacin. Por esta

    razn, en este artculo se describe a DB, un proceso

    de ingeniera inversa para mejorar el diseo e

    implementacin de bases de datos inmersas en un

    sistema de software existente y en operacin. La

    validacin de DB se llev a cabo mediante un caso

    prctico, el cual permiti describir y validar su utilidad

    y pertinencia e identificar sus ventajas y desventajas.

    Palabras clave: Ingeniera inversa, refactorizacin,

    bases de datos, integridad

    1. Introduccin

    En la actualidad son muchas las actividades en

    donde estn involucrados los sistemas de software,

    resulta difcil imaginar alguna en la que no se requiera

    la automatizacin de sus procesos. Aunado a esto, y

    dada la relacin 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 los sistemas de

    software, en consecuencia no slo es importante

    construir buen software sino tambin disear buenas

    bases de datos.

    Por una parte el uso de una base de datos bien

    diseada tiene grandes ventajas, pues un buen diseo

    permite controlar los datos, recuperarlos, ordenarlos,

    analizarlos, resumirlos e incluso elaborar informes que

    aporten mayor y mejor informacin, otorgando as

    ventajas competitivas y certidumbre al individuo que

    interpreta los datos.

    Por el contrario, las consecuencias de un mal diseo

    de la base de datos se ven reflejadas de muchas

    maneras, por ejemplo: el almacenamiento puede no ser

    el ptimo, la consistencia, integridad y precisin de los

    datos puede verse afectada o los usuarios pueden tener

    dificultades a la hora de acceder a los datos,

    provocando, probablemente, que se produzca

    informacin errnea y descontento entre los usuarios y

    administradores de la base de datos.

    Dada la problemtica que genera un mal diseo de

    una base de datos, este artculo tiene como objetivo

    describir y validar un proceso de ingeniera inversa que

    permita mejorar el diseo e implementacin de una

    base de datos de un sistema de software en operacin.

    Este proceso ha sido llamado DB.

    La meta ser que DB permita realizar

    modificaciones o mejoras sin que stas afecten o

    alteren las necesidades para las que la base de datos y

    el sistema de software fueron creados. Adems, DB

    deber posibilitar el conservar la mayor cantidad de

    datos ya almacenados, deshacindose de aquellos que

    se podran llamar "basura".

    La validacin se llevar a cabo mediante un caso

    prctico, es decir, mejorando el diseo de la base de

    datos de un sistema en operacin. Se analizar su

    comportamiento, se identificarn fallas y con base en

    ello se definirn las mejoras que posteriormente sern

    aplicadas al diseo de la base de datos; de esta manera

    se describir y validar la utilidad y pertinencia de

    DB.

    Este artculo est organizado de la siguiente manera,

    en la seccin 2 se exponen los antecedentes y la

    metodologa seguida para la definicin del proceso de

    ingeniera inversa. En la seccin 3 se describen cada

    una de las prcticas que constituyen a DB. En la

    seccin 4 se presenta el contexto en el cul se

    136

    Congreso Internacional de Investigacin e Innovacin en Ingeniera de Software 2015. San Luis Potos, San Luis Potos, del 27 al 29 de abril

  • desarroll l caso prctico mediante el cual se valid a

    DB. Los resultados obtenidos se concentran en la

    seccin 5. Finalmente las conclusiones y el trabajo

    futuro se presentan en la seccin 6.

    2. Antecedentes

    En esta seccin se definirn conceptos importantes

    como lo son la ingeniera inversa y la refactorizacin.

    Adems, se definir la metodologa empleada y el

    marco de trabajo utilizado para la definicin de DB.

    2.1. Ingeniera Inversa y Refactorizacin

    Ingeniera inversa y refactorizacin son dos

    conceptos que se han estudiado y aplicado de manera

    efectiva en disciplinas tales como la Ingeniera de

    Software y las Bases de Datos [2][3][4]. Para este

    artculo, resulta relevante proveer una definicin

    concreta para cada uno de estos trminos. Por una parte

    definiremos a la Ingeniera Inversa como:

    El proceso de descubrir los principios

    tecnolgicos de un dispositivo, un objeto o sistema,

    mediante el anlisis de su estructura, funcionamiento y

    operacin [1].

    Por otra parte, dentro de la literatura existen varias

    menciones referentes a mtodos o procesos para la

    refactorizacin de sistemas y/o bases de datos, entre

    ellas podemos encontrarla siguiente definicin:

    La refactorizacin es el proceso de modificar un

    sistema de software de tal manera que dichos cambios

    no alteren su funcionamiento, en esencia se mejora el

    diseo de un cdigo que ya ha sido escrito [2].

    Con ambos conceptos definidos, para este artculo,

    la ingeniera inversa ser el medio para lograr una

    refactorizacin, es decir, se mejorar una base de datos

    en operacin que carece de documentacin, realizando

    adecuaciones basadas en la extraccin de conocimiento

    e informacin a nuestro alcance.

    Una refactorizacin a la base de datos permitir

    mejorar la estructura del esquema sin alterar la

    semntica de la informacin de ste. As el esquema

    proporcionar la misma informacin antes y despus

    de realizar la refactorizacin [3][4].

    Entre las metodologas ms utilizadas para la

    refactorizacin de bases de datos relacionales podemos

    mencionar al Desarrollo Guiado por Pruebas de Bases

    de Datos Relacionales (TDD-RD por sus siglas en

    ingls) [5]. El objetivo de TDD-RD es realizar pruebas

    para validar el diseo de la base de datos mediante un

    proceso iterativo en donde se ejecutan las pruebas

    durante cada etapa, adems de que el diseador realiza

    pequeas modificaciones (refactorizacin) para

    mejorar el diseo del cdigo sin alterar la semntica de

    ste [5].

    En la Figura 1 se muestra el proceso de

    refactorizacin utilizado por el mtodo TDD-RD,

    mismo que fue utilizado para la definicin del ciclo de

    vida que seguiran las prcticas de DB.

    Figura 1. Actividades de TDD-RD, adaptado de [5].

    Una oportunidad de mejora encontrada a este

    mtodo, fue la necesidad profundizar y detallar en qu

    consiste la actividad de elegir la refactorizacin

    correcta. La definicin de esta actividad en TDD-RD

    no aporta mayores detalles de cmo ejecutarla y

    tampoco define a qu aspectos habra que prestar

    atencin para decidir cul es la correcta.

    Por esta razn, la propuesta presentada en este

    artculo resulta ser un complemento para TDD-RD,

    pues el objetivo es aportar una gua que permita realizar

    modificaciones o mejoras a una base de datos sin que

    stas cambien o alteren las necesidades para las que fue

    diseada, es decir, se pretende proveer de una serie

    detallada de prcticas que permitan elegir y ejecutar

    una refactorizacin correcta sobre una base de datos.

    137

    Congreso Internacional de Investigacin e Innovacin en Ingeniera de Software 2015. San Luis Potos, San Luis Potos, del 27 al 29 de abril

  • 2.2. Metodologa

    Con la intencin de establecer una metodologa que

    permitiera identificar las prcticas que compondran al

    proceso de ingeniera inversa, se establecieron una

    serie de pasos que fueron agrupados en las siguientes

    fases:

    1. Pre-anlisis de los sistemas: Analizar el contexto, necesidades y restricciones de los

    sistemas candidatos a ser intervenidos.

    2. Seleccin del sistema: Tomando en cuenta criterios como la viabilidad y el impacto,

    elegir un sistema de los analizados

    previamente para llevar a cabo el proceso de

    ingeniera inversa.

    3. Anlisis del sistema: Identificar los objetivos para los cuales fue creado el sistema, en

    particular aquellos ligados al almacenamiento

    y persistencia de datos. Para ello se debe

    estudiar la base de datos con la intencin de

    crear una lista de supuestos generales para

    respondernos la pregunta qu se deseaba

    modelar?

    4. Diseo de la mejora: Una vez que se analiz el sistema y se conoci su propsito

    especfico, validar lo que realmente se model

    contra lo que se deseaba modelar. Es en esta

    fase en la que se proponen las modificaciones

    necesarias a la base de datos.

    5. Implementacin y prueba de la mejora: Con las modificaciones a la base de datos