Análisis de Técnicas de Aspect Mining Aplicadas a un Sistema en Producción

187
  Análisis de Técnicas de Aspect Mining Aplicadas a un Sistema en Producción  por Sebastián Bisbal Juan Pablo Cassano Dra. Claudia A. Marcos Directora Ing. Esteban S. Abait Co-Director FACULTAD DE CIENCIAS EXACTAS UNIVERSIDAD NACIONAL DEL CENTRO DE LA PROVINCIA DE BUENOS AIRES  Tandil, Mayo 2012

Transcript of Análisis de Técnicas de Aspect Mining Aplicadas a un Sistema en Producción

Anlisis de Tcnicas de Aspect Mining Aplicadas a un Sistema en Produccinpor Sebastin Bisbal Juan Pablo Cassano

Dra. Claudia A. Marcos Directora Ing. Esteban S. Abait Co-Director

FACULTAD DE CIENCIAS EXACTAS UNIVERSIDAD NACIONAL DEL CENTRO DE LA PROVINCIA DE BUENOS AIRES

Tandil, Mayo 2012

ndice de ContenidosAGRADECIMIENTOS ...................................................................................................................................... 9 CAPTULO 1 ................................................................................................................................................. 10 INTRODUCCIN .......................................................................................................................................... 10 I.1. MANTENIMIENTO DE SISTEMAS DE SOFTWARE........................................................................................ 10 I.2. TCNICAS DE ASPECT MINING.............................................................................................................. 11 I.3. ANLISIS DE TCNICAS DE ASPECT MINING EN UN SISTEMA DE PRODUCCIN ................................................ 13 I.4. ORGANIZACIN DEL DOCUMENTO ........................................................................................................ 16 CAPTULO 2 ................................................................................................................................................. 18 INTRODUCCIN AL DESARROLLO DE SOFTWARE ORIENTADO A ASPECTOS ............................................. 18 II.1. EVOLUCIN DEL DESARROLLO DE SOFTWARE ..................................................................................... 18 II.2. SEPARACIN DE CONCERNS ............................................................................................................ 19 II.3. INTRODUCCIN A LA PROGRAMACIN ORIENTADA A ASPECTOS............................................................. 20 II.4. CONCEPTOS DE LA POA................................................................................................................. 21 II.5. LENGUAJES ORIENTADOS A ASPECTOS .............................................................................................. 24 II.6. INTRODUCCIN A ASPECT MINING ................................................................................................... 24 II.6.1. Conceptos de Aspect Mining............................................................................................... 25 II.6.2. Evaluacin de las Tcnicas de Aspect Mining ..................................................................... 27 II.6.3. Reconocimiento de Aspectos .............................................................................................. 27 CAPTULO 3 ................................................................................................................................................. 29 TCNICAS DE ASPECT MINING .................................................................................................................... 29 III.1. UNIQUE METHODS ....................................................................................................................... 29 III.1.1. Tcnica ................................................................................................................................ 30 III.1.2. Ejemplo del Enfoque ........................................................................................................... 30 III.2. FAN-IN ANALYSIS ......................................................................................................................... 31 III.2.1. Tcnica ................................................................................................................................ 31 III.2.2. Ejemplo del Enfoque ........................................................................................................... 34 III.3. EXECUTION RELATIONS .................................................................................................................. 35 III.3.1. Tcnica ................................................................................................................................ 35 III.3.2. Clasificacin de las Relaciones de Ejecucin ....................................................................... 35 III.3.3. Ejemplo del Enfoque ........................................................................................................... 37 III.4. COMPARACIN DE TCNICAS .......................................................................................................... 38 CAPTULO 4 ................................................................................................................................................. 42 ASPECT MINING APLICADO A UN SISTEMA EN PRODUCCIN ................................................................... 42 IV.1. DESARROLLO DEL CASO DE ESTUDIO................................................................................................. 42 IV.2. AME HERRAMIENTA DE ASPECT MINING.......................................................................................... 44 IV.3. CASO DE ESTUDIO ........................................................................................................................ 44 IV.3.1. Descripcin de GridGain ..................................................................................................... 44 IV.3.2. Releases de GridGain .......................................................................................................... 46 IV.4. ANLISIS DE ASPECT MINING APLICADO EN GRIDGAIN ........................................................................ 47 IV.5. ANLISIS GENERAL DE LOS RESULTADOS OBTENIDOS ........................................................................... 49 IV.6. CLASIFICACIN DE SEEDS MEDIANTE CROSSCUTTING CONCERNS SORTS .................................................. 52 IV.7. PRECISIN Y RECALL...................................................................................................................... 55 IV.7.1. Definicin ............................................................................................................................ 56 IV.7.2. Combinacin de Tcnicas .................................................................................................... 57 IV.7.3. Aplicacin al Caso de Estudio ............................................................................................. 59 IV.7.4. Interpretacin de Resultados .............................................................................................. 61 IV.7.5. Anlisis de los Resultados ................................................................................................... 65 IV.8. CONCLUSIN ............................................................................................................................... 66 IV.9. LIMITACIONES .............................................................................................................................. 67 CAPTULO 5 ................................................................................................................................................. 68 ANLISIS ESTADSTICOS .............................................................................................................................. 68 V.1. MEDIDAS DE CENTRALIZACIN ........................................................................................................ 68 V.1.1. Definicin de las Medidas de Centralizacin ...................................................................... 68

1

ndice de ContenidosV.1.2. Aplicacin al Caso de Estudio ............................................................................................. 70 V.1.3. Resultados de Aplicar Anlisis de Cuartiles......................................................................... 74 V.2. ANLISIS DE OUTLIERS ................................................................................................................... 75 V.2.1. Definicin de Outliers .......................................................................................................... 76 V.2.2. Clculo de Outliers en el Caso de Estudio ........................................................................... 78 V.2.3. Resultados de Aplicar Anlisis de Outliers .......................................................................... 81 V.3. ANLISIS DE CCC EN GRIDGAIN ...................................................................................................... 83 V.4. CONCLUSIN ............................................................................................................................... 84 CAPTULO 6 ................................................................................................................................................. 86 CASO DE ESTUDIO ...................................................................................................................................... 86 VI.1. CROSSCUTTING CONCERNS TPICOS EN SISTEMAS EN PRODUCCIN ........................................................ 86 VI.2. MTRICAS A APLICAR .................................................................................................................... 87 VI.2.1. Tendencia del Fan-in Promedio .......................................................................................... 87 VI.2.2. CC (Ciclomatic Complexity) ................................................................................................. 87 VI.2.3. NCSS (Non Commenting Source Statements) ..................................................................... 88 VI.2.4. NLS (Number of Locals in Scope)......................................................................................... 88 VI.2.5. NOL (Number of Levels) ...................................................................................................... 88 VI.3. CROSSCUTTING CONCERN DE LOGGING............................................................................................. 88 VI.3.1. Tendencia del Crosscutting Concern Logging ..................................................................... 90 VI.3.2. Anlisis General de Mtricas por Mtodos ......................................................................... 90 VI.3.3. Anlisis de Resultados para el Crosscutting Concern de Logging ....................................... 91 VI.4. CROSSCUTTING CONCERN DE DATA VALIDATION ................................................................................ 91 VI.4.1. Tendencia del Crosscutting Concern Data Validation ......................................................... 92 VI.4.2. Anlisis General de Mtricas por Mtodos ......................................................................... 92 VI.4.3. Anlisis de Resultados para el Crosscutting Concern de Data Validation ........................... 93 VI.5. CROSSCUTTING CONCERN SYNCHRONIZATION .................................................................................... 94 VI.5.1. Tendencia del Crosscutting Concern Synchronization ........................................................ 95 VI.5.2. Anlisis General de Mtricas por Mtodos ......................................................................... 95 VI.5.3. Anlisis de Resultados para el Crosscutting Concern de Synchronization .......................... 97 VI.6. CONCLUSIN ............................................................................................................................... 98 CAPTULO 7 ................................................................................................................................................. 99 CONCLUSIN .............................................................................................................................................. 99 VII.1. ANLISIS DEL ESTUDIO PROPUESTO.................................................................................................. 99 VII.2. TRABAJOS FUTUROS .................................................................................................................... 100 ANEXO I .................................................................................................................................................... 102 CLASIFICACIN DE SEEDS ......................................................................................................................... 102 AI.1. SEEDS DETECTADOS CON UNIQUE METHODS ................................................................................... 102 AI.1.1. Seeds en GridGain v1.5.0 .................................................................................................. 104 AI.1.2. Seeds en GridGain v1.6.0 .................................................................................................. 107 AI.1.3. Seeds en GridGain v2.0.0 .................................................................................................. 108 AI.1.4. Seeds en GridGain v2.0.2 .................................................................................................. 109 AI.1.5. Seeds en GridGain v2.1.0 .................................................................................................. 109 AI.1.6. Seeds en GridGain v2.1.1 .................................................................................................. 111 AI.2. SEEDS DETECTADAS CON EXECUTION RELATIONS - OUTSIDE BEFORE .................................................... 111 AI.2.1. Seeds en GridGain v1.5.0 .................................................................................................. 112 AI.2.2. Seeds en GridGain v1.6.0 .................................................................................................. 114 AI.2.3. Seeds en GridGain v2.0.0 .................................................................................................. 115 AI.2.4. Seeds en GridGain v2.0.2 .................................................................................................. 116 AI.2.5. Seeds en GridGain v2.1.0 .................................................................................................. 116 AI.2.6. Seeds en GridGain v2.1.1 .................................................................................................. 117 AI.3. SEEDS DETECTADOS CON EXECUTION RELATIONS - OUTSIDE AFTER ...................................................... 117 AI.3.1. Seeds en GridGain v1.5.0 .................................................................................................. 118 AI.3.2. Seeds en GridGain v1.6.0 .................................................................................................. 119 AI.3.3. Seeds en GridGain v2.0.0 .................................................................................................. 119 AI.3.4. Seeds en GridGain v2.0.2 .................................................................................................. 120 AI.3.5. Seeds en GridGain v2.1.0 .................................................................................................. 120

2

ndice de ContenidosAI.3.6. Seeds en GridGain v2.1.1 .................................................................................................. 121 AI.4. SEEDS DETECTADOS CON EXECUTION RELATIONS - INSIDE FIRST .......................................................... 121 AI.4.1. Seeds en GridGain v1.5.0 .................................................................................................. 122 AI.4.2. Seeds en GridGain v1.6.0 .................................................................................................. 123 AI.4.3. Seeds en GridGain v2.0.0 .................................................................................................. 123 AI.4.4. Seeds en GridGain v2.0.2 .................................................................................................. 124 AI.4.5. Seeds en GridGain v2.1.0 .................................................................................................. 124 AI.4.6. Seeds en GridGain v2.1.1 .................................................................................................. 125 AI.5. SEEDS DETECTADOS CON EXECUTION RELATIONS - INSIDE LAST ........................................................... 125 AI.5.1. Seeds en GridGain v1.5.0 .................................................................................................. 126 AI.5.2. Seeds en GridGain v1.6.0 .................................................................................................. 127 AI.5.3. Seeds en GridGain v2.0.0 .................................................................................................. 127 AI.5.4. Seeds en GridGain v2.0.2 .................................................................................................. 128 AI.5.5. Seeds en GridGain v2.1.0 .................................................................................................. 128 AI.5.6. Seeds en GridGain v2.1.1 .................................................................................................. 128 AI.6. SEEDS DETECTADOS CON FAN-IN ANALYSIS ..................................................................................... 129 AI.6.1. Seeds en GridGain v1.5.0 .................................................................................................. 133 AI.6.2. Seeds en GridGain v1.6.0 .................................................................................................. 139 AI.6.3. Seeds en GridGain v2.0.0 .................................................................................................. 140 AI.6.4. Seeds en GridGain v2.0.2 .................................................................................................. 141 AI.6.5. Seeds en GridGain v2.1.0 .................................................................................................. 141 AI.6.6. Seeds en GridGain v2.1.1 .................................................................................................. 144 ANEXO II ................................................................................................................................................... 145 TABLAS Y GRFICOS DE CUARTILES, OUTLIERS Y BOX-PLOTS .................................................................. 145 AII.1. CUARTILES Y OUTLIERS PARA UNIQUE METHODS .............................................................................. 145 AII.1.1. Respecto a la Media ..................................................................................................... 145 AII.1.2. Respecto al Cuartil 1 .................................................................................................... 146 AII.1.3. Respecto al Cuartil 2 .................................................................................................... 147 AII.1.4. Respecto al Cuartil 3 .................................................................................................... 147 AII.1.5. Respecto al Lmite Superior Normal ............................................................................. 148 AII.1.6. Respecto al Lmite Superior Extremo ........................................................................... 149 AII.1.7. Box-Plot ........................................................................................................................ 149 AII.2. CUARTILES Y OUTLIERS PARA EXECUTION RELATIONS - OUTSIDE BEFORE ............................................... 149 AII.2.1. Respecto a la Media ..................................................................................................... 149 AII.2.2. Respecto al Cuartil 1 .................................................................................................... 150 AII.2.3. Respecto al Cuartil 2 .................................................................................................... 151 AII.2.4. Respecto al Cuartil 3 .................................................................................................... 151 AII.2.5. Respecto al Lmite Superior Normal ............................................................................. 152 AII.2.6. Respecto al Lmite Superior Extremo ........................................................................... 153 AII.2.7. Box-Plot ........................................................................................................................ 153 AII.3. CUARTILES Y OUTLIERS PARA EXECUTION RELATIONS - OUTSIDE AFTER ................................................. 153 AII.3.1. Respecto a la Media..................................................................................................... 153 AII.3.2. Respecto al Cuartil 1 .................................................................................................... 154 AII.3.3. Respecto al Cuartil 2 .................................................................................................... 155 AII.3.4. Respecto al Cuartil 3 .................................................................................................... 155 AII.3.5. Respecto al Lmite Superior Normal ............................................................................. 156 AII.3.6. Respecto al Lmite Superior Extremo ........................................................................... 157 AII.3.7. Box-Plot ........................................................................................................................ 157 AII.4. CUARTILES Y OUTLIERS PARA EXECUTION RELATIONS - INSIDE FIRST ..................................................... 157 AII.4.1. Respecto a la Media ..................................................................................................... 157 AII.4.2. Respecto al Cuartil 1 .................................................................................................... 158 AII.4.3. Respecto al Cuartil 2 .................................................................................................... 159 AII.4.4. Respecto al Cuartil 3 .................................................................................................... 159 AII.4.5. Respecto al Lmite Superior Normal ............................................................................. 160 AII.4.6. Respecto al Lmite Superior Extremo ........................................................................... 161 AII.4.7. Box-Plot ........................................................................................................................ 161

3

ndice de ContenidosAII.5. CUARTILES Y OUTLIERS PARA EXECUTION RELATIONS - INSIDE LAST ...................................................... 161 AII.5.1. Respecto a la Media ..................................................................................................... 161 AII.5.2. Respecto al Cuartil 1 .................................................................................................... 162 AII.5.3. Respecto al Cuartil 2 .................................................................................................... 163 AII.5.4. Respecto al Cuartil 3 .................................................................................................... 163 AII.5.5. Respecto al Lmite Superior Normal ............................................................................. 164 AII.5.6. Respecto al Lmite Superior Extremo ........................................................................... 165 AII.5.7. Box-Plot ........................................................................................................................ 165 AII.6. CUARTILES Y OUTLIERS PARA FAN-IN ANALYSIS ................................................................................ 165 AII.6.1. Respecto a la Media ..................................................................................................... 165 AII.6.2. Respecto al Cuartil 1 .................................................................................................... 166 AII.6.3. Respecto al Cuartil 2 .................................................................................................... 167 AII.6.4. Respecto al Cuartil 3 .................................................................................................... 167 AII.6.5. Respecto al Lmite Superior Normal ............................................................................. 168 AII.6.6. Respecto al Lmite Superior Extremo ........................................................................... 169 AII.6.7. Box-Plot ........................................................................................................................ 169 ANEXO III .................................................................................................................................................. 170 MTRICAS DEL CASO DE ESTUDIO ............................................................................................................ 170 AIII.1. CROSSCUTTING CONCERN LOGGING ............................................................................................... 170 AIII.1.1. Mtricas para las Seeds en GridGain v1.5.0 ................................................................ 170 AIII.1.2. Mtricas para las Seeds en GridGain v1.6.0 ................................................................ 171 AIII.1.3. Mtricas para las Seeds en GridGain v2.0.0 ................................................................ 172 AIII.1.4. Mtricas para las Seeds en GridGain v2.0.2 ................................................................ 173 AIII.1.5. Mtricas para las Seeds en GridGain v2.1.0 ................................................................ 174 AIII.1.6. Mtricas para las Seeds en GridGain v2.1.1 ................................................................ 175 AIII.2. CROSSCUTTING CONCERN DATA VALIDATION................................................................................... 176 AIII.2.1. Mtricas para las Seeds en GridGain v1.5.0 ................................................................ 176 AIII.2.2. Mtricas para las Seeds en GridGain v1.6.0 ................................................................ 176 AIII.2.3. Mtricas para las Seeds en GridGain v2.0.0 ................................................................ 177 AIII.2.4. Mtricas para las Seeds en GridGain v2.0.2 ................................................................ 177 AIII.2.5. Mtricas para las Seeds en GridGain v2.1.0 ................................................................ 177 AIII.2.6. Mtricas para las Seeds en GridGain v2.1.1 ................................................................ 177 AIII.3. CROSSCUTTING CONCERN SYNCHRONIZATION .................................................................................. 177 AIII.3.1. Mtricas para las Seeds en GridGain v1.5.0 ................................................................ 177 AIII.3.2. Mtricas para las Seeds en GridGain v1.6.0 ................................................................ 178 AIII.3.3. Mtricas para las Seeds en GridGain v2.0.0 ................................................................ 178 AIII.3.4. Mtricas para las Seeds en GridGain v2.0.2 ................................................................ 179 AIII.3.5. Mtricas para las Seeds en GridGain v2.1.0 ................................................................ 180 AIII.3.6. Mtricas para las Seeds en GridGain v2.1.1 ................................................................ 180 CAPTULO 8 ............................................................................................................................................... 182 BIBLIOGRAFA ........................................................................................................................................... 182 VIII.1. BIBLIOGRAFA ............................................................................................................................ 182

4

ndice de FigurasFIGURA I.1 - CLASIFICACIN DE SEEDS POR TCNICA. ............................................................................... 13 FIGURA I.2 - PORCENTAJE DE SEEDS CONFIRMADAS O NO, RESPECTO A UN VALOR DE REFERENCIA. ..... 15 FIGURA I.3 - PORCENTAJE DE SEEDS CONFIRMADAS O NO, RESPECTO A UN VALOR OUTLIER DE REFERENCIA. ............................................................................................................................................... 15 FIGURA II.1 - DESCOMPOSICIN DE UN CONJUNTO DE REQUERIMIENTOS Y SEPARACIN DE LOS MISMOS EN CONCERNS.............................................................................................................................. 19 FIGURA II.2 - DEFINICIN DE ASPECTJ PARA EL CONCERN DE TRAZABILIDAD. .......................................... 23 FIGURA II.3 - MIGRACIN DE UN SISTEMA LEGADO EN UNO ORIENTADO A ASPECTOS [2]...................... 25 FIGURA III.1 - IMPLEMENTACIN DEL CONCERN DE LOGGING. ................................................................. 29 FIGURA III.2 - TRAZA DE EJEMPLO. ............................................................................................................. 36 FIGURA IV.1 - EJEMPLO DE FUNCIONAMIENTO MAP/REDUCE. ................................................................. 45 FIGURA IV.2 - PRESENTACIN DE LOS RESULTADOS ARROJADOS POR LA HERRAMIENTA AME. .............. 48 FIGURA IV.3 - FRAGMENTO DE UNA TABLA CON LOS SOMBREADOS INDICADOS ANTERIORMENTE. ...... 48 FIGURA IV.4 - CANTIDAD DE SEEDS CANDIDATAS DETECTADAS POR CADA TCNICA. .............................. 49 FIGURA IV.5 - CLASIFICACIN DE SEEDS POR TCNICA. ............................................................................. 50 FIGURA IV.6 - PORCENTAJE DE SEEDS CONFIRMADAS DE ACUERDO A LA CANTIDAD DE TCNICAS QUE LAS CLASIFICARON...................................................................................................................................... 51 FIGURA IV.7 - PORCENTAJE DE FALSOS POSITIVOS DE ACUERDO A LA CANTIDAD DE TCNICAS QUE LOS CLASIFICARON. ........................................................................................................................................... 52 FIGURA IV.8 - EJEMPLOS DE PRECISIN Y RECALL...................................................................................... 56 FIGURA IV.9 - UNIN DE CONJUNTOS. ....................................................................................................... 58 FIGURA IV.10 - INTERSECCIN DE CONJUNTOS. ........................................................................................ 58 FIGURA IV.11 - DIFERENCIA DE CONJUNTOS. ............................................................................................. 58 FIGURA IV.12 - DIFERENCIA SIMTRICA DE CONJUNTOS. .......................................................................... 59 FIGURA IV.13 - PRECISIN DE CADA TCNICA Y SUS COMBINACIONES. .................................................... 62 FIGURA IV.14 - RECALL DE CADA TCNICA Y SUS COMBINACIONES. ......................................................... 62 FIGURA IV.15 - F1-SCORE DE CADA TCNICA Y SUS COMBINACIONES. ..................................................... 63 FIGURA IV.16 - TOTAL DE SEEDS EN EL CONJUNTO MUESTREADO. ........................................................... 64 FIGURA V.1 - REPRESENTACIN DEL ANLISIS DE SEEDS RESPECTO A LA MEDIA. .................................... 71 FIGURA V.2 - REPRESENTACIN DEL ANLISIS DE SEEDS RESPECTO AL CUARTIL 1. .................................. 72 FIGURA V.3 - REPRESENTACIN DEL ANLISIS DE SEEDS RESPECTO AL CUARTIL 2. .................................. 73 FIGURA V.4 - REPRESENTACIN DEL ANLISIS DE SEEDS RESPECTO AL CUARTIL 3. .................................. 74 FIGURA V.5 - PORCENTAJE DE SEEDS CONFIRMADAS O NO, RESPECTO A UN VALOR DE REFERENCIA..... 75 FIGURA V.6 - EJEMPLO DE UN BOXPLOT. .................................................................................................. 76 FIGURA V.7 - BOXPLOT PARA FAN-IN ANALYSIS. ........................................................................................ 79 FIGURA V.8 - REPRESENTACIN DEL ANLISIS DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL. ....... 80 FIGURA V.9 - REPRESENTACIN DEL ANLISIS DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO. ..... 81 FIGURA V.10 - PORCENTAJE DE SEEDS CONFIRMADAS O NO, RESPECTO A UN VALOR OUTLIER DE REFERENCIA. ............................................................................................................................................... 82 FIGURA VI.1 - TENDENCIA DEL CCC DE LOGGING. ...................................................................................... 90 FIGURA VI.2 - TENDENCIA DEL CCC DE DATA VALIDATION. ....................................................................... 92 FIGURA VI.3 - TENDENCIA DEL CCC SYNCHRONIZATION. ........................................................................... 95 FIGURA VI.4 - MTRICA NCSS DEL CCC SYNCHRONIZATION. ...................................................................... 96 FIGURA VI.5 - MTRICA CC DEL CCC DE SYNCHRONIZATION. .................................................................... 97 FIGURA AII.1 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ........................................................... 146 FIGURA AII.2 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ......................................................... 146 FIGURA AII.3 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ......................................................... 147 FIGURA AII.4 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ......................................................... 148 FIGURA AII.5 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............... 148 FIGURA AII.6 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............... 149 FIGURA AII.7 - BOX-PLOT PARA UNIQUE METHOD. ................................................................................. 149 FIGURA AII.8 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ........................................................... 150 FIGURA AII.9 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ......................................................... 150

5

ndice de FigurasFIGURA AII.10 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ....................................................... 151 FIGURA AII.11 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ....................................................... 152 FIGURA AII.12 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............. 152 FIGURA AII.13 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............. 153 FIGURA AII.14 - BOX-PLOT PARA EXECUTION RELATIONS - OUTSIDE BEFORE. ........................................ 153 FIGURA AII.15 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ......................................................... 154 FIGURA AII.16 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ....................................................... 154 FIGURA AII.17 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ....................................................... 155 FIGURA AII.18 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ....................................................... 156 FIGURA AII.19 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............. 156 FIGURA AII.20 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............. 157 FIGURA AII.21 - BOX-PLOT PARA EXECUTION RELATIONS - OUTSIDE AFTER. .......................................... 157 FIGURA AII.22 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ......................................................... 158 FIGURA AII.23 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ....................................................... 158 FIGURA AII.24 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ....................................................... 159 FIGURA AII.25 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ....................................................... 160 FIGURA AII.26 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............. 160 FIGURA AII.27 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............. 161 FIGURA AII.28 - BOX-PLOT PARA EXECUTION RELATIONS - INSIDE FIRST. ............................................... 161 FIGURA AII.29 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ......................................................... 162 FIGURA AII.30 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ....................................................... 162 FIGURA AII.31 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ....................................................... 163 FIGURA AII.32 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ....................................................... 164 FIGURA AII.33 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............. 164 FIGURA AII.34 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............. 165 FIGURA AII.35 - BOX-PLOT PARA EXECUTION RELATIONS - INSIDE LAST. ................................................ 165 FIGURA AII.36 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ......................................................... 166 FIGURA AII.37 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ....................................................... 166 FIGURA AII.38 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ....................................................... 167 FIGURA AII.39 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ....................................................... 168 FIGURA AII.40 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............. 168 FIGURA AII.41 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............. 169 FIGURA AII.42 - BOX-PLOT PARA EXECUTION RELATIONS - FAN-IN ANALYSIS. ........................................ 169

6

ndice de TablasTABLA III.1 - MTODOS NICOS ENCONTRADOS EN EL EXPERIMENTO. .................................................... 30 TABLA III.2 - CLASES, SIGNATURAS Y NMERO DE INVOCACIONES DE LOS ASPECTOS IDENTIFICADOS. .. 31 TABLA III.3 - RESULTADOS DEL ENFOQUE APLICADO A JHOTDRAW. ......................................................... 34 TABLA III.4 - RESULTADOS DE RELACIONES INSIDE-FIRST-EXECUTION. ..................................................... 37 TABLA III.5 - RESULTADOS DE RELACIONES OUTSIDE-BEFORE-EXECUTION. .............................................. 38 TABLA III.6 - TCNICAS A COMPARAR......................................................................................................... 39 TABLA III.7 - TIPO DE DATOS DE ENTRADA Y TIPO DE ANLISIS UTILIZADO............................................... 39 TABLA III.8 - GRANULARIDAD Y SNTOMAS. ............................................................................................... 40 TABLA III.9 - PARTICIPACIN DEL USUARIO. .............................................................................................. 40 TABLA IV.1 - CLASIFICACIN DE SEEDS POR TCNICAS. ............................................................................. 50 TABLA IV.2 - CLASIFICACIN DE SEEDS POR CANTIDAD DE TCNICAS. ...................................................... 51 TABLA IV.3 - CLASIFICACIN DE FALSOS POSITIVOS POR CANTIDAD DE TCNICAS. .................................. 52 TABLA IV.4 - RESUMEN DE RESULTADOS DE LA CLASIFICACIN DE SEEDS. ............................................... 54 TABLA IV.5 - CLCULO DE PRECISIN Y RECALL. ........................................................................................ 60 TABLA IV.6 - CLCULO DE F1-SCORE. ......................................................................................................... 61 TABLA IV.7 - CLASIFICACIN DE COMBINACIONES DE TCNICAS. ............................................................. 65 TABLA V.1 - VALORES OBTENIDOS PARA LAS MEDIDAS DE CENTRALIZACIN........................................... 70 TABLA V.2 - ANLISIS DE SEEDS RESPECTO A LA MEDIA. ........................................................................... 71 TABLA V.3 - ANLISIS DE SEEDS RESPECTO AL CUARTIL 1. ......................................................................... 72 TABLA V.4 - ANLISIS DE SEEDS RESPECTO AL CUARTIL 2. ......................................................................... 72 TABLA V.5 - ANLISIS DE SEEDS RESPECTO AL CUARTIL 3. ......................................................................... 73 TABLA V.6 - COMPARACIN DE LA REGLA 1,5 * IQR. ................................................................................. 77 TABLA V.7 - COMPARACIN DE LA REGLA 3 * IQR. .................................................................................... 78 TABLA V.8 - LMITES DE LOS OUTLIERS INFERIORES Y SUPERIORES PARA CADA TCNICA. ....................... 79 TABLA V.9 - CANTIDAD DE OUTLIERS POR TIPO Y POR TCNICA. ............................................................... 79 TABLA V.10 - ANLISIS DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL. ............................................ 80 TABLA V.11 - ANLISIS DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO. .......................................... 81 TABLA VI.1 - FAN-IN PARA LAS SEEDS DEL CCC DE LOGGING. .................................................................... 89 TABLA VI.2 - MTRICAS DEL CCC DE LOGGING. .......................................................................................... 91 TABLA VI.3 - FAN-IN PARA LAS SEEDS DEL CCC DATA VALIDATION. .......................................................... 91 TABLA VI.4 - MTRICAS DEL CCC DE DATA VALIDATION. ........................................................................... 93 TABLA VI.5 - FAN-IN PARA LAS SEEDS DEL CC SYNCHRONIZATION. ........................................................... 94 TABLA VI.6 - MTRICAS DEL CCC SYNCHRONIZATION. ............................................................................... 96 TABLA AI.1 - VALOR DE FAN-IN PARA LAS SEEDS DETECTADAS CON UNIQUE METHODS EN LAS 6 VERSIONES DE GRIDGAIN. ........................................................................................................................ 104 TABLA AI.2 - VALOR DE FAN-IN PARA LAS SEEDS DETECTADAS CON EXECUTION RELATIONS - OUTSIDE BEFORE EN LAS 6 VERSIONES DE GRIDGAIN. ........................................................................................... 112 TABLA AI.3 - VALOR DE FAN-IN PARA LAS SEEDS DETECTADAS CON EXECUTION RELATIONS - OUTSIDE AFTER EN LAS 6 VERSIONES DE GRIDGAIN. .............................................................................................. 118 TABLA AI.4 - VALOR DE FAN-IN PARA LAS SEEDS DETECTADAS CON EXECUTION RELATIONS - INSIDE FIRST EN LAS 6 VERSIONES DE GRIDGAIN. ......................................................................................................... 122 TABLA AI.5 - VALOR DE FAN-IN PARA LAS SEEDS DETECTADAS CON EXECUTION RELATIONS - INSIDE LAST EN LAS 6 VERSIONES DE GRIDGAIN. ......................................................................................................... 126 TABLA AI.6 - VALOR DE FAN-IN PARA LAS SEEDS DETECTADAS CON FAN-IN ANALYSIS EN LAS 6 VERSIONES DE GRIDGAIN. ........................................................................................................................ 133 TABLA AII.1 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ............................................................. 146 TABLA AII.2 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ........................................................... 146 TABLA AII.3 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ........................................................... 147 TABLA AII.4 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ........................................................... 147 TABLA AII.5 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ................. 148 TABLA AII.6 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER................. 149 TABLA AII.7 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ............................................................. 150 TABLA AII.8 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ........................................................... 150

7

ndice de TablasTABLA AII.9 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ........................................................... 151 TABLA AII.10 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ......................................................... 151 TABLA AII.11 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............... 152 TABLA AII.12 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............... 153 TABLA AII.13 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ........................................................... 154 TABLA AII.14 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ......................................................... 154 TABLA AII.15 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ......................................................... 155 TABLA AII.16 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ......................................................... 155 TABLA AII.17 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............... 156 TABLA AII.18 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............... 157 TABLA AII.19 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ........................................................... 158 TABLA AII.20 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ......................................................... 158 TABLA AII.21 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ......................................................... 159 TABLA AII.22 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ......................................................... 159 TABLA AII.23 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............... 160 TABLA AII.24 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............... 161 TABLA AII.25 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ........................................................... 162 TABLA AII.26 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ......................................................... 162 TABLA AII.27 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ......................................................... 163 TABLA AII.28 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ......................................................... 163 TABLA AII.29 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............... 164 TABLA AII.30 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............... 165 TABLA AII.31 - CLASIFICACIN DE SEEDS RESPECTO A LA MEDIA. ........................................................... 166 TABLA AII.32 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 1. ......................................................... 166 TABLA AII.33 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 2. ......................................................... 167 TABLA AII.34 - CLASIFICACIN DE SEEDS RESPECTO AL CUARTIL 3. ......................................................... 167 TABLA AII.35 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR NORMAL OUTLIER. ............... 168 TABLA AII.36 - CLASIFICACIN DE SEEDS RESPECTO AL LMITE SUPERIOR EXTREMO OUTLIER............... 169

8

Agradecimientos

A mis viejos, mi hermano, mi novia y mis amigos. A Claudia y Esteban por el apoyo constante. A los que ya no estn y todos los que de una u otra forma me han sabido acompaar todos estos aos. Sebastian Bisbal.

A mi familia, mi novia y mis amigos. A todas aquellas personas que me alentaron y formaron parte de esta aventura. A mis directores, Claudia Marcos y Esteban Abait. Sin todos ustedes no hubiera sido posible Juan Pablo Cassano

9

Captulo 1 Introduccin

I.1.

Mantenimiento de Sistemas de Software

Los sistemas de software actuales se encuentran en constante evolucin. Esto se debe a la necesidad de no quedar obsoletos ante las caractersticas que los clientes desean que el mismo posea. Estas modificaciones producen que diferentes mdulos del sistema se vayan transformando, haciendo que sus comportamientos difieran del objetivo inicial para el cual fueron creados debido a la necesidad de adaptarse rpidamente a los cambios. Los problemas surgen cuando la funcionalidad que requiere ser modificada no se encuentra debidamente centralizada en un nico componente, y para cumplir con el nuevo requerimiento se deben realizar modificaciones en varios componentes del sistema. Estos requerimientos cuya funcionalidad es transversal a varios mdulos, se denominan crosscutting concerns [7]. Ejemplos tpicos de crosscutting concerns incluyen caching de datos, sincronizacin de mtodos o funciones, persistencia de datos, entre otros. El principal problema que producen los crosscutting concerns, es que cada modificacin en alguna funcionalidad ocasiona un gran costo para llevar a cabo el cambio requerido [7]. Esta situacin hace que se genere cdigo scattering y tangling (cdigo disperso y/o enredado) [9] impactando en el diseo y en el desarrollo del software de muchas maneras: pobre trazabilidad, menor productividad, menor reutilizacin de cdigo, mala calidad y difcil evolucin. La programacin orientada a aspectos (POA) [10], ofrece mecanismos de programacin para tratar los crosscutting concerns que pueden ser modularizados de manera similar a las unidades de la descomposicin principal. En lugar de distribuir el cdigo que implementa un crosscutting concern a travs de las clases de un sistema, es posible abstraer el comportamiento en una nica unidad de programacin denominada aspecto [1]. El beneficio que presenta la POA, es un mayor grado de modularizacin y reutilizacin de componentes que ayudan en la reduccin de tiempos y costos de desarrollo, como

10

Introduccinas tambin mejoran la flexibilidad, el mantenimiento, la productividad y la calidad del software [7]. Para aprovechar los beneficios que provee la POA en sistemas existentes, es necesario migrar dichos sistemas hacia su equivalente orientado a aspectos y restructurarlos de manera continua. Sin embargo, aplicar manualmente tcnicas orientadas a aspectos a un sistema legado es un proceso difcil y tendiente al error [2], por lo que para este proceso se aplican tcnicas de Aspect Mining y Aspect Refactoring [11]. Aspect mining es la actividad de descubrir desde el cdigo fuente o las trazas de ejecucin de una aplicacin, aquellos crosscutting concerns que podran ser encapsulados como aspectos del nuevo sistema. Aspect refactoring es la actividad de transformar los aspectos candidatos identificados en el cdigo orientado a objetos en aspectos reales en el cdigo fuente. Debido al gran tamao de estos sistemas, a la complejidad de su implementacin, a la falta de documentacin y al conocimiento sobre el mismo, es que existe la necesidad de contar con herramientas y tcnicas que ayuden a los desarrolladores a localizar y documentar los crosscutting concerns presentes en esos sistemas. Ejemplos de tcnicas de Aspect Mining son: Unique Method [3], Fan-In Analysis [4] y Execution Relations [25] entre otras.

I.2.

Tcnicas de Aspect Mining

Aspect mining busca crosscutting concerns en cdigo no orientado a aspectos. Estos concerns, posiblemente, podrn ser mejorados mediante la aplicacin de soluciones orientadas a aspectos, o ser documentados con el propsito de facilitar la comprensin de los programas. Aspect mining implica la bsqueda de elementos de cdigo fuente que pertenecen a la implementacin de un crosscutting concern, o que forman parte de la extensin de un concern. Los elementos de cdigo se referencian como seeds (semillas) [20]. Existe una variedad de tcnicas con diferentes caractersticas que identifican crosscutting concerns. Mientras que algunas tcnicas descubren aspectos a nivel de mtodos, otras trabajan a una granularidad ms fina, considerando las sentencias individuales o fragmentos de cdigo como parte de los aspectos candidatos. Tambin se diferencian entre las que buscan cdigo tangled (mezclado) y las que buscan cdigo scattered (disperso). Algunas de las tcnicas existentes para dar soporte a aspect mining, se basan en heursticas para encontrar cdigo duplicado disperso (scattered) y otras buscan seeds que se implementan como un nico mtodo que se llama desde un nmero generalizado de lugares, identificando cdigo tangled.

11

IntroduccinOtro criterio importante es el tipo de anlisis que realizan, ya sea esttico o dinmico. En el primero de ellos, el anlisis se hace en base a los datos de entrada del cdigo, mientras que el anlisis dinmico se realiza a partir de la ejecucin del mismo, obteniendo trazas del programa que posteriormente sern evaluadas para encontrar patrones de ejecucin peridica. A pesar que las tcnicas de aspect mining descubren crosscutting concerns que potencialmente podran convertirse en aspectos [6], existen algunos problemas que no han sido tratados con profundidad: La decisin sobre qu es un crosscutting concern depende del desarrollador encargado de evaluar los resultados (seeds) de la tcnica aplicada al sistema legado. Cuanto ms grande es la cantidad de resultados arrojados por la tcnica, ya sea por la magnitud del sistema o por la baja calidad de su diseo, ms costosa es la tarea del desarrollador para evaluar dichos resultados en la bsqueda de crosscutting concerns. Cada tcnica de aspect mining realiza la bsqueda de seeds candidatas en base a diferentes caractersticas del sistema. Unique Methods [3] identifica crosscutting concerns buscando en mtodos nicos, mtodos sin valor de retorno que implementan un mensaje que no es implementado por ningn otro mtodo; Fan-In Analysis [4], identifica crosscutting concerns midiendo el nivel de dispersin del cdigo (scattering); por ltimo, Execution Relations [25] es un enfoque dinmico para el anlisis de aspectos basado en las trazas de ejecucin. Por lo que los resultados obtenidos con una tcnica pueden diferir considerablemente de los obtenidos con otra. El desarrollador encargado del estudio de los resultados no puede valerse de estrategias que permitan definir si un resultado corresponde a un crosscutting concern o no. Por lo tanto, no hay una respuesta afirmativa o negativa a la pregunta de si un concern identificado es adecuado para llevarlo a una refactorizacin orientada a aspectos, esta decisin queda sujeta al criterio subjetivo del evaluador. Esta medida debe tomarse para cada seed reportada por la tcnica, lo que lleva a un considerable consumo de tiempo para la realizacin de dicha tarea. Por otra parte hay un gran dficit de benchmarks que permitan observar los crosscutting concerns existentes sobre sistemas en produccin (solo se puede nombrar a HSQL, como uno de ellos), en cambio, existen algunos ya realizados para aplicaciones acadmicas (por ejemplo sobre JHotdraw [12], HealthWatcher [13]).

12

Introduccin

I.3.

Anlisis de Tcnicas de Aspect Mining en un Sistema de Produccin

Existen numerosos trabajos donde diferentes tcnicas de aspect mining se utilizan en un caso de estudio y se evalan sus resultados, pero en general estos corresponden a aplicaciones acadmicas (como por ejemplo JHotdraw [12]) las cuales no representan una gran complejidad por ser casos de estudio pequeos y con buenos diseos. Es por esta razn que el presente trabajo consiste en la bsqueda de crosscutting concerns en un sistema de software en produccin. Para esto se eligi un sistema open source, desarrollado en Java, de gran uso en el mercado, con un crecimiento importante debido a sus prestaciones a los usuarios y siendo muy utilizado en el campo del grid computing, llamado GridGain [8]. Con el objetivo de estudiar y comparar varias tcnicas de aspect mining, cada una con caractersticas particulares, y poder estudiar las transformaciones que un concern puede sufrir en su cdigo durante el tiempo de vida de un sistema, se tomaron seis versiones consecutivas del cdigo fuente del sistema GridGain sobre las cuales se aplicaron un conjunto de seis tcnicas de aspect mining. Este estudio consisti en el anlisis de los resultados de las tcnicas de forma cualitativa, clasificacin de las seeds encontradas y comparacin de los resultados de las tcnicas que identifican el mismo tipo de crosscutting concerns (crosscutting concern sorts). Adems, sobre la distribucin de las seeds resultantes se realiz un estudio estadstico, para determinar cmo se agrupan y as saber si es posible introducir mejoras a las tcnicas que permitan obtener resultados de mayor calidad (reduciendo la cantidad de falsos positivos).

Figura I.1 - Clasificacin de Seeds por tcnica.

13

IntroduccinConjuntamente, se analizaron los problemas que fueron surgiendo durante todo el proceso para recabar beneficios y dificultades con los que un desarrollador se puede encontrar a la hora de migrar un sistema existente al paradigma orientado a aspectos. En cuanto a los estudios realizados, primero se aplicaron tres tcnicas de aspect mining como Unique Methods, Fan-In Analysis y Execution Relations (en sus cuatro variantes) al cdigo bajo anlisis en seis releases del mismo, las seeds resultantes fueron analizadas manualmente de forma individual para confirmarlas o clasificarlas como falsos positivos. En la Figura I.1 se brinda una visin de los resultados obtenidos sobre las 276 seeds presentes en el sistema. La figura muestra cuntas fueron identificadas por cada tcnica y a su vez cuntas de stas fueron clasificadas como seeds confirmadas o falsos positivos. Con los valores obtenidos se realizaron los siguientes anlisis: o Se catalog cada seed en uno de los cuatro tipos bsicos de crosscutting concern sort (Redirection Layer, Contract Enforcement, Consistent Behavior y Role Superimposition) con el fin de dar una definicin atmica de la funcionalidad de cada seed y ver cuntas de cada tipo se encuentran en el sistema. Las tcnicas de aspect mining utilizadas en este trabajo identifican seeds del tipo Consistent Behavior y Contract Enforcement, sin embargo en el estudio se pudo determinar que varias seeds resultantes se clasificaron como Role Superimposition o Redirection Layer. o Se realiz una comparacin de los resultados de cada tcnica. Encontrando que Fan-In Analysis fue la tcnica que ms seeds detect debido a su simple criterio de bsqueda. Siendo a la vez la tcnica que ms seeds confirmadas tuvo, como tambin la que ms falsos positivos detect. o Se hizo un estudio de combinaciones de tcnicas aplicando Unin [41], Interseccin [42], Diferencia [43] y Diferencia Simtrica [44], aplicando mtricas de precisin y recall para evaluar la mejor composicin de tcnicas que ayude a obtener los mejores resultados de aspect mining. Del anlisis realizado, Unique Method Fan-In Analysis fue la combinacin con precisin optima ya que confirm el 100% de las seeds que detect, aunque su recall fue de slo el 12,1%. Tambin se concluy que para detectar todas las seeds confirmadas en el sistema, la combinacin ideal fue Unique Method Execution Relations Fan-In Analysis ya que detect todas las seeds confirmadas de la aplicacin (recall optimo), pero para esto tuvo que analizar la totalidad de las mismas

14

Introduccin(incluyendo los falsos positivos), causando que la precisin se vea disminuida al 62,7%.

Figura I.2 - Porcentaje de seeds confirmadas o no, respecto a un valor de referencia.

Siguiendo con el objetivo de mejorar los resultados arrojados por las tcnicas de aspect mining, se realiz un anlisis cualitativo de los valores encontrados, aplicando anlisis estadsticos de medidas de centralizacin y outliers. o Se estudi la distribucin de las seeds respecto a su valor de fan-in de acuerdo a distintas medidas aritmticas de referencia como los cuartiles, cuyo resumen de resultados puede verse en la Figura I.2. El estudio demostr que para el caso de estudio las seeds que se encuentran por encima de las medidas de referencia ms altas son las que engloban un conjunto de seeds con mayores probabilidades de ser confirmadas.

Figura I.3 - Porcentaje de seeds confirmadas o no, respecto a un valor outlier de referencia.

15

Introduccin

o El anlisis de outliers como puede verse en la figura I.3 permiti validar tambin que la mayora de las seeds que alcanzan a la definicin de outliers superiores son seeds confirmadas que pueden pertenecer a un crosscutting concern. Por ltimo, a partir de las seeds reportadas por las tcnicas, se identificaron los crosscutting concerns en el cdigo y se tomaron tres de ellos (Logging, Data Validation Synchronization) como caso de estudio, los cuales fueron analizados durante seis versiones del cdigo para estudiar su evolucin de la siguiente forma:

o Se analiz la tendencia del Fan-in promedio de las seeds pertenecientes a cada crosscutting concern calculando la mtrica para las seis versiones del cdigo. Con ste estudio se puede ver la cantidad de llamados a los mtodos del concern y as ver su evolucin. Para los tres crosscutting concern se pudo observar que la tendencia de los mismos fue en aumento en el tiempo, aunque ms marcado en el de Logging y Data Validation. o Se realiz una medicin analtica de la complejidad que los crosscutting concerns pudieron sufrir en el transcurso de las seis versiones de GridGain. Para esto se aplicaron mtricas sobre las seeds afectadas como CC (Ciclomatic Complexity), NCSS (Non Commenting Source Statements), NLS (Number of Locals in Scope) y NOL (Number of Levels). El estudio expuso que el crosscutting concern de Synchronization fue el nico de los tres que present variaciones en los valores de las mtricas demostrando que el cdigo involucrado se fue volviendo ms complejo con el transcurso de las versiones.

I.4.

Organizacin del Documento

Este trabajo est organizado de la siguiente manera: En el captulo 2, se introduce al desarrollo de software orientado a aspectos, comenzando con una descripcin de la evolucin del desarrollo de software, siguiendo con los conceptos principales y lenguajes ms utilizados. En el captulo 3, se presentan y explican las tcnicas de aspect mining de inters para este trabajo.

16

Introduccin En el captulo 4, se exhibe el anlisis de los resultados de las tcnicas de forma cualitativa, clasificacin de las seeds encontradas, y comparacin de los resultados de las tcnicas. En el captulo 5, se estudia la distribucin de las seeds resultantes, realizando dos estudios: el primero, sobre medidas de centralizacin y en el segundo, se estudiaron los valores extremos utilizando outliers. En el captulo 6, se realiza un estudio analtico aplicado a tres crosscutting concerns evaluando la evolucin de los mismos en el tiempo. Por ltimo, en el captulo 7 se muestra la conclusin y los trabajos futuros obtenidos del desarrollo del proyecto

Adicionalmente, se ofrece una serie de anexos que contienen todos los clculos y tablas utilizadas en el desarrollo del estudio, los mismos se organizan de la siguiente manera: En el Anexo I, se presenta la clasificacin de las seeds detectadas con la herramienta AME para cada tcnica en las diferentes versiones de GridGain. En el Anexo II, se presentan las tablas y grficos de Cuartiles, Outliers y BoxPlots. En el Anexo III, se presentan los valores arrojados por las mtricas de CC (Ciclomatic Complexity), LOCm (Line of Code in Methods), NLS (Number Of Locals in Scope) y NOL (Number of Levels) por crosscutting concern.

17

Captulo 2 Introduccin al Desarrollo de Software Orientado a Aspectos

En el presente captulo se brindar una introduccin al desarrollo de software orientado a aspectos comenzando con una descripcin de la evolucin del desarrollo de software, siguiendo con los conceptos principales del paradigma orientado a aspectos y los lenguajes ms utilizados para este paradigma, al final del captulo se brindar una introduccin del concepto de aspect mining.

II.1.

Evolucin del Desarrollo de Software

El desarrollo de software ha evolucionado desde sus comienzos. Al principio, los sistemas se desarrollaban utilizando lenguajes que no permitan una clara separacin de conceptos; datos y comportamiento se mezclaban sin una lnea que los dividiera claramente [14]. A medida que la ingeniera de software fue creciendo, se fueron introduciendo conceptos que llevaron a una programacin de ms alto nivel: la nocin de tipos, bloques estructurados, unidades, mdulos, tipos de datos abstractos, herencia, etc. [14]. Como se puede observar, los progresos ms importantes se han obtenido aplicando tres conceptos, los cuales estn estrechamente relacionados entre s: abstraccin, encapsulamiento, y modularidad. La abstraccin permite administrar la complejidad, por medio de la concentracin en las caractersticas esenciales de una entidad, que la distinguen de cualquier otra clase de entidades. El segundo concepto, llamado encapsulamiento, permite la ubicacin fsica de caractersticas (por ejemplo, propiedades y comportamientos) en una sencilla abstraccin de caja negra que oculta su implementacin detrs de una interface pblica. El ltimo concepto, llamado modularidad, consiste en la nocin de descomponer un sistema complejo en subsistemas ms fciles de manejar, siguiendo la antigua tcnica de divide y conquista.

18

Introduccin al Desarrollo de Software Orientado a AspectosLa Programacin Orientada a Objetos (POO), favorece el encapsulamiento y la abstraccin, a travs de una entidad llamada Clase que captura tanto funcionalidad como comportamiento y estructura interna. Ya sea a travs de la POO o con otras tcnicas de abstraccin de alto nivel (como por ejemplo, programacin estructural, modular o declarativa), se logra un diseo y una implementacin que satisface la funcionalidad bsica, y con una calidad aceptable. Sin embargo, existen crosscutting concerns que no pueden encapsularse dentro de una unidad funcional, debido a que atraviesan todo el sistema, o varias partes de l. Algunos de estos conceptos son: sincronizacin, manejo de memoria, distribucin, chequeo de errores, seguridad o redes, entre otros [14].

II.2.

Separacin de Concerns

Un concern es un requisito especfico o consideracin que debe ser abordado con el fin de satisfacer el objetivo general del sistema [7]. Un sistema de software es la realizacin de un conjunto de concerns. Un sistema bancario, por ejemplo, es una realizacin de los siguientes concerns: gestin de clientes y cuenta, clculo de intereses, transacciones interbancarias, transacciones en cajeros automticos, la persistencia de todas las entidades, la autorizacin de acceso a diversos servicios, la generacin de declaraciones, la atencin al cliente, y as sucesivamente. Adems de los concerns del sistema, un proyecto de software necesita abordar los problemas del proceso, tales como comprensin, facilidad de mantenimiento, trazabilidad, y facilidad de evolucin.

Figura II.1 - Descomposicin de un conjunto de requerimientos y separacin de los mismos en concerns.

19

Introduccin al Desarrollo de Software Orientado a AspectosEs posible clasificar los concerns en dos categoras principales: concerns de la funcionalidad central, y los crosscutting concerns a nivel de sistema (los requisitos que cruzan varios mdulos). Una aplicacin tpica de una empresa puede necesitar abordar crosscutting concerns, como la autenticacin, registro, puesta en comn de recursos, administracin, funcionamiento, gestin del almacenamiento, la persistencia de datos, la seguridad, la seguridad multi-hilo, integridad de la transaccin, la comprobacin de errores, y aplicacin de polticas, por nombrar slo algunos. Todos estos concerns atraviesan varios subsistemas y deben ser tratados [7]. Al identificar el ncleo y crosscutting concerns de un sistema, es posible centrarse en cada concern por separado y reducir la complejidad general del diseo e implementacin. Para hacer esto, el primer paso consiste en descomponer el conjunto de requerimientos y separarlos en concerns. La Figura II.1 [7] utiliza la analoga de un haz de luz que pasa a travs de un prisma para ilustrar el proceso de descomposicin de los requisitos en un conjunto de concerns. Se enva un haz de luz de las necesidades a travs de un prisma identificador de concerns y en la salida se obtienen los concerns desglosados. Si bien cada requisito inicialmente parece ser una sola unidad, mediante la aplicacin del proceso de identificacin concerns, se pueden separar los requerimientos centrales y los crosscutting concerns que sean necesarios para cumplir los requisitos del cliente [16].

II.3.

Introduccin a la Programacin Orientada a Aspectos

Debido a que los lenguajes de programacin actuales carecen de mecanismos para encapsular conceptos que no forman parte de la funcionalidad bsica de los sistemas, tales como sincronizacin, distribucin, seguridad, administracin de memoria, y otros. Se produce una notable disminucin de la calidad del software final. Una de las alternativas para resolver este problema es la Programacin Orientada a Aspectos (POA) [10]. La POA es un paradigma que brinda un mayor grado de abstraccin en el desarrollo de software, permitiendo realizar una mejor separacin de concerns [18]. Corresponde aclarar que este paradigma no trata de sustituir a otros, sino que trata de complementarlos [17]. El objetivo es aumentar la modularizacin de determinados elementos que con otros paradigmas sera difcil o imposible de realizar [16]. Los problemas bsicos que intenta solucionar son [17]: Tangled Code (Cdigo Mezclado): Este problema aparece cuando el cdigo que implementa la lgica de negocio concreta de un mdulo se mezcla con cdigo para satisfacer algn crosscutting concern.

20

Introduccin al Desarrollo de Software Orientado a Aspectos

Scattered Code (Cdigo Disperso): Aparece cuando la implementacin de un concern afecta a muchos mdulos diferentes. La POA tiene como objetivo incrementar la compresibilidad, adaptabilidad y reusabilidad de componentes mediante la introduccin de una nueva unidad modular, llamada aspecto, para la especificacin de crosscutting concerns o comportamientos transversales. De esta forma, el cdigo relacionado a requerimientos no funcionales y transversales se especifica en forma separada y aislada, evitando que se mezcle y duplique por las restantes unidades de mdulos funcionales. La idea central de la POA es permitir que un programa sea construido describiendo cada concepto (o concern) separadamente [18].

II.4.

Conceptos de la POA

Un aspecto se define como un concern que no es posible encapsularlo claramente, y que se encuentra diseminado por todo el cdigo. Los aspectos son la unidad bsica de la programacin orientada a aspectos. Una definicin ms formal pertenece al creador de la POA, Gregor Kiczales, y es con la que se trabaja actualmente: Un aspecto es una unidad modular que se disemina por la estructura de otras unidades funcionales. Los aspectos existen tanto en la etapa de diseo como en la de implementacin. Un aspecto de diseo es una unidad modular del diseo que se entremezcla en la estructura de otras partes del diseo. Un aspecto de implementacin es una unidad modular del programa que aparece en otras unidades modulares del programa [14]. Se deduce de esta definicin, que los aspectos de una aplicacin son aquellos mdulos que encapsulan crosscutting concerns, es decir, los mdulos que estn diseminados por el resto de las unidades funcionales. Es de resaltar que la definicin de aspecto no hace referencia al tipo de programacin en la que se implemente (orientada a objetos o procedural), por lo que el concepto, como tal, aplica a ambos [18]. En una primera instancia puede ser fcil asociar a aspectos los servicios comunes, incluyendo aspectos de auditoria (logging), aspectos de seguridad, aspectos de concurrencia, etc. Sin embargo, el concepto es mucho ms genrico, las herramientas que soportan POA permiten utilizar tanto las clases como aspectos como unidades para desarrollar un sistema, lo que permite total generalidad en el uso de este paradigma. Los elementos bsicos que se utilizan en la programacin orientada a aspectos son los siguientes:

21

Introduccin al Desarrollo de Software Orientado a AspectosWeaving (Entretejido): Los lenguajes orientados a aspectos definen una nueva unidad de programacin de software para encapsular las funcionalidades diseminadas por todo el cdigo (los aspectos). Sin embargo, componentes y aspectos deben interactuar. En la ejecucin del programa, finalmente, los aspectos debern estar insertados dentro de los componentes. Para ello ser necesario definir claramente cmo ser sta estrategia de insercin. En la terminologa de POA, este proceso se denomina entretejido, ya que puede pensarse que aspectos y componentes deben entretejerse para formar finalmente un cdigo ejecutable. Este proceso encargado de unir los aspectos con el resto de la aplicacin, se puede realizar en distintos momentos [17]: En la fase de pre-compilacin. En la fase de compilacin. En la fase de ejecucin.

Los dos primeros mecanismos se denominan estticos, son compiladores y preprocesadores que generan un ejecutable del programa junto con el cdigo de los aspectos. El ltimo pertenece a mecanismos dinmicos y se valen de los eventos que suceden durante la ejecucin de un programa para incorporar los mecanismos que decidan la aplicacin de los aspectos. Para poder realizar el entretejido entre aspectos y componentes, es necesario definir o declarar ciertos Join Points (puntos de enlace). Son los lugares del cdigo en los que ste se debe modificar, incorporando los comportamientos adicionales especificados en los aspectos y estos pueden ser por ejemplo, llamadas a mtodos, constructores o destructores, lanzamiento de excepciones, etc. Luego los Point cut (puntos de corte) son un predicado o sentencia cumplida por uno o varios puntos de enlace en el cdigo. Por ejemplo Todas las llamadas al mtodo X, Todos las llamadas a mtodos con nombre Set* o Todos los constructores de clases en el paquete Xm entre otros. Se denomina Advice (Consejo) [17] a la entidad que indica qu aspecto corresponde aplicar cuando el flujo de ejecucin pasa por un punto de enlace que cumple las condiciones de algn punto de corte. Hay 3 tipos de Advice: Before: se ejecutan justo antes del join-point. After: se ejecutan justo despus del join-point. Around: se ejecutan en lugar del join-point y pueden decidir si ejecutarlo o no. 22

Introduccin al Desarrollo de Software Orientado a Aspectos

El desarrollo de software orientado a aspectos pretende evitar los problemas de mantenimiento ocasionados por la dispersin y los enredos (scattering and tangling), haciendo uso de la modularizacin de aspectos. Como un ejemplo simple [24], en la Figura II.2 se considera una implementacin del concern de trazabilidad en ASPECTJ (lenguaje orientado a aspectos que se introducir en la siguiente seccin) en este ejemplo se puede observar cmo la POA aborda el concern y cmo se aplican los conceptos introducidos anteriormente.

Figura II.2 - Definicin de AspectJ para el concern de trazabilidad.

La sentencia de declaracin en la parte superior del cuerpo del aspecto asegura que todas las clases contenidas en un paquete en particular extienden la interfaz Traceable (lnea 4). La interfaz de trazabilidad en s es provista en las lneas posteriores, incluyendo una implementacin predeterminada de ella. De esta manera, el aspecto extiende mltiples clases, capturando estticamente la naturaleza crosscutting de las trazas. El resto de los aspectos capturan el crosscutting dinmico mediante un pointcut (lnea 20), que intercepta todas las llamadas a los mtodos pblicos, y alrededor de los advice (lnea 25), que emiten una cadena de caracteres con la signatura del mtodo en ejecucin, justo antes y justo despus de la misma. El aspecto puede ser tejido en el cdigo base, quedando este ltimo desacoplado del concern de trazabilidad. Esto ayuda a reducir enredos en el cdigo 23

Introduccin al Desarrollo de Software Orientado a Aspectosbase y proporciona una implementacin sin dispersin del crosscutting concern. Por otra parte, una pequea reduccin en el tamao del cdigo se puede lograr si el crosscutting es lo suficientemente regular (como es el caso con el concern de trazabilidad: la expresin pointcut puede cuantificar sobre todos los mtodos pblicos).

II.5.

Lenguajes Orientados a Aspectos

El soporte para este nuevo paradigma se logra a travs de una nueva clase de lenguajes, llamados lenguajes orientados a aspectos (LOA), los cuales brindan mecanismos para capturar y declarar aquellos concerns que se diseminan por todo el sistema (aspectos) [18]. Los LOA son extensiones de lenguajes convencionales que incorporan nuevos mecanismos y abstracciones para dar soporte al enfoque. As un aspecto se compone de construcciones sintcticas y semnticas especficas como los puntos de cortes, puntos de unin, avisos, introducciones. El proceso denominado entretejido compone los aspectos con las unidades funcionales. Una referencia clsica suele ser el LOA AspectJ [15]. Esta herramienta actualmente se considera la herramienta ms popular y difundida en la comunidad POA. Dado que AspectJ es una extensin de Java, todo programa vlido en Java es tambin vlido en AspectJ. Un compilador AspectJ produce clases que satisfacen la especificacin de java. Permitiendo a cualquier maquina virtual de Java (VM) ejecutar estas clases. Usando Java como lenguaje base, AspectJ toma todos los beneficios de este y hace que los programadores Java puedan entender fcilmente el lenguaje AspectJ. Este lenguaje consiste de dos partes: El lenguaje de especificacin y la implementacin del lenguaje. La parte del lenguaje de especificacin define el lenguaje en el cual se escribe el cdigo; se implementan los concerns usando el lenguaje de programacin Java, y se utiliza la extensin brindada por AspectJ para implementar el entretejido de los crosscutting concerns. La parte de la implementacin del lenguaje provee herramientas para la compilacin, debug e integracin con los ambientes de desarrollo (IDEs) [7]. AspectJ permite encapsular los crosscutting concerns de un sistema, pero es necesario definir de que manera un usuario puede obtener los concerns existentes en un sistema existente.

II.6.

Introduccin a Aspect Mining

Para que la POA cumpla su objetivo en sistemas existentes, es necesario migrarlos hacia su equivalente orientado a aspectos y restructurarlos continuamente. 24

Introduccin al Desarrollo de Software Orientado a AspectosEl proceso de migracin de un sistema legado en un sistema orientado a aspectos (Figura II.3) consta de dos pasos: el descubrimiento de los aspectos candidatos y la refactorizacin de (algunos de) estos candidatos en aspectos [2]. Esto no es una tarea trivial debido al tamao y complejidad de los sistemas de software actuales y a la falta de documentacin explcita de crosscutting concerns presentes en esos sistemas, lo que hace que el proceso sea difcil y tendiente al error [2].

Figura II.3 - Migracin de un sistema legado en uno orientado a aspectos [2].

Debido al gran tamao de estos sistemas, la complejidad de su implementacin, la falta de documentacin y conocimiento sobre el mismo, es que existe la necesidad de contar con herramientas y tcnicas que ayuden a los desarrolladores a localizar y documentar los crosscutting concerns presentes en esos sistemas. El estudio y desarrollo de tales tcnicas es el objetivo de aspect mining [2], cuya actividad es descubrir crosscutting concerns que potencialmente podran convertirse en aspectos [6]. A partir de all, estos concerns pueden ser encapsulados en nuevos aspectos del sistema (mediante la utilizacin de tcnicas conocidas como aspect refactoring [2]) o pueden documentarse con el objetivo de mejorar la comprensin del mismo. Aspect mining engloba un conjunto de tcnicas que aspiran a encontrar crosscutting concerns en los sistemas existentes, y es la direccin de las investigaciones destinadas a encontrar crosscutting concerns en aplicaciones no orientados a aspectos [20]. Una vez que los concerns han sido identificados, estos pueden ser utilizados para la comprensin de los programas o con propsitos de refactorizacin. Adems de eso, las investigaciones sobre aspect mining aumentan la comprensin de los crosscutting concerns, ya que obligan a pensar sobre las circunstancias en las que un concern debe ser implementado como un aspecto, y tambin a encontrar crosscutting concerns que estn ms all de las formas cannicas, como el logging y el manejo de errores [20].

II.6.1. Conceptos de Aspect MiningSutton y Rouvellou [19] proporcionan una discusin sobre lo que constituye un concern. Tras ellos, se toma a los concerns generalmente como "cualquier materia de

25

Introduccin al Desarrollo de Software Orientado a Aspectosinters en un sistema de software". Los concerns pueden vivir en cualquier nivel, desde los requerimientos o los casos de uso, hasta los patrones. Se distinguen los concerns por intencin y por extensin [20]: El concern por intencin se define como el objetivo de un concern. Por ejemplo, la intencin de un concern de trazabilidad, es que todos los parmetros de entrada y salida de los mtodos pblicos estn debidamente trazados. El concern por extensin, es la representacin concreta de este concern en el cdigo fuente del sistema. Por ejemplo, la extensin de un concern de trazabilidad consiste de la coleccin de todos los estados que estn actualmente generando trazas de un parmetro de mtodo determinado.

-

En aspect mining, se buscan elementos de cdigo fuente que pertenecen a la extensin de concerns que entrecrucen la estructura de modularizacin de los sistemas de software. Tales crosscutting concerns no se encuentran en una unidad de modularizacin como un solo paquete, una jerarqua de clases, una clase o un mtodo, se encuentran dispersos por todas estas unidades. A modo de ejemplo, el concern de trazabilidad afectar a muchos mtodos diferentes distribuidos sobre diferentes paquetes o clases. Una consecuencia de esta dispersin son los enredos (tangled): las unidades modulares no se pueden tratar exclusivamente con su concern principal, pero hay que tener en cuenta la implementacin de otros concerns que tambin entrecruzan su modularizacin. Aspect mining aspira encontrar en cdigo no orientado a aspectos los crosscutting concerns. Estos concerns, posiblemente, se podran mejorar mediante la aplicacin de soluciones orientadas a aspectos o pueden ser documentados con el propsito de facilitar la comprensin de los programas. Mining implica la bsqueda de elementos de cdigo fuente que pertenecen a la implementacin de un crosscutting concern, o que forman parte de la extensin de un concern. Los elementos de cdigo se referencian como seeds (semillas). Una vez que se encuentra una seed para un concern, se puede tratar de expandirla en toda la extensin del mismo, por ejemplo, por los siguientes datos o dependencias de control de flujo [20]. Aspect mining, generalmente, requiere de intervencin humana. Por lo tanto, lo que producen las herramientas de aspect mining son seeds candidatas, que pueden convertirse en seeds confirmadas (o, simplemente, seeds) si son aceptadas por un experto humano, o no-seeds si son rechazadas. A veces una no-seed tambin se conoce como un falso positivo, un resultado falso negativo es, entonces, una parte de un crosscutting concern conocido, potencialmente detectable por la tcnica, pero se perdi debido a las limitaciones inherentes del enfoque, o debido a los filtros 26

Introduccin al Desarrollo de Software Orientado a Aspectosespecficos aplicados en l. El desafo clave de aspect mining es mantener el porcentaje de seeds confirmadas en el conjunto total de las seeds candidatas lo ms alto posible, sin aumentar excesivamente el nmero de falsos negativos.

II.6.2. Evaluacin de las Tcnicas de Aspect MiningExisten dos problemas principales a la hora de evaluar la calidad de una tcnica de aspect mining [20]: El primero es que debe existir un sistema de referencia en los cuales los crosscutting concerns se conozcan, por ejemplo, porque han sido identificados por un experto. Por el momento, no existe dicho sistema de referencia. Sin embargo, un nmero creciente de investigadores de aspect mining [25, 26], estn utilizando JHotDraw como ese caso, el cual est evolucionando hacia un sistema de referencia. El segundo desafo de la evaluacin, es la decisin de qu concern es crosscutting y propenso a ser implementado como aspecto, lo cual es una tarea completamente dependiente del anlisis del experto. Por lo tanto, no hay una respuesta afirmativa o negativa a la pregunta de si un elemento identificado es parte de la implementacin de un crosscutting concern. Como consecuencia, los datos cuantitativos sobre el nmero de falsos negativos (cuntos crosscutting concerns se pierden) o falsos positivos (cuntos de los identificados en realidad no son crosscutting) tienen un elemento subjetivo a s mismo. Esto significa que una evaluacin de una tcnica de aspect mining slo en trminos de, por ejemplo, porcentajes de falsos positivos y negativos, o en trminos de precisin y recall, es una simplificacin excesiva [20]. El origen de aspect mining es relativamente reciente como rea de investigacin, por esta razn a continuacin se presentan los conceptos, y luego se presentan los enfoques ms importantes de aspect mining publicados [20].

II.6.3. Reconocimiento de AspectosKellens, Mens y Tonella [2] distinguen tres tipos principales de enfoques para el descubrimiento de aspectos: Early aspect: Tradicionalmente, el DSOA se ha centrado principalmente en la fase de implementacin durante el ciclo de vida del software. La investigacin sobre early aspect trata de descubrir los aspectos en fases tempranas del ciclo de vida del programa, tales como los requisitos y el anlisis del dominio o el diseo de la arquitectura. Identificar y gestionar early aspect no slo contribuye a 27

Introduccin al Desarrollo de Software Orientado a Aspectosmejorar la modularidad de los requerimientos y el diseo arquitectnico, sino tambin muchos early aspects finalmente encuentran su camino en el cdigo como aspectos de la aplicacin. En el contexto de los sistemas legados, donde los requerimientos y documentos de arquitectura son a menudo anticuados, obsoletos o ya no estn disponibles, estas tcnicas no se pueden aplicar y los enfoques que se centran en el cdigo fuente por lo tanto son potencialmente ms prometedoras. Browsers dedicados: Una segunda clase de enfoques son los navegadores de cdigo que ayudan a un desarrollador a navegar manualmente el cdigo fuente de un sistema para explorar crosscutting concerns. Aunque el objetivo principal de estos enfoques no es explcitamente para el aspect mining, sino para documentar y localizar los crosscutting concerns con el fin de mantener y desarrollar un sistema, estos navegadores dedicados se pueden tambin utilizar para identificar los aspectos en un sistema. Normalmente, un usuario de dicho enfoque comienza a navegar por una seed de un concern, un punto de partida en el cdigo, y utiliza el navegador para explorar ms a fondo este concern. Para ello, el navegador podr proponer otros puntos de acceso en el cdigo que se relacionan con el concern o proporcionar al usuario un lenguaje de consulta para que de forma manual pueda atravesar los concern. Ejemplos de estos enfoques son Concern graphs [19], Intensional Views [61], Aspect Browser [21], Aspect Mining Tool [10, 22] y Prism [23]. Tcnicas de aspect mining: Automatizan el proceso de descubrimiento de aspectos y proponen al usuario uno o ms aspectos candidatos. Para tal fin, razonan sobre el cdigo fuente del sistema o sobre los datos que se adquieren mediante la ejecucin o la manipulacin del cdigo.

28

Captulo 3 Tcnicas de Aspect Mining

En este capitulo se brindar una descripcin de cinco tcnicas de aspect mining. Se presentar para cada una de ellas, su intencin y un ejemplo terico de aplicacin. Sobre el final del captulo, se presentar una comparacin de las cinco tcnicas basada en ciertos criterios predefinidos.

III.1. Unique MethodsGybels y Kellens [3] estudiaron que algunas de las tcnicas existentes para dar soporte a aspect mining se basan en heursticas para encontrar cdigo duplicado disperso (tangling). Pero otros crosscutting concerns, como por ejemplo el logging y la actualizacin de cambio de estado, se implementan como un nico mtodo que se llama desde un nmero generalizado de lugares en el cdigo. Por ejemplo, el concern de logging se puede encapsular suficientemente bien con las tcnicas clsicas (por ejemplo singleton) para evitar el tangling, aunque no el scattering.

Figura III.1 - Implementacin del concern de logging.

La Figura III.1, muestra cmo sera la implementacin de este concern y el impacto sobre el resto de las clases en el sistema. Como estas implementaciones no se 29

Tcnicas de Aspect Miningcaracterizan por tener cdigo duplicado disperso, el mtodo log ser llamado de otros lugares donde se requiera registrar informacin, por lo tanto, las tcnicas de identi