Introduzione al corso Progettazione e Sviluppo del Software (PSS)

Progettazione e Sviluppo del Software

C.D.L. Tecnologie dei Sistemi Informatici

Danilo Pianini — danilo.pianini@unibo.it

Gianluca Aguzzi — gianluca.aguzzi@unibo.it

Angelo Filaseta — angelo.filaseta@unibo.it

Compiled on: 2025-09-07 — versione stampabile

back

Docenti

Sito del corso su virtuale.unibo.it

Contatti

Come contattare

  • Attraverso il Forum Studenti per domande la cui risposta è di interesse generale
  • Via email tenendo in copia tutti i docenti
    • Per questioni personali
    • Si usi e-mail istituzionale @studio.unibo.it
    • Si usi prefisso [LPTSI-PSS] nel subject della mail
  • Ricevimento
    • Si vedano le pagine web dei docenti

Organizzazione generale del corso

Lezioni aula (giovedì 15-18, venerdì 9-12)

  • Illustrano i concetti teorici, metodologici, e pratici
  • Basate su slide proiettate (ma non solo)

Laboratorio (martedì 9-12)

  • Illustra aspetti metodologici e pratici
  • Con esercizi (da svolgere in autonomia) necessari alla comprensione e alla sperimentazione
    • Con l’aiuto del docente e del tutor per dubbi, problemi, e correzioni
  • È parte integrante del corso, è fondamentale per riuscire a sostenere l’esame

Studio a casa

  • Rilettura slide
  • Completamento di tutti gli esercizi presentati in laboratorio
  • È praticamente obbligatorio se volete rimanere in pari…

Contenuti

Programma (di massima) del corso

  • Elementi base di programmazione object-oriented (OO)
    • Incapsulamento, Ereditarietà, Polimorfismo
  • Conoscenza del linguaggio Java
    • Vi sarà utile anche per capire il linguaggio Kotlin a Sistemi Mobile
  • Aspetti avanzati dei linguaggi OO
    • Generici e varianza
    • Reflection
    • Lambda expressions, stream, e programmazione ibrida OO/funzionale
  • Librerie (incluse interfacce grafiche)
  • Testing
  • Pattern e buone pratiche di programmazione
  • Organizzazione di un progetto software
    • Version control (git)
    • Build automation (gradle)

Materiale

  • Slide (e codice sorgente) a cura dei docenti
    • messi a disposizione sul sito del corso su Virtuale
    • necessari e sufficienti per acquisire le competenze e superare l’esame

Testi di riferimento (non necessario l’acquisto)

Programmazione in Java

  • B.Eckel. Thinking in Java, 4th edition.
  • J.Block. Effective Java, 2nd edition.
  • R.Warburton. Java 8 Lambdas.

Altri riferimenti

  • E.Gamma et al. Design Patterns Elements of Reusable Object-Oriented Software.
  • R.Martin. Clean Code: A Handbook of Agile Software Craftsmanship
  • Java e C# online documentation (tutorials, Language Specification, APIs)

Software

Java

Istruzioni sull’installazione (sul PC di casa)

Sul ruolo di questo corso

Elementi essenziali

  • Costruzione del software, e quindi di sistemi
  • Analisi problemi, e organizzazione di soluzioni
  • Tecniche base ed (alcune) avanzate di programmazione ad oggetti
  • Introduzione al trend della programmazione moderna
  • Gestione del progetto
  • Utilizzo di strumenti integrati di sviluppo

L’importanza nel vostro percorso

  • Enfasi sull’approccio metodologico
  • Competenze a curriculum
  • Target di qualità piuttosto elevato
  • È cruciale dedicargli subito il tempo necessario

Esame

Sviluppo + Discussione progetto

  • Progetto sviluppato in gruppo (3-4 studenti)
    • Potete formare i gruppi anche prima del progetto, e aiutarvi per i laboratori
    • Il progetto vero e proprio andrà iniziato dopo la fine delle lezioni, perché solo allora avrete tutti gli elementi necessari
  • Concordato col docente prima di iniziare
  • Esempi di progetti del passato:
  • Da relazionare con qualità, poi discusso oralmente (su appuntamento)
    • I dettagli (cf. consegna, relazione etc.) discussi durante il corso

Prerequisiti

Buona conoscenza

  • tecniche di programmazione imperativa/strutturata
  • costruzione e comprensione di semplici algoritmi e strutture dati

Attenzione a chi è già “fluente” in linguaggi ad oggetti

  • Java o C#
  • è difficile disimparare le cattive abitudini!