Introduzione al corso Progettazione e Sviluppo del Software (PSS)
Progettazione e Sviluppo del Software
Compiled on: 2025-09-07
— versione stampabile
back
Docenti
-
Titolare del corso: Prof. Danilo Pianini
-
Modulo 2: Prof. Gianluca Aguzzi
-
Modulo 3 (Lab): Prof. Angelo Filaseta
-
Tutor: Dott. Luca Deluigi
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:
- Tutti i progetti passati
- Progetti “carini” (notare che non significa che siano ben progettati!)
- 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!