With conventional architectures this is done by predicting the average needs of the majority
of the applications they support. In contrast, a compliant software architecture can
accommodate the needs of a particular application. As the application evolves, its
requirements change and the supporting software components, if compliant, change
accordingly to meet these new requirements.