Software can be usefully categorized by its commonalities: commonality in source code structure; commonality in usage of functionality; commonality in dynamic sequences of operations. This project leverages a theoretical foundation called anti-unification to categorize structures in software and to determine their commonalities and differences. Our work to-date has focused on syntactic structures, though the same ideas can be applied to other kinds of structure.
Software
We have built six tools related to this project: Breakaway (for generalization tasks), Jigsaw (for source code reuse and integration), Guido (for categorization of examples), an integration between Jigsaw and Strathcona (for end-to-end reuse of relevant examples), a functionality pattern detector, and the Jigsaw higher-order anti-unification engine (for general similarity and differencing purposes, unpublished work). None has been released publicly, though they could be made available to collaborators.
Publications
Strathcona/Jigsaw integration
- 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
Guido
- Rylan Cottrell, Brina Goyette, Reid Holmes, Robert J. Walker, and Jörg Denzinger. Compare and contrast: Visual exploration of source code examples. In Proceedings of the 5th IEEE International Workshop on Visualizing Software for Understanding and Analysis (VISSOFT '09), pages 29–32, 2009. doi: 10.1109/VISSOF.2009.5336429
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
Breakaway
- Rylan Cottrell, Joseph J. C. Chang, Robert J. Walker, and Jörg Denzinger. Determining detailed structural correspondence for generalization tasks. In Proceedings of the European Software Engineering Conference held jointly with the 15th ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE '07), pages 165–174, 2007. doi: 10.1145/1287624.1287649
Functionality pattern detection
- Iftekhar Amin Sadi. Characterization of the Usage of Logging Functionality via Pattern Inference. MSc thesis. Department of Computer Science, University of Calgary, June 2011.