19 research outputs found

    Herramientas para la comprensión de programas

    Get PDF
    La comprensión de programas es un área de la Ingeniería del Software que se encarga del estudio y construcción de modelos y herramientas con el objetivo de facilitar el mantenimiento, la modificación y el estudio de aplicaciones de informática. En este artículo presentamos una línea de investigación que aborda esta temática siguiendo tres pasos. El primero analiza los modelos cognitivos. El segundo estudia las herramientas actuales. El tercero examina la posibilidad de aplicación de las técnicas de comprensión de programas a los algoritmos de ruteo. El análisis de los modelos cognitivos permitirá la elaboración de parámetros para analizar las herramientas de comprensión. El estudio de las aplicaciones existentes posibilitará conocer los modelos y estrategias utilizados por esta clase de aplicaciones. Finalmente, pensamos que la aplicación de las técnicas de comprensión de programas a los algoritmos de ruteo será un aporte para la generación de visiones innovadoras de los sistemas informáticos.FC

    A language processing tool for program comprehension

    Get PDF
    Program Comprehension is a Software Engineering discipline which aims to understand computer code written in a high-level programming language. Program Comprehension is useful for reuse, inspection, maintenance, reverse engineering and many other activities in the context of Software Engineering. In this paper we define a set of techniques to extract static and dynamic information from the target program. These techniques are based on the inclusion of inspection functions and control statements in the system’s source code. The first are intended to show the functions actually used. The second are necessary to reduce the number of functions recovered for a better administration. We show a possible implementation of this approach using a language processor generator very useful and easy to use. Our strong motivation was to support the understanding of routing algorithms, available in EAR a routing algorithms evaluation system. To assist the program comprehension task, we generate different views that use the information extracted by our strategy, such as the routing algorithm output (that can be seen as a problem domain view), or the sequence of called functions, and their source and object code (examples of program domain views). Although specific, we intend to generalize this approach.FC

    A language processing tool for program comprehension

    Get PDF
    Program Comprehension is a Software Engineering discipline which aims to understand computer code written in a high-level programming language. Program Comprehension is useful for reuse, inspection, maintenance, reverse engineering and many other activities in the context of Software Engineering. In this paper we define a set of techniques to extract static and dynamic information from the target program. These techniques are based on the inclusion of inspection functions and control statements in the system’s source code. The first are intended to show the functions actually used. The second are necessary to reduce the number of functions recovered for a better administration. We show a possible implementation of this approach using a language processor generator very useful and easy to use. Our strong motivation was to support the understanding of routing algorithms, available in EAR a routing algorithms evaluation system. To assist the program comprehension task, we generate different views that use the information extracted by our strategy, such as the routing algorithm output (that can be seen as a problem domain view), or the sequence of called functions, and their source and object code (examples of program domain views). Although specific, we intend to generalize this approach.III Workshop de Ingeniería de Software y Bases de Datos (WISBD)Red de Universidades con Carreras en Informática (RedUNCI

    Extracción de información estática de programas escritos usando el paradigma orientado a objetos

    Get PDF
    La Comprensión de Programas (CP) es una disciplina de la Ingeniería del Software cuyo objetivo es facilitar el entendimiento de los sistemas. Esta disciplina está influenciada en gran medida por el tamaño de los mismos. Es decir, mientras más grande es el código del sistema, más complejo se hace su entendimiento. Comprender un sistema de manera correcta y rápida disminuye claramente el costo de actividades tales como: mantenimiento, reingeniería, evolución; lo cual representa una de las características más importantes de esta disciplina. Entre los principales desafíos en la CP se destaca lo siguiente: lograr reconstruir la relación entre el Dominio del Problema y el Dominio del Programa. El primero hace referencia a la salida del sistema y el segundo a las componentes utilizadas para producir dicha salida. Para el caso particular del Dominio del Programa, uno de los lugares más significativos desde donde se puede extraer información es el código fuente. La información que se obtiene de esta extracción se clasifica en estática, si es obtenida sin ejecutar el programa y dinámica, si es obtenida en tiempo de ejecución. En este artículo se describe una línea de investigación centrada en la extracción de información estática de los sistemas para facilitar el proceso de comprensión de los mismos.Eje: Ingeniería de SoftwareRed de Universidades con Carreras en Informática (RedUNCI

    Técnicas, estrategias y herramientas de comprensión de programas para facilitar el entendimiento de sistemas multiparadigmas

    Get PDF
    Dentro del contexto del ciclo de vida del producto de software, una de las tareas que más tiempo y dedicación consume es la de Mantenimiento y Evolución de Software (MES). A partir de la necesidad de asistir al arduo proceso de comprensión requerido en la etapa mencionada anteriormente, surge una disciplina de la Ingeniería de Software denominada Comprensión de Programas (CP). La CP se presenta como un área de investigación interesante para impulsar el trabajo de MES a través de técnicas y herramientas que asistan al ingeniero de software en la difícil tarea de comprender sistemas. Por otra parte, los desafíos recientes en la industria de software requieren cada vez más de lenguajes y frameworks de programación con características multiparadigmas, los cuales a su vez presentan desafíos a las estrategias de comprensión. En esta línea de investigación se propone estudiar conceptos, definir estrategias e implementar herramientas de Comprensión de Programas para analizar sistemas desarrollados con lenguajes con soporte multiparadigma.Eje: Ingeniería de Software.Red de Universidades con Carreras en Informátic

    Comprensión de algoritmos de ruteo

    Get PDF
    La comprensión de programas es un área de la Ingeniería del Software que se encarga del estudio y construcción de modelos y herramientas con el objetivo de facilitar el mantenimiento, la modificación y el estudio de aplicaciones de informática. En este artículo presentamos los trabajos realizados, en el contexto de la comprensión de programas, destinados a analizar la posibilidad de aplicar las estrategias de comprensión de programas a los algoritmos de Ruteo Geométrico. Las tareas fueron llevadas a cabo siguiendo cuatro líneas de trabajo bien definidas. La primera consistió en el estudio de diferentes herramientas de comprensión de programas con el objeto de establecer un ranking y analizar las estrategias de comprensión utilizadas. La segunda se centro en la construcción de un Evaluador de Algoritmos de Ruteo con propósitos educativos y de investigación. La tercera analiza la posibilidad de adaptar estrategias de comprensión al evaluador de algoritmos para aumentar su capacidad explicativa. Finalmente, la cuarta línea se encarga de generalizar los resultados obtenidos con el evaluador con el objeto de utilizar las nuevas estrategias de comprensión definidas en sistemas en general.FC

    Herramientas para la comprensión de programas

    Get PDF
    La comprensión de programas es un área de la Ingeniería del Software que se encarga del estudio y construcción de modelos y herramientas con el objetivo de facilitar el mantenimiento, la modificación y el estudio de aplicaciones de informática. En este artículo presentamos una línea de investigación que aborda esta temática siguiendo tres pasos. El primero analiza los modelos cognitivos. El segundo estudia las herramientas actuales. El tercero examina la posibilidad de aplicación de las técnicas de comprensión de programas a los algoritmos de ruteo. El análisis de los modelos cognitivos permitirá la elaboración de parámetros para analizar las herramientas de comprensión. El estudio de las aplicaciones existentes posibilitará conocer los modelos y estrategias utilizados por esta clase de aplicaciones. Finalmente, pensamos que la aplicación de las técnicas de comprensión de programas a los algoritmos de ruteo será un aporte para la generación de visiones innovadoras de los sistemas informáticos.Eje: Ingeniería de software y base de datosRed de Universidades con Carreras en Informática (RedUNCI

    A language processing tool for program comprehension

    Get PDF
    Program Comprehension is a Software Engineering discipline which aims to understand computer code written in a high-level programming language. Program Comprehension is useful for reuse, inspection, maintenance, reverse engineering and many other activities in the context of Software Engineering. In this paper we define a set of techniques to extract static and dynamic information from the target program. These techniques are based on the inclusion of inspection functions and control statements in the system’s source code. The first are intended to show the functions actually used. The second are necessary to reduce the number of functions recovered for a better administration. We show a possible implementation of this approach using a language processor generator very useful and easy to use. Our strong motivation was to support the understanding of routing algorithms, available in EAR a routing algorithms evaluation system. To assist the program comprehension task, we generate different views that use the information extracted by our strategy, such as the routing algorithm output (that can be seen as a problem domain view), or the sequence of called functions, and their source and object code (examples of program domain views). Although specific, we intend to generalize this approach.III Workshop de Ingeniería de Software y Bases de Datos (WISBD)Red de Universidades con Carreras en Informática (RedUNCI

    Regression test selection for distributed Java RMI programs by means of formal concept analysis

    Get PDF
    Software maintenance is the process of modifying an existing system to ensure that it meets current and future requirements. As a result, performing regression testing becomes an essential but time consuming aspect of any maintenance activity. Regression testing is initiated after a programmer has made changes to a program that may have inadvertently introduced errors. It is a quality control approach to ensure that the newly modified code still complies with its specified requirements and that unmodified code has not been affected by the maintenance activity. In the literature various types of test selection techniques have been proposed to reduce the effort associated with re-executing the required test cases. However, the majority of these approach has been focusing only on sequential programs, and provide no or only very limited support for distributed programs or database-driven applications. The thesis presents a lightweight methodology, which applies Formal Concept Analysis to support a regression test selection analysis, in combination with execution trace collection and external data sharing analysis, for distributed Java RMI programs. Two Eclipse plug-ins were developed to automate the regression test selection process and to evaluate our methodology

    Hypothesis-based concept assignment to support software maintenance

    Get PDF
    Software comprehension is one of the most expensive activities in software maintenance and many tools have been developed to help the maintainer reduce the time and cost of the task. Of the numerous tools and methods available, one group has received relatively little attention: those using plausible reasoning to address the concept assignment problem. This problem is defined as the process of assigning descriptive terms to their implementation in source code, the terms being nominated by a user and usually relating to computational intent. It has two major research issues: Segmentation: finding the location and extent of concepts in the source code.Concept Binding', determining which concepts are implemented at these locations. This thesis presents a new concept assignment method: Hypothesis-Based Concept Assignment (HB-CA). A framework for the activity of software comprehension is defined using elements of psychological theory and software tools. In this context, HB-CA is presented as a successful concept assignment method for COBOL II, employing a simple knowledge base (the library) to model concepts, source code indicators, and inter-concept relationships. The library and source code are used to generate hypotheses on which segmentation and concept binding are performed. A two-part evaluation is presented using a prototype implementation of HB-CA. The first part shows that HB-CA has linear computational growth in the length of program under analysis. Other characteristics addressed include HB-CA's scalability, its applicability to other languages, the contribution made by different information sources, domain independence, representational power, and guidelines for the content of the library. The first part concludes by comparing the method and implementation to cognitive requirements for software comprehension tools. The second part considers applications of HB-CA in software maintenance. Five areas for potential cost reduction are identified: business-rule ripple analysis, code ripple analysis, module selection, software reuse, and software module comprehension
    corecore