LOG6307 (in French: "Fouille de réf. pour mise en prod. logicielle") aims to introduce graduate students to the wonderful, yet challenging world of software release engineering. Software release engineering is the discipline of integrating, building, testing, packaging and delivering qualitative software releases to the end user. These activities form the vital link between the design and development phases of a software product and the actual usage and maintenance of the finished product.
While many people still think of software as cardboard boxes bought in their local electronics shop, the advent of agile methodologies and the web has changed the landscape drastically. Deployment of modern applications often includes coordinating the release of applications on multiple mobile platforms, web platforms with centralized backend services, app stores, and native desktop clients. Furthermore, concepts like continuous delivery of software are no longer curiosities, but essential to retain a competitive edge. Did you know that lean start-ups like IMVU release up to 50 times per day, while modern companies like Intuit, Google and Mozilla only take a couple of weeks in between releases? Browsers like Google Chrome and Mozilla Firefox even update silently to new releases, without the user noticing it.
But how can a software organization achieve such a highly performant release engineering process? How can delays and inefficiencies be identified and monitored, and how can they be resolved? As a methodology towards dealing with these questions, this course promotes the usage of techniques from the area of mining software repositories. This area leverages a wide range of readily available databases such as version control repositories, bug repositories, mailing lists and other data gathered during or following the development process, in order to extract actionable data that can help stakeholders like release engineers or gatekeepers to improve integration or to make the right decision.
LOG6307 is a grad course given each Fall by Dr. Bram Adams. The course outline is given below, while the Moodle site will be used to submit the assignment and project.
Evaluation is based on weekly presentations and discussion, reviews, one assignment and a project. The assignment will be in group, while the other activities will be individual. More details are provided on Moodle.
The following conference papers started as an assignment or project in LOG6307, keep an eye on this section for more ;-)
MUSAVI, P., ADAMS, B. and KHOMH, F. (2016). Experience Report: An Empirical Study of API Failures in OpenStack Cloud Environments, in Proceedings of the 27th International Symposium on Software Reliability Engineering, ISSRE (Ottawa, ON), to appear. (Acceptance ratio: 45/130=34.6%) BibTeX
RAHMAN, M. T., QUEREL, L.-P., RIGBY, P. C. and ADAMS, B. (2016). Feature Toggles: A case study and survey, in Proceedings of the 13th Working Conference on Mining Software Repositories, MSR (Austin, TX), pages 201-211. (Acceptance ratio: 36/103=27%) BibTeX
- BOISSELLE, V. and ADAMS, B. (2015). The Impact of Cross-Distribution Bug Duplicates, Empirical Study on Debian and Ubuntu, in Proceedings of the 15th IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM (Bremen, Germany), pages 131-140. (Acceptance ratio: 24/68=35%) BibTeX
- SAYAGH, M. and ADAMS, B. (2015). Multi-layer Software Configuration - Empirical Study on Wordpress, in Proceedings of the 15th IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM (Bremen, Germany), pages 31-40. (Acceptance ratio: 24/68=35%) BibTeX [additional figures]
TOURANI, P., JIANG, Y. and ADAMS, B. (2014). Monitoring Sentiment in Open Source Mailing Lists – Exploratory Study on the Apache Ecosystem, in Proceedings of the 2014 Conference of the Center for Advanced Studies on Collaborative Research, CASCON (Markham, ON, Canada), pages 34-44. (Acceptance ratio: 19/56=33.9%) BibTeX
- AN, L., KHOMH, F., and ADAMS, B. (2014). Supplementary Bug Fixes vs. Re-opened Bugs, in Proceedings of the 14th IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM (Victoria, BC, Canada), pages 205-214. (Acceptance ratio: 26/82=31.7%) BibTeX
SHRIDHAR, M., ADAMS, B. and KHOMH, F. (2014). A Qualitative Analysis of Software Build System Changes and Build Ownership Styles, in Proceedings of the 8th International Symposium on Empirical Software Engineering and Measurement, ESEM (Torino, Italy), article 29. (Acceptance ratio: 23/123=19%) BibTeX
1. What is Release Engineering?
- Release engineering process: integration, build process, staged testing, packaging and delivery
- Continuous Delivery: pipeline and automation (Jenkins, Puppet, Chef, etc.)
- Challenges and problems related to release engineering
- Case study: Mozilla Firefox
2. What is Mining Software Repositories (MSR)?
- Definition and basic concepts
- Different types of repositories: version control systems, bug repositories (Bugzilla), mailing lists (email vs. Twitter), project ecosystems (GitHub) and development collaboration sites (StackOverflow)
- Different types of empirical analysis: quantitative vs. qualitative, machine learning/data mining, regression models and grounded theory
- Link between MSR and release engineering
3. Applications of MSR for Software Integration
- Centralized (CVS/SVN) vs. distributed (git) version control
- Impact of branching patterns on software quality
- Developer co-ordination across branches
- Integration patterns in large-scale projects
4. Applications of MSR for the Build Process
- Build system technologies: Make vs. Ant
- Build maintenance and impact on development and tests
- Build process verification
- Software variability management: Linux
5. Applications of MSR for Staged Testing
- Bug prediction to guide test effort
- Test reduction, minimisation and selection
- Continuous quality assurance
6. Applications of MSR for Software Packaging
- Large-scale software distributions: Debian
- Code provenance across software projects
- Mobile applications: challenges and technologies
7. Applications of MSR for Software Delivery
- Deployment technologies
- App stores and immediate user feedback (ratings/comments)
- Cloud computing and deployment
MSR Mining Challenge:
MSR Data Track: