Introduction to the course

Software Process Engineering


Danilo Pianini — danilo.pianini@unibo.it


Compiled on: 2025-11-21 — printable version

back

Professors

Danilo Pianini

Giovanni Ciatto

Contacts

Prioritize the forum

https://virtuale.unibo.it/mod/forum/view.php?id=1342533

  • All technical question
  • Any other non-personal question

When using the email

  • Include both teachers, always

Office hours

Pages of the course

Resources

  • These slides should contain everything you need
  • code examples produced during the lecture will be available right after
  • most code is already on GitHub

Slides will be produced with a rolling release model.

Books

No mandatory books, but there are both:

  • Recommended readings
  • Additional useful books

On the course webpage

Organization

Lectures in lab with immediate hands-on.

Timetable

  • Thursday 11:00–14:00 (3h) — Room 2.5
  • Friday 11:00–14:00 (3h) — Lab 4.2

Changes will be published on the forum

Goals

  1. Learn how to design software systems, following a domain-, model-, and/or test-driven approach
  2. Zero-overhead from domain definition to executable code
  3. Agile development practices, DevOps philosophy
  4. High automation + technical excellence
  5. Understand analogies and differences among programming platforms

Prerequisites

  • Knowledge of Java, Scala is a nice to have
  • Minimal ability with git
    • initializing and managing the repository options
    • committing
    • branching and merging
    • fetching and pushing
  • A curious mindset
    • Never stop when it works, stop when you know why it does
      • This is especially true in the LLM era

Exam

Discussion of a group project

  • Must feature:

    • Domain-driven design
    • Clear development process and DevOps practices
    • Full-scale automation
      • Including continuous integration and delivery
    • Deploy automation via containerization and/or orchestration
    • Technically involve 2+ target platforms
      • e.g., JVM, NodeJS, Python, C, C++, Rust, Go, etc.
      • two targets are different if they run on a different runtime (e.g., native + JVM)
      • two targets are likely different if they use different build systems (but there are exceptions: Scala/sbt + Java/Gradle are not considered different targets)
  • Can be a joint effort with other courses

    • We care about the domain modeling and the application of DevOps techniques
    • You can pick a project of another course, apply them there, and it is fine for SPE
  • Can be a project created for SPE alone

    • If you are short on ideas, we can help :)
  • Can be a project that covers SPE + thesis

“Project work”

The exam’s project can be developed a “project work”, namely, a project whose requirements are provided by a real-world company, which acts as a commissioner.

  • The students will interact with the company to apply Domain-Driven Design on a real piece of software.
  • The project will be open source
  • All the features required for a “normal” exam project still hold

It is an opportunity to learn by doing in a context closer to the industry.

Available project works will be posted on the course site on https://virtuale.unibo.it/

Software

Required

  • A working internet connection
  • A working JDK installation
  • Docker
  • Kotlin
  • Gradle
  • IntelliJ Idea
  • Visual Studio Code
  • A decent Unix terminal
    • I recommend a well-configured zsh shell
  • ki-shell (Kotlin Interactive Shell)

Course Container

Feeling lazy?

We prepared a container with all the course’s software:

Follow the instructions at https://github.com/DanySK/docker-linux-didattica

Feeling Windows-y?

The container can be converted into a WSL2 Linux distribution.

(Instructions available in the same repository as above)

Software in lab

The PCs are equipped with the WSL2 image

  • There should be a link on the Desktop
  • Double-clicking it should pop up a zsh shell
    • Wait for the first terminal to show before starting others

Introduction to the course

Software Process Engineering


Danilo Pianini — danilo.pianini@unibo.it


Compiled on: 2025-11-21 — printable version

back