Draco: a method for engineering reusable software systems
Software reusability: vol. 1, concepts and models
Reuse in the context of a transformation-based methodology
Software reusability: vol. 1, concepts and models
Software Engineering Journal
Identifying and Qualifying Reusable Software Components
Computer - Special issue on cryptography
IEEE Transactions on Software Engineering
ACM Computing Surveys (CSUR)
Protocol specifications and component adaptors
ACM Transactions on Programming Languages and Systems (TOPLAS)
Extracting Reusable Functions by Flow Graph-Based Program Slicing
IEEE Transactions on Software Engineering
The theory and practice of adaptive reuse
Proceedings of the 1997 symposium on Software reusability
The Role of Opportunism in the Software Design Reuse Process
IEEE Transactions on Software Engineering
Proceedings of the Conference on The Future of Software Engineering
Integrating independent components with on-demand remodularization
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Architectural Mismatch: Why Reuse Is So Hard
IEEE Software
Architectural Mismatch: Why Reuse Is So Hard
IEEE Software
Reuse and variability in large software applications
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Supporting the Investigation and Planning of Pragmatic Reuse Tasks
ICSE '07 Proceedings of the 29th international conference on Software Engineering
How Well Do Search Engines Support Code Retrieval on the Web?
ACM Transactions on Software Engineering and Methodology (TOSEM)
Systematizing pragmatic software reuse
ACM Transactions on Software Engineering and Methodology (TOSEM)
Sourcerer: An infrastructure for large-scale collection and analysis of open-source code
Science of Computer Programming
Hi-index | 0.00 |
Reusing source code in a manner for which it has not been designed (which we term a pragmatic-reuse task) is traditionally regarded as poor practice. The unsystematic nature of these tasks increases the likelihood of a developer pursuing one that is infeasible or choosing not to pursue a feasible one. In previous work, we demonstrated that these risks can be mitigated by providing support to developers to help them systematically investigate and plan pragmatic-reuse tasks. But planning is only a small part of performing a pragmatic-reuse task; to enact a plan, the developer would have to manually extract the code they want to reuse and resolve any errors that arise from removing it from its originating system. This paper describes an approach that semi-automates the process of pragmatic-reuse plan enactment, automatically extracting the reused source code and resolving the majority of compilation errors for the developer through lightweight(i.e., computationally simple but analytically unsound) transformations. By reducing the number of low-level compilation issues (which are typically trivial but copious) that the developer must resolve, they are able to focus on the higher-level semantic and conceptual issues that are the main barrier to the successful completion of the reuse task. The efficacy of our approach to save developer effort is evaluated in a small-scale, controlled experiment on non-trivial pragmatic-reuse tasks. We find that our approach improves the likelihood of a pragmatic reuse task being successful, and decreases the time required to complete these tasks, as compared to a manual enactment approach.