The learning goals for Week 36 are:
Mon: (at 9.15) Mandatory Hints. Motivation for SCM. Wed: Release and Branching Strategies, Git. Build Management, Gradle.
Literature:
Slides:
Notes for this weekplan:
From now on, the monday lecture is one lesson only, from 9.15 to 10.00, unless explicitly stated.
The monday lecture will start with a TDD motivation and 'mandatory hints' section so all classes can benefit before handing in.
Most of the 'concepts-and-terms-slides' for Software Configuration Management (SCM) are screencasts that will NOT be repeated in the Auditorium (those with an additional 'Associated Screencast' link above) but only summerized in 2½ slides. Instead I will Wednesday focus our time on showing how git and github flow is used in the mandatory project to handle a 'continuous integration' release management strategy.
As a supplement/alternative to these lessons on Git and Release Management/GitHub Flow, the following screencasts provides specific guidance to their usage in the mandatory project:
- Importing HotStone into AU GitLab (10½ min)
- Cloning HotStone from AU GitLab (3 min)
- GitHubFlow: Create and Merge Iteration Branch (12 min)
Unfortunately, some buttons you see in the screencast has moved a bit, but you should be able to finde the 'Invite members' and 'Code' buttons on the pages. (Also I use the ReadMe file in the screencasts which unfortunately is missing in the E25 HotStone release. Never-the-less the ideas are the same.)
There is some confusion around regarding the 'GitHub Flow' name, as it is not tied to GitHub. We just use the "model for how to handle releases and development branches" it defines on our AU GitLab server (as it is fully supported). To make things even worse, there is also a more complex model named "GitLab Flow" which is also not tied to neither GitLab nor GitHub. Sigh.
Note that the 'continuous delivery' release management model / GitHub Flow model has unfortunately not made it into the current release of chapter 33 - refer to the slides instead.
Spend the first 15-20 minutes of the TØ/Lab class in plenum discussing...
When doing TDD the One Step Test principle is important: the next test you pick from the Test List should not be too complex ("I have no idea how to do it") nor should be too simple ("This is obvious/already implemented") but should teach you something and move development forward = add new production code.
Consider the following few potential items on a test list (picked partially from the mandatory's Iteration 1 list), and discuss what constitutes good 'one step tests' for the first, the second, on so on, iterations of the TDD rhythm:
Discuss and argue for
Optional Exercises:
These are optional exercises. Be sure to solve the mandatory project first, and only if you have a lot of spare time, try having a look at the exercises below.
(6.5) 6.6 6.7 (6.8)