1,721,121 research outputs found

    Object Oriented Design Pattern Inference from Code

    No full text
    When designing a new application, experienced software engineers usually try to employ solutions that proved successful in previous projects. Such reuse of code organizations is seldom made explicit. Nevertheless it represents important information documenting the design choices underlying the implementation. In addition, having it available, it can be reused whenever a similar problem is encountered. In this paper an approach is proposed to the inference of recurrent design patterns directly from the code or the design. No assumption is made on the availability of any patter library, and the class groups which instantiate a common, repeated pattern. In fact, concept analysis provides sets of objects sharing attributes, which, in the case of object oriented design patterns, become class members or inter-class relations. The approach was applied to a C++ application, for which the structural relations among classes led to the extraction of a set of structural design patterns, which could be enriched with non structural information about class members and method invocations. The resulting patterns could be interpreted as meaningful organizations aimed at solving general problems which have several instances in the analyzed applicatio

    EEG Data Compression Techniques

    No full text
    In this paper EEG and Holter EEG data compression techniques which allow perfect reconstruction of the recorded waveform from the compressed one are presented and discussed. Data compression makes it possible to achieve significant reduction in the space required to store signals and in transmission time. The Huffman coding technique in conjunction with derivative computation reaches high compression ratios (on average 49% on Holter and 58% on EG signals) with low computational complexity. By exploiting this result a simple and fast encoder/decoder scheme capable of real time performance on a PC was implemented. This simple technique is compared with other predictive transformations, vector quantization, discrete cosine transform and repetition count compression methods. Finally, it is shown that the adoption of a collapsed Huffman tree for the encoding/decoding operations allows one to choose the maximum codeword length without significantly affecting the compression ratio. Therefore, low cost commercial microcontrollers and storage devices can be effectively used to store long Holter EEGs in a compressed forma

    Design Pattern Inference for Object Oriented Systems

    No full text
    When designing a new application , experienced software engineers usually try to employ solutions that proved successful in previous projects. Such reuse of code organizations is seldom made explicit. Nevertheless it represents important information about the system, that can be extremely valuable during program understanding, by documenting the design choices underlying the implementation. In this paper an approach is proposed for the inference of recurrent design patterns directly from the code. No assumption is made on the availability of any pattern library, and the concept analysis algorithm, adapted for this purpose, is able to infer the presence of class groups which instantiate a common, repeated pattern. This approach was applied to 3 C applications, for which the relations among classes led to the extraction of a set of design patterns, that could be interpreted as meaningful organizations aimed at solving general problems, with several instances in the cod

    Inference of Object oriented Design Patterns

    No full text
    When designing a new application, experienced software engineers usually adopt solutions that have proven successful in previous projects. Such reuse of code organizations is seldom made explicit. Nevertheless, it represents important information, which can be extremely valuable in the maintenance phase by documenting the design choices underlying the implementation. In addition it can be reused whenever a similar problem is encountered. In this paper an approach for the inference of recurrent design patterns directly from the code is proposed. No assumption is made on the availability of any pattern library, and the concept analysis algorithm - adapted for this purpose - is able to infer the presence of class groups which instantiate a common, repeated pattern, In fact, concept analysis provides sets of objects sharing attributes, which - in the case of object oriented design patterns - become class members or inter-class relations. The approach was applied to 3 C applications for which the structural relations among classes led to the extraction of a set of design patterns, which could be enriched with non structural information about class members and method invocations. The resulting patterns could be interpreted as meaningful organizations aimed at solving general problems which have several instances in the analyzed application

    Object-Oriented Design Patterns Recovery

    No full text
    Object-Oriented design patterns are an emergent technology: they are reusable micro-architectures, high level building blocks. A system which has been designed using well-known, documented and accepted design patterns is also likely to exhibit good properties such as modularity, separation of concerns and maintainability. While for forward engineering the benefits of using design patterns are clear, using reverse engineering technologies to discover instances of patterns in a software artifact (e.g., design or code) may help in several key areas, among which program understanding, design to code traceability and quality assessment. This paper describes a conservative approach and experimental results, based on a multi-stage reduction stragegy using OO software metrics and structural properties to extract structural design patterns from OO design or C++ code. To assess the effectiveness of the pattern recovery process a portable environment written in Java, remotely accessible by means of any WEB browser, has been developed. The developed system and experimental results on 8 industrial sofware (design and code) and 300.000 line of public domain C++ code are presented

    Moving to smaller libraries via clustering and genetic algorithms

    No full text
    There may be several reasons to reduce a software system to its bare bone removing the extra fat introduced during development or evolution. Porting the software system on embedded devices or palmtops are just two examples. This paper presents an approach to re-factoring libraries with the aim of reducing the memory requirements of executables. The approach is organized in two steps. The first step defines an initial solution based on clustering methods, while the subsequent phase refines the initial solution via genetic algorithms. In particular, a novel genetic algorithm approach, considering the initial clusters as the starting population, adopting a knowledge-based mutation function and a multi-objective fitness function, is proposed. The approach has been applied to several medium and large-size open source software systems such as GRASS, KDE-QT, Samba and MySQL, allowing to effectivel

    Modeling Maintenance Effort by means of Dynamics Systems

    No full text
    The dynamic evolution of ecological systems in which predators and preys compete for surviving has been investigated by applying suitable mathematical models. Dynamic systems theory provides a useful way to model interspecie competition and thus the evolution of predators and preys populations. This kind of mathematical framework has been shown to be well suited to describe evolution of economical systems as well, where instead of predators and preys there are consumers and resources. This paper suggests how dynamic systems could be usefully applied to maintenance context, namely to model the dynamic evolution of maintenance effort. When maintainers starts trying to recognize and correct code defects, while the number of residual defects decreases, the effort spent to find out any new defect has an initial increase, followed by a decline, in a similar way as preys and predators populations do. The feasibility of this approach is supported by the experimental data about a 67 months maintenance task of a software project and its successive release

    Dynamic Model for Maintenance and Testing Effort

    No full text
    The dynamic evolution of ecological systems in which predators and preys compete for surviving has been investigated by applying suitable mathematical models. Dynamic systems theory provides a useful way to model interspecie competition and thus the evolution of predators and preys populations. This kind of mathematical framework has been shown to be well suited to describe evolution of economical systems as well, where instead of predators and preys there are consumers and resources. Maintenance and testing activities absorb the most relevant part of total life-cycle cost of software. Such economic relevance strongly suggests to investigate the maintenance and testing processes in order to find new models allowing software engineers to better estimate, plan and manage costs and activities. In this paper we show how dynamic systems theory could be usefully applied to maintenance and testing context, namely to model the dynamic evolution of the effort. When programmers start trying to recognize and correct code defects, while the number of residual defects decreases, the effort spent to find out any new defect has an initial increase, followed by a decline, in a similar way as preys and predators populations do. The flexibility of this approach is supported by the experimental data about two real world software project
    corecore