A software architecture as defined in IEEE 1471 is “the fundamental organization of a system embodied in its components, their relationship to each other, and to the environment, and the principles ...