software architecture lecture 8