• Publications
  • Influence
Conditioned program slicing
Abstract Slicing is a technique to decompose programs based on the analysis of the control and data flow. In the original Weiser's definition, a slice consists of any subset of program statementsExpand
  • 228
  • 22
Software salvaging and the call dominance tree
Abstract The main goal of reuse reengineering processes for existing software is to obtain reusable software modules by clustering old software components that implement functional or dataExpand
  • 120
  • 5
Post-maintenance testing based on path change analysis
A post-maintenance testing strategy based on path-change analysis is presented. This analysis is based on an underlying algebraic representation of the design and/or code of the program to be tested,Expand
  • 85
  • 5
Evaluating advantages of test driven development: a controlled experiment with professionals
Test driven development (TDD) is gaining interest among practitioners and researchers: it promises to increase the quality of the code. Even if TDD is considered a development practice, it relies onExpand
  • 89
  • 4
  • Open Access
Software salvaging based on conditions
This paper presents algorithms for isolating reusable functions in large monolithic programs. The functions to be isolated are specified in terms of either pre-conditions or binding conditions, andExpand
  • 92
  • 4
Identifying objects in legacy systems using design metrics
Abstract Many organisations are migrating towards object-oriented technology. However, owing to the business value of legacy software, new object-oriented development has to be weighed againstExpand
  • 58
  • 4
  • Open Access
Incremental migration strategies: data flow analysis for wrapping
Incremental migration strategies entail the decomposition of large legacy systems in components that can be independently and selectively replaced; this reduces the costs and risks of a migrationExpand
  • 33
  • 4
Evaluating performances of pair designing in industry
Pair programming has attracted an increasing interest from practitioners and researchers: there is initial empirical evidence that it has positive effects on quality and overall delivery time, asExpand
  • 67
  • 3
  • Open Access
RE2: Reverse-engineering and reuse re-engineering
Initial research in reuse was in the designing and implementation of reusable software. This research, although fruitful, did not address the area of extracting reusable components from existingExpand
  • 69
  • 3
Traceability recovery by modeling programmer behavior
When a system evolves, while the source code is changed, documentation and traceability links are barely ever updated: maintaining traceability information between software artifacts is a costly andExpand
  • 46
  • 3
  • Open Access