16 research outputs found

    Automated Workarounds from Java Program Specifications based on SAT Solving

    Get PDF
    The failures that bugs in software lead to can sometimes be bypassed by the so-called workarounds: when a (faulty) routine fails, alternative routines that the system offers can be used in place of the failing one, to circumvent the failure. Existing approaches to workaround-based system recovery consider workarounds that are produced from equivalent method sequences, automatically computed from user-provided abstract models, or directly produced from user-provided equivalent sequences of operations. In this paper, we present two techniques for computing workarounds from Java code equipped with formal specifications, that improve previous approaches in two respects. First, the particular state where the failure originated is actively involved in computing workarounds, thus leading to repairs that are more state specific. Second, our techniques automatically compute workarounds on concrete program state characterizations, avoiding abstract software models and user-provided equivalences. The first technique uses SAT solving to compute a sequence of methods that is equivalent to a failing method on a specific failing state, but which can also be generalized to schemas for workaround reuse. The second technique directly exploits SAT to circumvent a failing method, building a state that mimics the (correct) behaviour of a failing routine, from a specific program state too. We perform an experimental evaluation based on case studies involving implementations of collections and a library for date arithmetic, showing that the techniques can effectively compute workarounds from complex contracts in an important number of cases, in time that makes them feasible to be used for run-time repairs. Our results also show that our state-specific workarounds enable us to produce repairs in many cases where previous workaround-based approaches are inapplicable.Fil: Uva, Marcelo Ariel. Universidad Nacional de Río Cuarto; ArgentinaFil: Ponzio, Pablo Daniel. Consejo Nacional de Investigaciones Científicas y Técnicas. Centro Científico Tecnológico Conicet - Córdoba; Argentina. Universidad Nacional de Río Cuarto; ArgentinaFil: Regis, Germán. Universidad Nacional de Río Cuarto; ArgentinaFil: Aguirre, Nazareno Matias. Consejo Nacional de Investigaciones Científicas y Técnicas. Centro Científico Tecnológico Conicet - Córdoba; Argentina. Universidad Nacional de Río Cuarto; ArgentinaFil: Frias, Marcelo Fabian. Consejo Nacional de Investigaciones Científicas y Técnicas. Centro Científico Tecnológico Conicet - Córdoba; Argentina. Instituto Tecnológico de Buenos Aires; Argentin

    Generación automática de código RMI a partir del modelo de análisis utilizando reglas relations/QVT

    Get PDF
    Este trabajo realiza una contribución tendiente a la mejora del proceso de desarrollo de software, siguiendo la filosofía de Model Driven Architecture (MDA). Dentro de esta línea de investigación en trabajos previos [1,2,10] se definió la transformación del modelo de CU de sistema al modelo de análisis y del modelo de análisis al modelo de diseño considerando la tecnología de implementación Remote Method Invocation (RMI). Para lograr estas transformaciones se especificaron una serie reglas de transformación Query/View/Trasmormation (QVT) que permitieron establecer la correspondencia entre los modelos fuentes y destinos correspondientes. Los modelo de análisis y diseño obtenidos como resultado de aplicar las distintas transformaciones QVT (modelos objetivos), atañen a modelos UML correspondiente a los diagrama de clases de análisis y diseño respectivamente. En este trabajo se pretende la generación automática de código, tomando como entrada el modelo de diseño resultado y haciendo uso de la herramienta Acceleo que es un generador de código que transforma los modelos en código. El objetivo final es la realización de aportes tendientes a lograr un producto de software siguiendo los principios de abstracción, automatización y estandarización establecidos por MDA, de manera totalmente automática, o bien automatizando el proceso de transformación lo mayormente posible.Eje: Ingeniería de SoftwareRed de Universidades con Carreras en Informática (RedUNCI

    Causas que producen que los estudiantes de Computación retrasen la culminación de su trabajo final

    Get PDF
    Una de las etapas más importante en el desarrollo de un producto de software es la planificación temporal del proyecto, siendo esta una actividad que distribuye el esfuerzo estimado, a lo largo de la duración prevista del proyecto, asignando dicho esfuerzo a las tareas específicas de Ingeniería de Software. Los factores principales a considerar son la complejidad, el tamaño y el grado de incertidumbre del proyecto. Estos conceptos y muchos otros más asociados y relacionados a los mismos, se brindan a los estudiantes de las carreras de computación, y articulados con los contenidos de todas las asignaturas, dan una acaba formación para que los mismos sean capaces de planificar el desarrollo del trabajo final de su carrera de grado, ya sea para Analista en Computación, o para Licenciatura en Ciencias de la Computación. Empero de esta situación, se visualiza que un importante número de estudiantes no culminan sus estudios y no obtienen su título de grado, principalmente porque no finalizan su trabajo final. En este trabajo se muestra una propuesta avocada a detectar y analizar las causas que producen los retrasos en la culminación del trabajo final.Eje: Educación en TecnologíaRed de Universidades con Carreras en Informática (RedUNCI

    Propuesta para documentar trabajos finales utilizando metodologías ágiles

    Get PDF
    La aplicación de metodologías ágiles en proyectos de desarrollo de software ha sido muy significativa y creciente en los últimos años. En el informe World Quality Report (WQR) presentado por la consultora Sogeti, Capgemini y HP en 2013 sobre inversiones de las empresas en Tecnologías de la Información se indica que el 83% de las empresas usan metodologías ágiles para el desarrollo de sus aplicaciones debido a la versatilidad ante los cambios. Un modelo de desarrollo ágil, define un proceso incremental, donde la comunicación entre clientes y desarrolladores es constante y colaborativa. En los ámbitos académicos, en un principio, fue resistida la aplicación de estas nuevas metodologías. La informalidad y la aparente escasez en la documentación fueron los puntos más cuestionados. En este trabajo se presenta una plantilla para documentar proyectos finales de carreras de computación, siguiendo un desarrollo ágil. La misma está destinada a alumnos avanzados de carreras de informática que estén iniciando su trabajo final de carrera. Se pretende realizar aportes para establecer un nexo entre los postulados fundacionales de las metodologías ágiles y la realidad que enfrenta un estudiante sin experiencia al momento de iniciar su trabajo de fin de carrera.Eje: Educación en TecnologíaRed de Universidades con Carreras en Informática (RedUNCI

    Hacia una integración y articulación de contenidos en carreras de Ciencias de la Computación : Experiencia desarrollada en el último año de la carrera de Analista en Computación de la Universidad Nacional de Río Cuarto

    Get PDF
    La enseñanza de las Ciencias de la Computación no es ajena a las problemáticas que se manifiestan en otras disciplinas. La integración y articulación de contenidos se ha planteado desde un principio como un elemento fundamental para la formación del profesional informático. Desde el año 2006 hasta la fecha, el cuerpo docente autor de este artículo, ha realizado una serie de trabajos con el objetivo de mejorar los procesos de enseñanza-aprendizaje dentro de la carrera de Analista en Computación dictada en el Departamento de Computación, perteneciente a la Facultad de Ciencias Exactas, Físico-Químicas y Naturales de la Universidad Nacional de Río Cuarto. En este trabajo se presenta una experiencia orientada a articular los contenidos curriculares entre las asignaturas Análisis y Diseño de Sistemas, Base de Datos y Diseño de Algoritmos pertenecientes al último año de la carrera de Analista en Computación. La propuesta consiste en el diseño y ejecución de de un proyecto-taller integrador en donde cada asignatura pueda llevar a la práctica y en forma conjunta y coordinada, los conceptos más relevantes de su currícula.Red de Universidades con Carreras en Informática (RedUNCI

    Causas que producen que los estudiantes de Computación retrasen la culminación de su trabajo final

    Get PDF
    Una de las etapas más importante en el desarrollo de un producto de software es la planificación temporal del proyecto, siendo esta una actividad que distribuye el esfuerzo estimado, a lo largo de la duración prevista del proyecto, asignando dicho esfuerzo a las tareas específicas de Ingeniería de Software. Los factores principales a considerar son la complejidad, el tamaño y el grado de incertidumbre del proyecto. Estos conceptos y muchos otros más asociados y relacionados a los mismos, se brindan a los estudiantes de las carreras de computación, y articulados con los contenidos de todas las asignaturas, dan una acaba formación para que los mismos sean capaces de planificar el desarrollo del trabajo final de su carrera de grado, ya sea para Analista en Computación, o para Licenciatura en Ciencias de la Computación. Empero de esta situación, se visualiza que un importante número de estudiantes no culminan sus estudios y no obtienen su título de grado, principalmente porque no finalizan su trabajo final. En este trabajo se muestra una propuesta avocada a detectar y analizar las causas que producen los retrasos en la culminación del trabajo final.Eje: Educación en TecnologíaRed de Universidades con Carreras en Informática (RedUNCI

    Causas que producen que los estudiantes de Computación retrasen la culminación de su trabajo final

    Get PDF
    Una de las etapas más importante en el desarrollo de un producto de software es la planificación temporal del proyecto, siendo esta una actividad que distribuye el esfuerzo estimado, a lo largo de la duración prevista del proyecto, asignando dicho esfuerzo a las tareas específicas de Ingeniería de Software. Los factores principales a considerar son la complejidad, el tamaño y el grado de incertidumbre del proyecto. Estos conceptos y muchos otros más asociados y relacionados a los mismos, se brindan a los estudiantes de las carreras de computación, y articulados con los contenidos de todas las asignaturas, dan una acaba formación para que los mismos sean capaces de planificar el desarrollo del trabajo final de su carrera de grado, ya sea para Analista en Computación, o para Licenciatura en Ciencias de la Computación. Empero de esta situación, se visualiza que un importante número de estudiantes no culminan sus estudios y no obtienen su título de grado, principalmente porque no finalizan su trabajo final. En este trabajo se muestra una propuesta avocada a detectar y analizar las causas que producen los retrasos en la culminación del trabajo final.Eje: Educación en TecnologíaRed de Universidades con Carreras en Informática (RedUNCI

    Utilizando contratos JML para optimizar diseños orientado a objetos siguiendo MDA

    Get PDF
    Model Driven Architecture (MDA) define un proceso de construcción de software basado en la producción y transformación de modelos. En Ingeniería de Software, refactorización es la técnica que reestructura código de una aplicación, alterando su estructura interna sin modificar su comportamiento externo. Por otro lado, Java Modeling Language (JML) es un lenguaje para especificar programas Java, utiliza precondiciones, postcondiciones e invariantes de la lógica de Hoare. Este trabajo plantea una técnica basada en MDA que posibilita la construcción de una herramienta automática que tomará como entrada código de una aplicación Java y realizará optimizaciones en su diseño basándose en reglas de refactoreo. La técnica requiere contar con los contratos JML de los métodos de las clases involucradas. El principal aporte de este trabajo es la utilización de contratos JML para asegurar que el comportamiento de un módulo se mantiene sin cambios, luego de la aplicación de reglas de refactoreo.Eje: Ingeniería de SoftwareRed de Universidades con Carreras en Informática (RedUNCI

    Propuesta para documentar trabajos finales utilizando metodologías ágiles

    Get PDF
    La aplicación de metodologías ágiles en proyectos de desarrollo de software ha sido muy significativa y creciente en los últimos años. En el informe World Quality Report (WQR) presentado por la consultora Sogeti, Capgemini y HP en 2013 sobre inversiones de las empresas en Tecnologías de la Información se indica que el 83% de las empresas usan metodologías ágiles para el desarrollo de sus aplicaciones debido a la versatilidad ante los cambios. Un modelo de desarrollo ágil, define un proceso incremental, donde la comunicación entre clientes y desarrolladores es constante y colaborativa. En los ámbitos académicos, en un principio, fue resistida la aplicación de estas nuevas metodologías. La informalidad y la aparente escasez en la documentación fueron los puntos más cuestionados. En este trabajo se presenta una plantilla para documentar proyectos finales de carreras de computación, siguiendo un desarrollo ágil. La misma está destinada a alumnos avanzados de carreras de informática que estén iniciando su trabajo final de carrera. Se pretende realizar aportes para establecer un nexo entre los postulados fundacionales de las metodologías ágiles y la realidad que enfrenta un estudiante sin experiencia al momento de iniciar su trabajo de fin de carrera.Eje: Educación en TecnologíaRed de Universidades con Carreras en Informática (RedUNCI

    Propuesta para documentar trabajos finales utilizando metodologías ágiles

    Get PDF
    La aplicación de metodologías ágiles en proyectos de desarrollo de software ha sido muy significativa y creciente en los últimos años. En el informe World Quality Report (WQR) presentado por la consultora Sogeti, Capgemini y HP en 2013 sobre inversiones de las empresas en Tecnologías de la Información se indica que el 83% de las empresas usan metodologías ágiles para el desarrollo de sus aplicaciones debido a la versatilidad ante los cambios. Un modelo de desarrollo ágil, define un proceso incremental, donde la comunicación entre clientes y desarrolladores es constante y colaborativa. En los ámbitos académicos, en un principio, fue resistida la aplicación de estas nuevas metodologías. La informalidad y la aparente escasez en la documentación fueron los puntos más cuestionados. En este trabajo se presenta una plantilla para documentar proyectos finales de carreras de computación, siguiendo un desarrollo ágil. La misma está destinada a alumnos avanzados de carreras de informática que estén iniciando su trabajo final de carrera. Se pretende realizar aportes para establecer un nexo entre los postulados fundacionales de las metodologías ágiles y la realidad que enfrenta un estudiante sin experiencia al momento de iniciar su trabajo de fin de carrera.Eje: Educación en TecnologíaRed de Universidades con Carreras en Informática (RedUNCI
    corecore