Modern software systems are increasingly required to be open and distributed. Such systems are open not in terms of network connections and interoperability support heterogeneous hardware and software platforms, but, above all, in terms of evolving and changing requirements.