Introduction to the course

Software Process Engineering


Danilo Pianini — danilo.pianini@unibo.it


Compiled on: 2024-05-20 — 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 9:00–11:00 (2h) — Lab 3.1
  • 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 and Scala
  • 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

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+ platforms
      • e.g., JVM, NodeJS, Python, C, C++, Rust, Go, etc.
  • 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 :)

Software

Required

  • A working internet connection
  • A working JDK installation
  • Kotlin (kotlinc REPL working)
  • Gradle
  • Docker
  • IntelliJ Idea
  • Visual Studio Code
  • A decent Unix terminal

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