The software architecture of a program or computing system is the structure or structures of the system, which comprise software ______, the externally ______ properties of those components, and the relationships between them. The architecture is not the operational software. Rather, it is a ______that enables a software engineer to: analyze the ______ of the design in meeting its stated requirements, consider architectural alternatives at a stage when making design changes is still relatively easy, and reduce the ______ associated with the construction of the software.