Systematizing pragmatic software reuse
Open Access
- 1 November 2012
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 21 (4) , 1-44
Abstract
Many software reuse tasks involve reusing source code that was not designed in a manner conducive to those tasks, requiring that ad hoc modifications be applied. Such pragmatic reuse tasks are a reality in disciplined industrial practice; they arise for a variety of organizational and technical reasons. To investigate a pragmatic reuse task, a developer must navigate through, and reason about, source code dependencies in order to identify program elements that are relevant to the task and to decide how those elements should be reused. The developer must then convert his mental model of the task into a set of actions that he can perform. These steps are poorly supported by modern development tools and practices. We provide a model for the process involved in performing a pragmatic reuse task, including the need to capture (mentally or otherwise) the developer's decisions about how each program element should be treated: this is a pragmatic-reuse plan . We provide partial support for this model via a tool suite, called Gilligan; other parts of the model are supported via standard IDE tools. Using a pragmatic-reuse plan, Gilligan can semiautomatically transform the selected source code from its originating system and integrate it into the developer's system. We have evaluated Gilligan through a series of case studies and experiments (each involving industrial developers) using a variety of source systems and tasks; we report in particular on a previously unpublished, formal experiment. The results show that pragmatic-reuse plans are a robust metaphor for capturing pragmatic reuse intent and that, relative to standard IDE tools, Gilligan can (1) significantly decrease the time that developers require to perform pragmatic reuse tasks, (2) increase the likelihood that developers will successfully complete pragmatic reuse tasks, (3) decrease the time required by developers to identify infeasible reuse tasks, and (4) improve developers' sense of their ability to manage the risk in such tasks.Keywords
This publication has 78 references indexed in Scilit:
- “Cloning considered harmful” considered harmful: patterns of cloning in softwareEmpirical Software Engineering, 2008
- Design erosion: problems and causesJournal of Systems and Software, 2002
- Protocol specifications and component adaptorsACM Transactions on Programming Languages and Systems, 1997
- The reuse of uses in Smalltalk programmingACM Transactions on Computer-Human Interaction, 1996
- Sixteen questions about software reuseCommunications of the ACM, 1995
- Adaptive programmingIEEE Transactions on Software Engineering, 1991
- Grounded theory research: Procedures, canons, and evaluative criteriaQualitative Sociology, 1990
- On a Test of Whether one of Two Random Variables is Stochastically Larger than the OtherThe Annals of Mathematical Statistics, 1947
- On the Interpretation of χ 2 from Contingency Tables, and the Calculation of PJournal of the Royal Statistical Society, 1922
- XV.—The Correlation between Relatives on the Supposition of Mendelian Inheritance.Transactions of the Royal Society of Edinburgh, 1919