The Model Driven Architecture defines an approach where the specification of the functionality of a system can be separated from its implementation on a particular technology platform.
Software Design Methodology explores the theory of software architecture, with particular emphasis on general design principles rather than specific methods.
Middleware is the bridge that connects distributed applications across different physical locations, with different hardware platforms, network technologies, operating systems, and programming languages.