93468 - Distributed Software Systems

Academic Year 2022/2023

  • Teaching Mode: Traditional lectures
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Computer Science (cod. 8028)

Learning outcomes

At the end of the course the student knows the main principles at the basis of the development of distributed systems and some modern middleware technologies to develop distributed software systems. The concept of distributed system is introduced first, then the concept of middleware technology as a distributed programming platform. At the end of the course the student will be able to select an appropriate middleware platform for a given distributed programming problem and to apply the main techniques presented to solve practical case studies.

Course contents

This advanced course presents the main ideas and technologies useful for designing modern distributed systems, especially middleware, microservices, and API oriented design. At the end of the course the students will be able to select the best kind of middleware platform for a given problem and they will be able to apply the main distributed algorithms studied to solve practical case studies.

Prerequisites:

Be able to program with an o-o language like Java or C#

Basic notions of software engineering (eg. agile, UML)

IMPORTANT: you should be able to recognize and use the main design patterns

The concept of distributed system is introduced first, then the concept of middleware technology as a distributed programming platform. Some fundamental principles of distributed systems will be explained. This introductory material is followed by a description of the main classes of middleware systems, including those for implementing service-based applications, streaming systems and and distributed ledgers. 

Syllabus

- Introduction to distributed systems and middleware technologies

- Fundamentals of distributed computing and distributed algorithms

- Naming services, security management

- Principles of concurrent programming for distributed object-based systems

- Object-Oriented Middleware (RMI) and Service-Oriented Middleware

- Peer to peer systems, coordination of P2P systems, examples of programming P2P systems

- Fundamentals of distributed ledgers and blockchain

 

 

Readings/Bibliography

  • Tanenbaum & Steen, Distributed systems: principles and paradigms, 2016
  • Bellemare, Building event-driven microsrvices, OReilly 2020
  • Krakowiak - Middleware architecture with patterns and frameworks
  • Birman, Guide to reliable distributed systems, 2012

Teaching methods

Lectures, readings

A project (single developer or small team) concerning a distributed system, assigned by the instructor. 

Intermediate (midterm): personal report on relevant distributed concepts or systems

In relation to the activities and teaching methods adopted, the attendance to this class  requires the preliminary participation of all the students to the Modules 1 and 2 of the Safety rules on study places, which can ne followed remotely in e-learning via the following link: [https://elearning-sicurezza.unibo.it/ ]

Assessment methods

•Attending class 10%

•Midterm 20%

•Project and reporting 70%

Teaching tools

Telegram channel

An open source software development environment is available for a project to be agreed wit the instructor

Office hours

See the website of Paolo Ciancarini

SDGs

Quality education Decent work and economic growth Industry, innovation and infrastructure

This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.