• DocumentCode
    1556035
  • Title

    Extracting reusable functions by flow graph based program slicing

  • Author

    Lanubile, Filippo ; Visaggio, Giuseppe

  • Author_Institution
    Dept. of Comput. Sci., Maryland Univ., College Park, MD, USA
  • Volume
    23
  • Issue
    4
  • fYear
    1997
  • fDate
    4/1/1997 12:00:00 AM
  • Firstpage
    246
  • Lastpage
    259
  • Abstract
    An alternative approach to developing reusable components from scratch is to recover them from existing systems. We apply program slicing, a program decomposition method, to the problem of extracting reusable functions from ill structured programs. As with conventional slicing first described by M. Weiser (1984), a slice is obtained by iteratively solving data flow equations based on a program flow graph. We extend the definition of program slice to a transform slice, one that includes statements which contribute directly or indirectly to transform a set of input variables into a set of output variables. Unlike conventional program slicing, these statements do not include either the statements necessary to get input data or the statements which test the binding conditions of the function. Transform slicing presupposes the knowledge that a function is performed in the code and its partial specification, only in terms of input and output data. Using domain knowledge we discuss how to formulate expectations of the functions implemented in the code. In addition to the input/output parameters of the function, the slicing criterion depends on an initial statement, which is difficult to obtain for large programs. Using the notions of decomposition slice and concept validation we show how to produce a set of candidate functions, which are independent of line numbers but must be evaluated with respect to the expected behavior. Although human interaction is required, the limited size of candidate functions makes this task easier than looking for the last function instruction in the original source code
  • Keywords
    flow graphs; program diagnostics; reverse engineering; software reusability; candidate functions; concept validation; data flow equations; decomposition slice; domain knowledge; flow graph based program slicing; human interaction; ill structured programs; input/output parameters; output variables; program decomposition method; program flow graph; program slicing; reusable components; reusable function extraction; slicing criterion; transform slice; transform slicing; Computer Society; Data mining; Equations; Flow graphs; Input variables; Programming profession; Software quality; Software reusability; Software systems; Transforms;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/32.588543
  • Filename
    588543