2 research outputs found

    Identifying reusable functions in code using specification driven techniques

    Get PDF
    The work described in this thesis addresses the field of software reuse. Software reuse is widely considered as a way to increase the productivity and improve the quality and reliability of new software systems. Identifying, extracting and reengineering software. components which implement abstractions within existing systems is a promising cost-effective way to create reusable assets. Such a process is referred to as reuse reengineering. A reference paradigm has been defined within the RE(^2) project which decomposes a reuse reengineering process in five sequential phases. In particular, the first phase of the reference paradigm, called Candidature phase, is concerned with the analysis of source code for the identification of software components implementing abstractions and which are therefore candidate to be reused. Different candidature criteria exist for the identification of reuse-candidate software components. They can be classified in structural methods (based on structural properties of the software) and specification driven methods (that search for software components implementing a given specification).In this thesis a new specification driven candidature criterion for the identification and the extraction of code fragments implementing functional abstractions is presented. The method is driven by a formal specification of the function to be isolated (given in terms of a precondition and a post condition) and is based on the theoretical frameworks of program slicing and symbolic execution. Symbolic execution and theorem proving techniques are used to map the specification of the functional abstractions onto a slicing criterion. Once the slicing criterion has been identified the slice is isolated using algorithms based on dependence graphs. The method has been specialised for programs written in the C language. Both symbolic execution and program slicing are performed by exploiting the Combined C Graph (CCG), a fine-grained dependence based program representation that can be used for several software maintenance tasks

    Creating Tools in a Software Environment Based on Graph Rewriting Rules

    No full text
    This paper presents the software development workbench WSDW (Web structure-oriented Software Development Workbench) together with the tool development language TDL. WSDW is an integrated structure-oriented software environment which contains several tools for software evolution. The integration of tools is achieved by sharing a program representation which is based upon the mathematical concept of relation: the web structure is the basic high level representation of programs within the environment. The TDL language is a structure-oriented language that supports the creation of a wide variety of tools both for software development and maintenance. The elementary statements in a TDL program are web rewriting rules and manipulations of programs are expressed as web transformations. Moreover, to make program transformations more intuitive to the tool programmer, web rewriting rules are expressed graphically. Each tool in WSDW performs a sequence of web transformations and new software tools can be implemented as TDL programs and integrated into WSDW
    corecore