Revision with unchanged content. Distributed computing infrastructures are designed to be highly flexible and feature-rich to support a wide range of applications and product lines in multiple domains. Applications with stringent quality of service demands, however, find this feature richness and flexibility to be a source of excessive memory footprint overhead and a lost opportunity to optimize for significant performance gains. To alleviate this tension, a key objective is to specialize the middleware, which comprises removing the sources of excessive generality while simultaneously optimizing the required features of middleware functionality in an automated fashion. This book illustrates the modeling language approach to configure, compose middleware, and automate its specialization by integrating the model-based tool and aspect oriented software development techniques. This book is targeted for the people who want to make decisions about how the infrastructure should be provisioned to host complex applications.