A Software Architecture for Structuring Complex Web Applications

In this paper we present an architecture for building families of rich Web applications. We first characterize current trends in Web applications, from read-only Web sites to sophisticated applications where complex distributed transactions must be supported. We next some design principles for building Web applications, and give the rationale for separating application behavior from navigation and interface issues. We briefly argue the need for developing a product line architecture for simplifying the systematic construction of different families of applications. We next describe the main components of our architecture explaining how we manage to decouple application specific aspects from technological aspects (such as dynamic page generation and persistence) that can be eventually solved by reusing of-the-shelf components. We show how to build application frameworks using this architecture using a concrete example of an electronic CD store.