38 research outputs found

    Similarity in Programs

    Get PDF
    An overview of the concept of program similarity is presented. It divides similarity into two types - syntactic and semantic - and provides a review of eight categories of methods that may be used to measure program similarity. A summary of some applications of these methods is included. The paper is intended to be a starting point for a more comprehensive analysis of the subject of similarity in programs, which is critical to understand if progress is to be made in fields such as clone detection

    Tool support for continuous quality controlling

    Get PDF
    Over time, software systems suffer gradual quality decay and therefore costs can rise if organizations fail to take proactive countermeasures. Quality control is the first step to avoiding this cost trap. Continuous quality assessments help users identify quality problems early, when their removal is still inexpensive; they also aid decision making by providing an integrated view of a software system's current status. As a side effect, continuous and timely feedback helps developers and maintenance personnel improve their skills and thereby decreases the likelihood of future quality defects. To make regular quality control feasible, it must be highly automated, and assessment results must be presented in an aggregated manner to avoid overwhelming users with data. This article offers an overview of tools that aim to address these issues. The authors also discuss their own flexible, open-source toolkit, which supports the creation of dashboards for quality control

    Dynamic component and code co-evolution

    Full text link

    Dynamic Component and Code Co-Evolution

    No full text
    This papers presents a radically new approach for the dynamic evolution of long-lived systems that can not easily be shut-down for maintenance and restarted afterwards. Conventionally, the source code of a software system is viewed as a static entity and separated from the system at runtime. This seems intuitive as a single piece of code is usually associated with multiple components at runtime. Obviously, this viewpoint is a major obstacle for dynamic evolution during runtime as it raises di#cult consistency issues concerning the relationship between static code and the dynamically executing system. The evolution approach presented in this paper takes a completely di#erent direction by seamlessly integrating static code with dynamic execution. By this and sound concepts for component categories, incompleteness and dynamic completion, software can be generalized and adapted during runtime in a highly flexible way

    Thread segment stacks

    No full text
    Abstract This paper presents enhanced memory management concepts and their implementation providing better support for multi threading. The virtual address space of the multi threaded process is dynamically partitioned by a dynamic set of cooperating managers. Special thoughts are given to detect and solve possible thread stack and heap overows and collisions. Both stacks and heaps associated with threads are organized non-contiguously with linear segments to fully exploit possibly large virtual address spaces. Crucial for the e ciency of this approach are modi cations of the compiler and parts of the runtime system. The proposed solutions are implemented an evaluated on the SUN Sparc V9architecture. Keywords: memory management operating systems, multi threading, 1 New Features and Flaws Multi-tasking operating systems (OS) usually provide private address spaces for processes. In order to share data amongst processes, IPC interfaces such as shared mappings, signals, or sockets along with error prone techniques like pointer swizzling have to be used. Of course, tight coupling of processes needed for cooperative parallel algorithms can not be achieved this way without considerable overhead. By employing a single virtual address space (VA) for all processes this and other problems can be evaded. Each memory object is uniformly iden-0 This project is sponsored by the DFG (German Researc

    The Portable Assembly Language C--: A Critical Review and a GCC Based Prototype

    No full text
    Many research activities deal directly or indirectly with the design and implementation of high level language concepts. These concepts are developed not only in the context of programming languages, but also in other fields such as distributed operating systems. The prope

    Straightening Spaghetti-Code with Refactoring?

    No full text
    Changes to software systems often entail a loss of quality, especially if they have to be accomplished under pressure of time. Long-term software projects must counter this phenomenon one way or the other to preserve long-term maintainability. This paper presents the results of a case study trying to improve an extensive low-quality code base by object-oriented and tool-supported refactoring. To obtain practically relevant experiences this case study was conducted within an on-going commercial software project. The existing code base was first assessed using metrics as well as subjective judgment and later-on refactored according to the findings of the assessment. By this, we evaluated the practical applicability of several metrics and refactoring tools. The results of this experiment indicate that tool support is immature and the impact of refactoring is limited if the code base has gone astray for a longer period of time
    corecore