Developing distributed applications, particularly those for distributed, real-time and embedded (DRE) systems, is a difficult and complex undertaking due to the need to address four major challenges: the complexity of programming interprocess communication, the need to support a wide range of services across heterogeneous platforms and promote reuse, the need to efficiently utilize resources, and the need to adapt to changing conditions. The first two challenges are addressed to a large extent by standardized, general-purpose middleware (e.g. CORBA, DCOM and Java RMI) through the use of a "black-box" approach, such as the object-oriented paradigm (frameworks and design patterns). The need to support a large variety and range of applications and application domains has resulted in very feature-rich implementations of these standardized middleware. However, such a feature-richness acts counteractive to resolving the remaining two challenges; instead it incurs excessive memory footprint and performance overhead, as well as increased cost of testing and maintenance. To address the four challenges all at once while leveraging the benefits of general-purpose middleware requires a scientific approach to specializing the middleware. Software engineering techniques, such as aspect-oriented programming (AOP), feature-oriented programming (FOP), and reflection make the specialization task simpler, albeit still requiring the DRE system developer to manually identify the system invariants, and sources of performance and memory footprint bottlenecks that drive the specialization techniques. Specialization reuse is also hampered due to a lack of common taxonomy to document the recurring specializations, and assess the strengths and weaknesses of these techniques. To address these requirements, this paper presents a case for an automated, multi-stage, feature-oriented middleware specialization process that improves both middleware developer productivity and middleware performance. Three specific contributions are made in this paper. First, contemporary middleware specialization research is framed in terms of a three-dimensional taxonomy. Second, the principles of separation of concerns are used in the context of this taxonomy to define six stages of a middleware specialization process lifecycle. Finally, a concrete implementation of the six stage, automated middleware specialization process is presented along with empirical data illustrating the benefits accrued using the framework.