Software Architecture Lecture 6