72939 - Software Systems Engineering M

Academic Year 2026/2027

  • Teaching Mode: In-person learning (entirely or partially)
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Computer Engineering (cod. 6719)

Learning outcomes

Detailed knowledge about languages, models and technologies for the analysis, the development, the documentation, the deployment and the maintenance of (distributed) software systems.

Course contents

The course has two main objectives:

  • To address the design and development of software systems that move beyond the traditional object-oriented paradigm in favor of a distributed and heterogeneous (micro)service (and/or agent-based) approach.

  • To understand how AI cannot fully replace humans in software engineering. Instead, AI is viewed as a powerful tool that modern software engineers can leverage to significantly reduce development time and costs. Focus is placed on aspects that are "hard to reduce" (or automate), such as the analysis phases (requirements and problem analysis), and on the opportunity/necessity to drive technological innovation.

A strongly recommended prerequisite is to have Master's-level knowledge of programming languages and models.

At the end of the course, the student:

  • is able to set-up cooperative software production processes, based on agile (SCRUM) development that exploit also executable models exprressed using custom meta-models;
  • is able to design and develop software systems with related testing plans, in an incremental and evolutive way, by starting from the problem and from the application domain rather than from the implementation technology, also by using executable models of requirement and problem analysis;
  • is able to critically evaluate the continuos evolution of software technologies, both as regars the computational aspects and the software development process, by operationally acquiring knowledge on languages, methodologies and tools such as Kotlin, Gradle, SCRUM, SpringBoot, DevOps, Docker, etc.
  • is able to face the analysis, the design and development of distributed, heterogeneous proactive-reactive applications (together with related development platforms and run-time supports) with particular reference to computational models based on message-passing and event-driven paradigms;
  • is able to realize message-based interactions among distributed software components by using high-level logical models and implementations based on different protocols (TCP, UDP, HTTP, CoAP, MQTT);
  • is able to understand how it is possible to design and build software development environments able to automatic code generation (Sofware Factories in ecosystems like Eclipse and IntelliJ) based on Model Driven Software Development (MDSD) and on Domain Specific Languages (DSL), by considering also AI Generated Code technologies;
  • is able to develop application able to combine high-level aspects (with particular reference to AI) with low-level aspects related to Internet of Things (IOT) devices, in the context of both virtual and real environments, built by using low-cost computers like RaspberryPi and Arduino;
  • is able to apply the concepts, the devices and the tools developed in the course for the design and development of a final application that exploits one or more IOT devices - in particular Differental Drive Robots (DDR) with sensors - that can operate in relatively autonomous way in different virtual or real enviroments, without modifying the software that does express the business logic of the problem.

Readings/Bibliography

The teacher provides lerning material as a reference guide for the reading of more detailed papers and books. See for example https://anatali.github.io/issLab2026/_static/docs/Protobook.pdf).

The use of AI-based tools (e.g., NotebookLM, Claude.ai) is deemed useful for supporting individual study

Teaching methods

The course is based on a strong interaction between theory and practice, and on the cooperative work (teacher-students and student-student) related to a set of case-studies.

The case studies are proposed in an incremental way, with increasing complexity, with the goal to build reusable software, useful for the final application

The work of the students will be discussed during specifc 'review' phases (in the SCRUM style) related both to the product and to the develpment process, with the goal to better understand the motivation for the modern evolution of computational paradigms and of software production processes.

Given the nature of the activities and the teaching methods adopted, regular and continuous attendance of this training activity is practically essential and requires all students to have previously completed Modules 1 and 2 of the health and safety training via e-learning."

 

Assessment methods

The activites are naturally related to the continuos self-evaluation of the work of each student.

The final examination will performed in two-phases.

  • The first phase starts by publishing a set of requirements and ends with the production of a prototype
    of a software system satisfying the requirements, The goal of this phase is to evaluate the achievement of practical skills and can be performed both in individual way or in a team composed of at most 3 students.
  • The second phase consists of an individual discussion of the work. The goal is to evaluate the degrre of theorectical knowldege, awarness and autonomy of each specific student. In this phase, the student should highlight the essential aspects of the work done amd the choices made with reference to what exposed in the course.

 

See also GitHubNatali

Teaching tools

The course makes use of widespread environments and tools (e.g. Eclipse, IntelliJ, Git) software production with the intent to promote cooperative work between the teacher and the students and between the students.

The GIT repository of the course [https://github.com/anatali/issLab2026] provides material related both to theory and coding. See, for an example https://anatali.github.io/issLab2026/_static/docs/Protobook.pdf).

Each case-study discussed in the course is furnished with HTML documents that can be used as documention, as learning material and also as a starting point for more specialized versions built by the student.

Links to further information

https://github.com/anatali/issLab2026

Office hours

See the website of Antonio Natali