Providing middleware-level facilities to support architecture-based development of software systems in pervasive environments

Software architecture has been widely advocated as an effective abstraction for modeling, implementing, and evolving complex software systems such as those in distributed, decentralized, heterogeneous, mobile, and pervasive environments. Typically, however, architectural abstractions have not been supported directly at the level of system implementation. Instead, even developers with access to state-of-the-art middleware facilities have had to rely on constructs that are at least in part different from those used in the design of their systems. In this paper we argue that it is possible to provide native and flexible software architectural facilities in a middleware platform geared to pervasive environments. We refer to such a platform as "architectural middleware". In support of our argument, we outline the design, implementation, and our experience with a specific architectural middleware platform, which has been used in solving pervasive computing problems in the classroom as well as two industrial domains. We also demonstrate that middleware-level architectural support can be effective, efficient, scalable, and adaptable.