Middleware facilitates the development of distributed systems by accommodating heterogeneity, hiding distribution details and providing a set of common and domain specific services. It plays a central and essential role for developing distributed systems. However, middleware is considered a mean rather than core elements of development process in the existing distributed systems software process. This paper explains the concept of middleware by categorizes middleware and analysis the problems of current middleware architectures. It also extracts three essential non-functional requirements of middleware and proposes a middleware-based distributed systems software process. The proposed software process consists in five phases: requirements analysis, design, validation, development and testing. The characteristics of middleware are considered in the entire software process. ComponentBased Software Engineering, Separation of Concerns, Model-Driven Architecture, formal methods and Aspect O...