Identifying reusable functions using specification driven program slicing: a case study
- 19 November 2002
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
Abstract
We present the results of a case study in identifying and isolating reusable functions from C programs. The work exploits and specializes to programs written in C the theoretical framework of specification driven program slicing, a new program slicing process for isolating code fragments implementing functional abstractions. The specification of the function to be isolated, given in terms of a precondition and a postcondition, is used to identify a suitable slicing criterion. The preconditions for the execution of program statements and predicates are abstracted by using symbolic execution and compared with the conditions of the specification. The statements whose preconditions are equivalent to the pre and postconditions of the functional abstraction are candidates for entry and exit points of the slice implementing the abstraction. Once the slicing criterion has been identified, the slice can be isolated using algorithms based on control flow graphs and dependence graphs.Keywords
This publication has 23 references indexed in Scilit:
- Qualifying reusable functions using symbolic executionPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- Downsizing large application programsJournal of Software Maintenance: Research and Practice, 1994
- Using program slicing in software maintenanceIEEE Transactions on Software Engineering, 1991
- Software specialization via symbolic executionIEEE Transactions on Software Engineering, 1991
- Interprocedural slicing using dependence graphsACM Transactions on Programming Languages and Systems, 1990
- The program dependence graph and its use in optimizationACM Transactions on Programming Languages and Systems, 1987
- Program SlicingIEEE Transactions on Software Engineering, 1984
- Formal Program Verification Using Symbolic ExecutionIEEE Transactions on Software Engineering, 1982
- Logical analysis of programsCommunications of the ACM, 1976
- An axiomatic basis for computer programmingCommunications of the ACM, 1969