software architecture lecture 24