77803 - Service - Oriented Software Engineering

Academic Year 2021/2022

  • 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. 8028)

Learning outcomes

The aim of the course is to provide insight into analysis, design and implementation of complex software systems using an approach based on process and service abstractions. The course will tackle, from both a design and a technical point of view, enterprise architectures based on services (SOA) and resources (REST API), and it will describe how they can support business processes.

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

  • Enterprise architecture and modeling

  • Business Process Management and BPMN

  • SOA / Choreography Web services (SOAP / WSLD / RESTful)

  • Microservices properties, design, patterns and implementation

  • Jolie

Readings/Bibliography

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

Assessment methods

Development and discussion of a project (optionally: homeworks)

Office hours

See the website of Davide Rossi

See the website of Ivan Lanese

SDGs

Industry, innovation and infrastructure

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