The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Information Processing Letters
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
IEEE Transactions on Software Engineering
Identifying and Qualifying Reusable Software Components
Computer - Special issue on cryptography
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
ACM Computing Surveys (CSUR)
Reverse-engineering and intermodular data flow: a theoretical approach
Journal of Software Maintenance: Research and Practice
The software engineering laboratory: an operational software experience factory
ICSE '92 Proceedings of the 14th international conference on Software engineering
Program Concept Recognition and Transformation
IEEE Transactions on Software Engineering - Special issue on software maintenance
Program understanding and the concept assignment problem
Communications of the ACM
Software salvaging and the call dominance tree
Journal of Systems and Software
Automating the detection of reusable parts in existing software
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Program and interface slicing for reverse engineering
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Extracting and Restructuring the Design of Large Systems
IEEE Software
Recognizing a Program's Design: A Graph-Parsing Approach
IEEE Software
Legacy Systems: Coping with Success
IEEE Software
Interprocedural Def-Use Associations for C Systems with Single Level Pointers
IEEE Transactions on Software Engineering
Software Salvaging Based on Conditions
ICSM '94 Proceedings of the International Conference on Software Maintenance
A Precise Method for Identifying Reusable Abstract Data Types in Code
ICSM '94 Proceedings of the International Conference on Software Maintenance
Data-Centered Program Understanding
ICSM '94 Proceedings of the International Conference on Software Maintenance
Domain Analysis and Reverse Engineering
ICSM '94 Proceedings of the International Conference on Software Maintenance
Incremental Regression Testing
ICSM '93 Proceedings of the Conference on Software Maintenance
Using Dependence Analysis to Support the Software Maintenance Process
ICSM '93 Proceedings of the Conference on Software Maintenance
Function Recovery Based on Program Slicing
ICSM '93 Proceedings of the Conference on Software Maintenance
Analyzing empirical data from a reverse engineering project
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Semantics-preserving procedure extraction
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A System for Generating Reverse Engineering Tools: A Case Study of Software Modularisation
Automated Software Engineering
Journal of Electronic Testing: Theory and Applications
A Tool to Reengineer Legacy Systems to Object-Oriented Systems
ER '99 Proceedings of the Workshops on Evolution and Change in Data Management, Reverse Engineering in Information Systems, and the World Wide Web and Conceptual Modeling
Extracting Code Fragment that Implements Functionality
APSEC '99 Proceedings of the Sixth Asia Pacific Software Engineering Conference
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Automatic circuit extractor for HDL description using program slicing
Journal of Computer Science and Technology - Special issue on computer graphics and computer-aided design
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
Enabling Reuse-Based Software Development of Large-Scale Systems
IEEE Transactions on Software Engineering
Compiler-directed selective data protection against soft errors
Proceedings of the 2005 Asia and South Pacific Design Automation Conference
Unanticipated reuse of large-scale software features
Proceedings of the 28th international conference on Software engineering
Supporting the Investigation and Planning of Pragmatic Reuse Tasks
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Empirical-based recovery and maintenance of input error-correction features
Journal of Software Maintenance and Evolution: Research and Practice
Applying static analysis for automated extraction of database interactions in web applications
Information and Software Technology
An approach for the maintenance of input validation
Information and Software Technology
Lightweight, Semi-automated Enactment of Pragmatic-Reuse Plans
ICSR '08 Proceedings of the 10th international conference on Software Reuse: High Confidence Software Reuse in Large Systems
An empirical study of the relationship between the concepts expressed in source code and dependence
Journal of Systems and Software
A qualitative study of animation programming in the wild
Proceedings of the 2010 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement
Dependence condition graph for semantics-based abstract program slicing
Proceedings of the Tenth Workshop on Language Descriptions, Tools and Applications
A test-driven approach to code search and its application to the reuse of auxiliary functionality
Information and Software Technology
Identification of extract method refactoring opportunities for the decomposition of methods
Journal of Systems and Software
UOST: UML/OCL aggressive slicing technique for efficient verification of models
SAM'10 Proceedings of the 6th international conference on System analysis and modeling: about models
Evaluation of tools and slicing techniques for efficient verification of UML/OCL class diagrams
Advances in Software Engineering
Client-side web application slicing
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Systematizing pragmatic software reuse
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.00 |
An alternative approach to developing reusable components from scratch is to recover them from existing systems. In this paper, 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 Weiser, 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.