Industrial software developers copy-and-modify pieces of source code between systems for several essential and disciplined reasons. Nevertheless, such non-preplanned reuse has long been noted as a risky proposition, due to the lack of support for the process, and the inability of developers to understand whether or not a given reuse task will be successful or not prior to investing significant time in attempting it.

This project seeks to rectify these issues by informing the developer about the presence of dependencies from the source code that they intend to reuse, and allowing them to investigate each one and decide how to treat it. Our approach has empirically been shown to reduce developers’ time to complete such tasks, to reduce the errors made, to reduce the time spent on infeasible tasks, and to improve their sense of control over their tasks. We are currently working on lightweight approaches to locate code for reuse, semi-automatic leveraging of associated test suites, empirical comparisons against preplanned approaches, and scaling the ideas to an architectural level.

Software

We have implemented six tools related to this project: Skipper (by Soha Makady); Gilligan (by Reid Holmes); Reviver (by Mehrdad Nurolahzade); Jigsaw (by Rylan Cottrell); Reverb (by Mark McIntyre); and Strathcona (by Reid Holmes); as well as integrations of Jigsaw/Strathcona, Gillian/Skipper. and Gilligan with a tool by Martin Robillard.  None of these is publicly released, though they could be made available to collaborators.

Publications

Skipper

  • Soha Makady and Robert J. Walker. Validating pragmatic reuse tasks by leveraging existing test suites. Software: Practice & Experience, 43(9):1039–1070, September 2013. doi: 10.1002/spe.2134

Reviver

  • Mehrdad Nurolahzade GhalejooghiTest Driven Reuse: Improving the Selection of Semantically Relevant Code. PhD thesis. Department of Computer Science, University of Calgary, April 2014.
  • Mehrdad Nurolahzade, Robert J. Walker, and Frank Maurer. An assessment of test-driven reuse: Pitfalls and promises. In Safe and Secure Software Reuse [Proceedings of the International Conference on Software Reuse (ICSR)], volume 7925 of Lecture Notes in Computer Science, pages 65–80, 2013. doi: 10.1007/978-3-642-38977-1_5

Gilligan

  • Reid Holmes and Robert J. Walker. Systematizing pragmatic software reuse. ACM Transactions on Software Engineering and Methodology, 21(4):20/1–20/44, November 2012. doi: 10.1145/2377656.2377657
  • Reid Holmes. Pragmatic Software Reuse. PhD thesis. Department of Computer Science, University of Calgary, November 2008.
  • Reid Holmes and Robert J. Walker. Lightweight, semi-automated enactment of pragmatic-reuse plans. In Proceedings of the International Conference on Software Reuse (ICSR '08) [High Confidence Software Reuse in Large Systems, volume 5030 of Lecture Notes in Computer Science, Springer], pages 330–342, 2008. doi: 10.1007/978-3-540-68073-4_35
  • Reid Holmes and Robert J. Walker. Semi-automating pragmatic reuse tasks. In Proceedings of the ACM/IEEE International Conference on Automated Software Engineering (ASE '08), pages 481–482, 2008. Research demonstration track. doi: 10.1109/ASE.2008.81
  • Reid Holmes and Robert J. Walker. Supporting the investigation and planning of pragmatic reuse tasks. In Proceedings of the 29th International Conference on Software Engineering (ICSE '07), pages 447–457, 2007. doi: 10.1109/ICSE.2007.83

Jigsaw

  • Rylan Cottrell. Semi-automating Small-Scale Source Code Reuse via Structural Correspondence. MSc thesis. Department of Computer Science, University of Calgary, August 2008.
  • Rylan Cottrell, Robert J. Walker, and Jörg Denzinger. Semi-automating small-scale source code reuse via structural correspondence. In Proceedings of the 16th ACM SIGSOFT International Symposium on the Foundations of Software Engineering (SIGSOFT '08/FSE-16), pages 214–225, 2008. doi: 10.1145/1453101.1453130
  • Rylan Cottrell, Robert J. Walker, and Jörg Denzinger. Jigsaw: A tool for small-scale source code reuse. In Companion of the International Conference on Software Engineering (ICSE '08), pages 933–934, 2008. Informal research demonstration. doi: 10.1145/1370175.1370194

Reverb

  • Mark McIntyre. Supporting Repetitive Small-Scale Changes. MSc thesis. Department of Computer Science, University of Calgary, September 2007.
  • Mark McIntyre and Robert J. Walker. Assisting potentially-repetitive small-scale changes via semi-automated heuristic search. In Proceedings of the ACM/IEEE International Conference on Automated Software Engineering, pages 497–500, 2007. doi: 10.1145/1321631.1321718

Strathcona

  • Reid Holmes, Robert J. Walker, and Gail C. Murphy. Approximate structural context matching: An approach to recommend relevant examples. IEEE Transactions on Software Engineering, 32(12):952–970, December 2006. doi: 10.1109/TSE. 2006.117
  • Reid Holmes, Robert J. Walker, and Gail C. Murphy. Strathcona example recommendation tool. In Proceedings of the Joint European Software Engineering Conference and ACM SIGSOFT International Symposium on the Foundations of Software Engineering (ESEC/FSE '05), pages 237–240, 2005. doi: 10.1145/1081706.1081744

Integrations

  • Reid Holmes, Tristan Ratchford, Martin Robillard, and Robert J. Walker. Automatically recommending triage decisions for pragmatic reuse tasks. In Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering (ASE 2009), pages 397–408, 2009. doi: 10.1109/ASE.2009.65
  • Reid Holmes, Rylan Cottrell, Robert J. Walker, and Jörg Denzinger. The end-to-end use of source code examples: An exploratory study. In Proceedings of the 2009 IEEE International Conference on Software Maintenance (ICSM 2009), pages 555–558, 2009. doi: 10.1109/ICSM.2009.5306387
  • Reid Holmes, Rylan Cottrell, Robert J. Walker, and Jörg Denzinger. The end-to-end use of source code examples: An exploratory study—Appendix. Technical report 2009-934-13, Department of Computer Science, University of Calgary, Canada, June 2009. 8 pages. doi: 1880/47297