The presence of software applications as components of many different kinds of systems with dynamic configurations is increasing at an unprecedented pace. The focus of this MSc is on new methods, architectures and design techniques for software systems that are able to operate, with guaranteed levels of quality of service, across heterogeneous and distributed platforms.