Coursera "Pattern-Oriented Software Architectures", week 4