77803 - Service - Oriented Software Engineering

Academic Year 2023/2024

  • Docente: Davide Rossi
  • Credits: 6
  • SSD: INF/01
  • Language: Italian
  • Moduli: Davide Rossi (Modulo 1) Ivan Lanese (Modulo 2)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Computer Science (cod. 5898)

Learning outcomes

At the end of the course, the student knows the design and implementation of complex software systems using an approach based on the abstractions of service and process. The student is able to design, model and implement modern virtualized software architectures based on enterprise SOA and/or microservices; the student is also able to model and support the enactment of business processes integrating the services that compose them.

Course contents

Service-oriented architectures (SOAs) are used to build large software systems that operate across multiple organizations (as is the case in the enterprise environment) but also as a basic structure to build flexible and extremely scalable applications (as in the case of microservices).

Designing this class of systems and reasoning about their properties requires the use of appropriate abstractions and modeling techniques.

In this course we will see how service and process abstractions can interoperate to describe complex distributed systems and we will see modeling techniques based on these abstractions that help design them.
We will learn how to model processes (using BPMN), services (using UML) and how to model the interaction between processes and services and between different services through choreographies.

We will see how to exploit these techniques to design applications adhering to the service-oriented architectural style both across-enterprises and through microservices (also by adopting specific patterns).
We will also see in practice the protocols and the technologies that can be used for their implementation; in particular for the technologies to support web services we will see SOAP / WSDL and the RESTful style; for microservices we will see the use of containers (eg Docker), microservice orchestrators (eg Kubernetes), service meshes (eg Linkerd) and serialization technologies (eg Protobuf). As far as microservices are concerned, we will try in particular to understand the strengths and weaknesses of this class of applications and we will understand how to build systems that are both scalable and reliable.
To facilitate the prompt realization of examples of some of the technologies related to web services as they are introduced, we will use the Jolie language which allows rapid prototyping of SOA solutions.
Below is a list of the main topics of the course:

  • Enterprise software systems, architecture and modeling

  • Business Process Management e BPMN

  • SOA/Coreografie

  • Web services (SOAP/WSLD/RESTful/gRPC)

  • Microservices properties, design, patterns and implementation

  • Virtualized infrastructures supporting SOAs: containers (Docker), distributed containers (Kubernetes)

  • Jolie


Michael Papazoglou, "Web Services and SOA: Principles and Technology", 2nd ed. 2013, ISBN 9780273732167
Mathias Weske, “Business Process Management: Concepts, Languages, Architectures”, 3rd ed. 2019, ISBN 9783662594315

Teaching methods

Lectures and excercises

In relation to the kind of activities and didactic methods adopted, the attendance to this class will require 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

Development and discussion of a project (optionally: homeworks).

Office hours

See the website of Davide Rossi

See the website of Ivan Lanese