MCIS

lab on Maintenance, Construction and Intelligence of Software

Email:

Site Search



LOG 6307 Release Engineering -- Applications of Mining Software Repositories (Fall 2016)


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.




Some Practicalities

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.




Successful Projects

The following conference papers started as an assignment or project in LOG6307, keep an eye on this section for more ;-)





Outline of the Course

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



Where to get MSR Data?

Data Repositories:


MSR Mining Challenge:


MSR Data Track:


Latest Work

MCINTOSH, S., KAMEI, Y., ADAMS, B., and HASSAN, A. E. (2014). The Impact of Code Review Coverage and Code Review Participation on Software Quality: A Case Study of the Qt, VTK, and ITK Projects, in Proceedings of the 11th Working Conference on Mining Software Repositories, MSR (Hyderabad, India), pages 192-201. (Distinguished Paper Award)


SHANG, W., JIANG, Z. M., HEMMATI, H., ADAMS, B., HASSAN, A. E. and MARTIN, P. (2013). Assisting Big Data Analytics Developers When Cloud Deploying Hadoop Applications, in Proceedings of the 35th International Conference on Software Engineering, ICSE (San Francisco, CA, US), pages 402-411. (ACM SIGSOFT Distinguished Paper Award)