What are the four key terms in common definitions of software architecture? (Choose four.)