1,430 research outputs found

    Understanding object-oriented source code from the behavioural perspective

    Get PDF
    Comprehension is a key activity that underpins a variety of software maintenance and engineering tasks. The task of understanding object-oriented systems is hampered by the fact that the code segments that are related to a user-level function tend to be distributed across the system. We introduce a tool-supported code extraction technique that addresses this issue. Given a minimal amount of information about a behavioural element of the system that is of interest (such as a use-case), it extracts a trail of the methods (and method invocations) through the system that are needed in order to achieve an understanding of the implementation of the element of interest. We demonstrate the feasibility of our approach by implementing it as part of a code extraction tool, presenting a case study and evaluating the approach and tool against a set of established criteria for program comprehension tools

    Call graph reduction by static estimated function execution probability.

    Get PDF
    Lo, Kwun Kit.Thesis (M.Phil.)--Chinese University of Hong Kong, 2009.Includes bibliographical references (leaves 153-161).Abstracts in English and Chinese.Chapter 1 --- Introduction --- p.1Chapter 1.1 --- Existing Approaches in Program Understanding --- p.2Chapter 1.1.1 --- Localized Program Understanding --- p.2Chapter 1.1.2 --- Whole System Analysis --- p.3Chapter 1.2 --- Example of Function Execution Probability Reduction of the Call Graph --- p.5Chapter 1.3 --- Organization of the Dissertation --- p.7Chapter 2 --- Preliminary Study --- p.8Chapter 2.1 --- Participants --- p.8Chapter 2.2 --- Study Design --- p.8Chapter 2.3 --- ispell --- p.10Chapter 2.3.1 --- Subject I1 (ispell) --- p.10Chapter 2.3.2 --- Subject PG1 (ispell) --- p.12Chapter 2.3.3 --- Subject PG2 (ispell) --- p.13Chapter 2.3.4 --- Subject I2 (ispell) --- p.14Chapter 2.3.5 --- ispell Analysis --- p.15Chapter 2.4 --- FreeBSD Kernel Malloc --- p.15Chapter 2.4.1 --- Subject I1 (FreeBSD) --- p.16Chapter 2.4.2 --- Subject PG1 (FreeBSD) --- p.17Chapter 2.4.3 --- Subject PG2 (FreeBSD) --- p.18Chapter 2.4.4 --- Subject I2 (FreeBSD) --- p.20Chapter 2.4.5 --- FreeBSD Analysis --- p.20Chapter 2.5 --- Threats to Validity --- p.21Chapter 2.6 --- Summary --- p.22Chapter 3 --- Approach --- p.24Chapter 3.1 --- Building Branch-Preserving Call Graphs --- p.26Chapter 3.1.1 --- Branch Reserving Call Graphs --- p.26Chapter 3.1.2 --- Branch-Preserving Call Graphs --- p.28Chapter 3.1.3 --- Example of BPCG Building Process --- p.31Chapter 3.2 --- System Function Removal --- p.34Chapter 3.3 --- Function Rating Calculation --- p.35Chapter 3.3.1 --- Rating Algorithm Complexity --- p.38Chapter 3.4 --- Building the Colored Call Graph --- p.39Chapter 3.5 --- Call Graph Reduction --- p.39Chapter 3.5.1 --- Remove-high-fan-in-functions Approach (FEPR-fanin) --- p.39Chapter 3.5.2 --- Remove-leaf-nodes Approach (FEPR-leaf) --- p.41Chapter 4 --- Validation --- p.42Chapter 4.1 --- Measures --- p.43Chapter 4.1.1 --- Inclusion Accuracy (IA) --- p.43Chapter 4.1.2 --- Reduction Efficiency (RE) --- p.44Chapter 4.1.3 --- Stability (S) --- p.45Chapter 4.2 --- Analysis of FEPR Techniques --- p.45Chapter 4.2.1 --- Settings --- p.45Chapter 4.2.2 --- Inclusion Accuracy (IA): --- p.47Chapter 4.2.3 --- Reduction Efficiency (RE): --- p.47Chapter 4.2.4 --- Stability (S) --- p.48Chapter 4.3 --- Ying and Tarr´ةs Approach --- p.48Chapter 4.3.1 --- Settings --- p.50Chapter 4.3.2 --- Inclusion Accuracy (IA) --- p.50Chapter 4.3.3 --- Reduction Efficiency (RE) --- p.51Chapter 4.3.4 --- Stability (S) --- p.51Chapter 4.4 --- Centrality Measure Approach --- p.52Chapter 4.4.1 --- Inclusion Accuracy (IA) --- p.53Chapter 4.5 --- Top-down Search Approach --- p.56Chapter 4.5.1 --- Reduction Efficiency (RE) --- p.57Chapter 4.6 --- Synthesized Analysis --- p.58Chapter 4.6.1 --- Inclusion Accuracy (IA) --- p.58Chapter 4.6.2 --- Reduction Efficiency (RE) --- p.59Chapter 4.6.3 --- Stability (S) --- p.59Chapter 4.6.4 --- Threats to Validity --- p.59Chapter 4.7 --- Summary --- p.60Chapter 5 --- Discussion --- p.62Chapter 5.1 --- Flexibility of Analysis --- p.62Chapter 5.2 --- "Existence of Function Pointers, GOTOs and Early Exits" --- p.62Chapter 5.3 --- Precision of Branch-Preserving Call Graphs --- p.63Chapter 5.4 --- Function Ranking and Recommender System --- p.64Chapter 5.5 --- Extending the Approach Beyond C --- p.66Chapter 6 --- Related Work --- p.67Chapter 6.1 --- Existing Approaches in Program Understanding --- p.67Chapter 6.1.1 --- Localized Program Understanding --- p.67Chapter 6.1.2 --- Whole Program Analysis --- p.69Chapter 6.2 --- Branch Prediction and Static Profiling --- p.73Chapter 7 --- Conclusions --- p.76Chapter A --- Call Graphs in Case Studies --- p.78Chapter B --- Source Files for BPCG Builder --- p.85Bibliography --- p.15

    C# Traceability System

    Get PDF
    Traceability information is a valuable asset that software development teams can leverage to minimise their risk during production and maintenance of software projects. When maintainers are added to a software project post-production, they have to learn the system from scratch and understand its dynamics before they can begin making appropriate modifications to the source code. The system outlined in this paper extracts traceability information directly from the source code of C# projects, and presents it in such a way that it can be easily used to understand the logic and validate changes to the system

    Dynamic decision tree for legacy use-case recovery

    Get PDF
    In the context of reverse-engineering project we designed a use-case specification recovery technique for legacy information systems. With our technique, we can recover the alternative flows of each use-case of the system. It is based on a dynamic (i.e. runtime) analysis of the working of the system using execution traces. But "traditional" execution trace format do not contain enough information for this approach to work. Then we designed a new execution trace format together with the associated tool to get the program's dynamic decision tree corresponding to each of the use-case scenario. These trees are then processed to find the possible variants from the main scenario of each use-case. In this paper we first present our approach to the use-case specification recovery technique and the new trace format we designed. Then the decision tree compression technique is showed with a feasibility study. The contribution of the paper is our approach to the recovery of legacy systems' use-case, the new trace format and the decision tree processing technique

    Use case diagram generation from naural or controlled language: a critical review.

    Get PDF
    El diagrama de casos de uso es importante en el desarrollo de aplicaciones de software para capturar los requisitos funcionales y para manejar la complejidad de sistemas robustos. En este artículo, se presenta una revisión crítica de los trabajos relacionados con la obtención del diagrama de casos de uso, partiendo de representaciones del discurso del interesado en lenguaje natural o controlado. De esta revisión, se concluye que el proceso suele partir de representaciones difíciles de conseguir en las etapas iniciales del software, que aún se realiza de forma asistida por el analista y que es todavía incompleto, pues no se identifican las relaciones especiales entre los actores y los casos de uso del diagrama. /Abstract: Use case diagram is useful in software application development in order to capture functional requirements and to manage robust system complexity. We present, in this paper, a critical review of works concerned to the use case diagram obtaining from stakeholder discourse representations, in the form of natural or controlled language discourses. We conclude, from this review, that such representations are difficult to obtain in the previous stages of software development, when the analyst must subjectively influence the process, and when the process is still incomplete, due to the lack of special actor-use-case relationship identification

    Generación del diagrama de casos de uso a partir del lenguaje natural o controlado: una revisión crítica

    Get PDF
    El diagrama de casos de uso es importante en el desarrollo de aplicaciones de software para capturar los requisitos funcionales y para manejar la complejidad de sistemas robustos. En este artículo, se presenta una revisión crítica de los trabajos relacionados con la obtención del diagrama de casos de uso, partiendo de representaciones del discurso del interesado en lenguaje natural o controlado. De esta revisión, se concluye que el proceso suele partir de representaciones difíciles de conseguir en las etapas iniciales del software, que aún se realiza de forma asistida por el analista y que es todavía incompleto, pues no se identifican las relaciones especiales entre los actores y los casos de uso del diagrama

    TRANSLATION OF USE CASE SCENARIOS TO JAVA CODE

    Get PDF
    Use cases are usually treated as second class citizens in the software developmentchain based on models. Their textual descriptions (scenarios) are treatedas informal input to more formal design models that can then be (semi-)automatically transformed down to code. In this paper we will show that usecase scenarios can gain precise metamodel-based notation and semantics enablingautomatic processing. What is more, we will show transformation algorithmsthat can transform use case scenarios directly to dynamic code in Java.The presented transformation can generate the full structure of the system followingthe MVP architectural pattern, including complete method contents forthe application logic (Presenter) and presentation (View) layers. It also providesa code skeleton for the domain logic (Model) layer. The use case notation andthe transformation were implemented within a sophisticated tool suite. Basedon this, the paper discusses the evaluation efforts based on a case study
    corecore