Flight Manager is a mid-size stateful web application, developed at the Software Technologies Lab of the University of Florence and it provides an exemplary implementation of a sound and widely adopted combination of architectural patterns.
The application structure implements a 3-tier stateful architecture, outlined in the UML Deployment Diagram of Fig. 1.
Fig. 1 Flight Manager Architecture
The Data Source is implemented by a Relational Database Management System (RDBMS), connected to the Domain Model (represented in the class diagram of Fig. 2) by a Data Access Layer, featuring a Data Access Object (DAO) for each main Entity (for a total of 6 DAO classes), which exploits services of an Object Relational Mapping (ORM) framework.
Fig. 2 Class Diagram
The Presentation Layer is organised in a User Interface made of XHTML pages (represented in the page navigation diagram of Fig. 3) and a Business Logic Layer that features Controllers implementing the navigation logic and other components maintaining information accumulated along the user interaction (roughly, 30 classes).
Fig. 3 Page Navigation Diagram
Flight Manager is implemented adopting specifications of the Java/Jakarta Enterprise Edition (JEE) ecosystem. In particular, ORM relies on the Java Persistence API (JPA, here provided by Hibernate), and interface XHTML pages are based on Java Server Faces (JSF). DI and Automated Contexts Management for objects running in the Business Logic layer is implemented using Contexts and Dependency Injection (CDI, here provided by the Weld reference implementation).
Flight Manager features functions in the context of an online flight booking system supporting registered and unregistered users (Use Case Diagram of Fig 5) and also administrator user (Use Case Diagram of Fig 5). For each use case a different test suites fulfilling different coverage criteria was developed on top of the related managed components Data Flow Graphs obtained through the methodology depicted in "Model-Based Testing of Web Applications with automated lifecycle management of injected components" paper.
Fig. 4 Use Case Diagram for Regular Users
Fig. 5 Use Case Diagram for Administrator Users