Descripción del proyecto
LA EVOLUCION DEL SOFTWARE ES UNA PARTE FUNDAMENTAL DE SU PROCESO DE DESARROLLO, EN CUALQUIER PROYECTO SURGEN COSTES DE MANTENIMIENTO, UNA VEZ QUE EL SOFTWARE ESTA ¿FINALIZADO¿, FORMANDO GRAN PARTE DE LOS COSTES TOTALES DEL MISMO, COMO RESULTADO DE LAS LABORES DE MANTENIMIENTO DEL SOFTWARE, SE INCREMENTA LA ENTROPIA Y DESORDEN DEL SISTEMA Y EN CONSECUENCIA, SU ESTRUCTURA SE DEGRADA, CUANTO MENOS TIEMPO SE INVIERTE EN MEJORAR EL DISEÑO ORIGINAL, MAS TIEMPO SE NECESITA PARA ARREGLAR LOS DEFECTOS INTRODUCIDOS EN LAS PRIMERAS CORRECCIONES, POR LO QUE ES VITAL INCORPORAR AL PROCESO DE DESARROLLO DE SOFTWARE LAS TAREAS DE DETECCION Y CORRECCION DE DEFECTOS DE DISEÑO, ESTE PROYECTO TIENE COMO OBJETIVO PRINCIPAL ABORDAR ESTE PROBLEMA, PROPORCIONANDO EL SOPORTE FORMAL, METODOLOGICO Y LAS HERRAMIENTAS NECESARIAS PARA SOPORTAR EL PROCESO DE CORRECCION DE DEFECTOS DE DISEÑO, INCLUYENDO LA DEFINICION DEL PROCESO DE DETECCION, ASI COMO EL TRATAMIENTO DE PROPUESTAS DE REDISEÑO Y LA TRANSFORMACION DEL SOFTWARE PARA CUMPLIR CON LAS PROPUESTAS SUGERIDAS, EN EL CAMPO DE LA DETECCION DE DEFECTOS DE DISEÑO, AUNQUE EL PROBLEMA ES ABORDABLE DESDE DIFERENTES ESTRATEGIAS, SE MANTIENE AUN UNA FUERTE DEPENDENCIA CON EL DESARROLLADOR, LO QUE PROVOCA LA OBTENCION DE RESULTADOS MUY VARIABLES, ADEMAS, LA IDENTIFICACION DE DEFECTOS SOBRE UN SISTEMA REAL CON MILES O MILLONES DE ENTIDADES, ES UNA TAREA DIFICILMENTE ABARCABLE POR UN DESARROLLADOR EN UN TIEMPO ACEPTABLE, DE ESTE MODO, SE PLANTEA COMO OBJETIVO PRINCIPAL EL ANALISIS DE LAS TECNICAS DISPONIBLES CON EL FIN DE INTEGRARLAS Y DISEÑAR UN PROCESO DE DETECCION DE DEFECTOS DE DISEÑO SISTEMATICO Y LO MAS AUTOMATIZADO POSIBLE, LAS METRICAS, HEURISTICAS, ANALISIS DE CODIGO FUENTE Y LA DEFINICION DE RELACIONES ENTRE DEFECTOS DE DISEÑO, UNIDAS A LA PARTICIPACION DEL DESARROLLADOR CON SU EXPERIENCIA E INTUICION CONSTITUYEN BUENAS ENTRADAS DE INFORMACION PARA UN PROCESO DE DETECCION DE DEFECTOS, ESTE PROCESO, DEBE CONSTRUIRSE SOBRE LAS TECNOLOGIAS ASOCIADAS EN EL DESARROLLO DE SISTEMAS: LENGUAJES DE MODELADO, LENGUAJES DE PROGRAMACION, ENTORNOS DE DESARROLLO, CONJUNTOS DE METRICAS, ETC, COMO MARCO DE TRABAJO, SE EMPLEARA SOFTWARE REAL, ACOTANDO EL AMBITO DE APLICACION PARA HACER POSIBLE LA CONSECUCION DE LOS OBJETIVOS, UNA VEZ DETECTADOS LOS DEFECTOS DE DISEÑO, PARA TRANSFORMAR EL CODIGO APROPIADAMENTE Y ELIMINARLOS O REDUCIR SUS EFECTOS, SE EMPLEARAN REFACTORIZACIONES (TRANSFORMACIONES ESTRUCTURALES QUE SE APLICAN SOBRE UN SISTEMA PARA MODIFICAR SU DISEÑO SIN VARIAR SU COMPORTAMIENTO), LOS ENFOQUES ACTUALES EN LA AUTOMATIZACION DE REFACTORIZACIONES SE CENTRAN PRINCIPALMENTE EN LA BUSQUEDA Y LA APLICACION DE OPERACIONES INDIVIDUALES, SIN EMBARGO LA ELIMINACION DE DEFECTOS DE DISEÑO/CODIGO, SUELE IMPLICAR MAYORES MODIFICACIONES, AUNQUE EXISTEN TRABAJOS ENFOCADOS A SUGERIR ESTAS CAMBIOS, LA PLANIFICACION DE LA SECUENCIA DE REFACTORIZACIONES NECESARIA PARA EJECUTAR LA SUGERENCIA DE REDISEÑO, SE DEJA A LA RESPONSABILIDAD DEL DESARROLLADOR, OTRO DE LOS OBJETIVOS PRINCIPALES DE ESTE PROYECTO SERA, POR LO TANTO, PROPORCIONAR SOPORTE A LA ELABORACION Y EJECUCION AUTOMATICA DE PLANES DE REFACTORIZACION, QUE DEFINIREMOS COMO LA ESPECIFICACION DE UNA SECUENCIA DE REFACTORIZACIONES QUE CONCUERDA CON UNA PROPUESTA DE REDISEÑO DE UN SISTEMA, DE FORMA QUE DICHA SECUENCIA PUEDA SER EJECUTADA DE FORMA AUTOMATICA PARA MODIFICAR EL SISTEMA, CON EL FIN DE OBTENER EL SISTEMA QUE RESPONDA A LA PROPUESTA DE REDISEÑO, Mantenimiento\evolución\refactoring\detección de oportunidades de refactorin\corrección de defectos\planes de refactorización