The laboratory activity consists of specifying, designing and implementing a complex distributed application that provides a comprehensive Web interface, includes mobile components, and uses state-of-the-art technologies.

The students will work in teams of four, the members of the same team must attend the same laboratory class. Each team must designate a leader that will act as the group representative/contact person. The teams must be formed and announced by the students no later than end of Week 2 of the semester.

Goals: manage the full development process of a complex and complete distributed application; choose the right development and deployment technologies; work in a team.

The project specifications must be proposed by the students until the beginning of Week 3, by sending an e-mail to the lab supervisor. The specifications will be negociated during Week 3, so that the end of Week 3 finds the team with a proper initial description of the application.

The application must conform to the following requirements:

  • Submission deadline: Week 13. Intermediary milestones will have to be met, their deadline mandatory (see below).
  • Platform/technology: any platform providing support for developing a distributed environment; for the mobile components, specific frameworks can be used. The preferred mobile OS is Android.
  • Required tools/infrastructures:
    • an IDE
    • a proper deployment and testing environment (application server, mobile device emulators, etc.)
    • a database, to maintain the persistent status of the system
    • a means for automating the deployment and the installation of the application (e.g., gradle scripts, automated interactive installers, etc.)
  • The application consists of several distributed, interconnected software components, that work together for a common goal. There are a minimum of two types of components that must be implemented:
    • Servers, that maintain the global status of the application and provides its main functionality. Each server may serve a different geographical area, and/or follow a specific purpose within the application. Servers must communicate with each other in order to update the status, maintain consistency, synchronize data, and so on.
      • At least one server will also provide a Web-based user interface for the clients for the purpose of their domain-specific interaction with the system, maintenance and administration.
    • Mobile components, running on phones or tablets. They provide the users with a lightweight and mobile interface, and communicate with the servers as clients. The geographical location of the mobile components will be used for the purpose of identifying the parameters that contribute to a useful management of the distributed resources, such as the identification of the closest server, finding out the user's geographical position so that only the relevant information is provided, and so on.


Example: a distributed application that manages a rent-a-car system. There are several interconected servers, one for each of several geographical areas, that manage the cars in their vicinity. Users use phones or tablets to communicate with the system, and the mobile components installed on their devices communicate with the servers to update the user's location, send user requests, provide logging, user notification and payment management. Web interfaces are also available for the user to manage his/her account, modify the subscription, schedule the car renting and so on. Servers track the cars as they go from one area to another, and, for any given car, the identity of the responsible server changes accordingly. When a car enters a new area, all the relevant data is transferred to the area's server, and the system-wide status is updated. The system monitors the rental contracts, notifies the user when payments are due, and logs all car movements and events.

The deadline for the project is mandatory. It can be submitted late ("recuperari") in Week 14, but penalties will apply. Unmet milestones will also lead to penalties.

The number of students attending the same laboratory class must be roughly the same for each session. While the projects are developed as a team, the marks may differ between members of a same team.


  • each team should send a status report by e-mail, at least once in two weeks.