- Ben Evans, and David Flanagan. "Java in a Nutshell: A Desktop Quick Reference". O'Reilly Media, 2018.
- Martin Fowler. "UML distilled: a brief guide to the standard object modeling language". Addison-Wesley Professional, 2004.
Obiettivi Formativi
Conoscenze e competenze (cc1, con riferimento ai "Descrittori di Dublino")
Il corso introduce i principi e le metodologie di base dell'Ingegneria del Software, attraverso le diverse fasi di sviluppo e produzione di un sistema software: analisi, progettazione, implementazione, testing, e manutenzione.
Attraverso le attività di laboratorio vengono fornite:
• le competenze necessarie per supportare l'analisi e la progettazione di un sistema software mediante strumenti standard quali Unified Modeling Language (UML);
• le competenze necessarie per supportare lo sviluppo e il testing di un sistema software secondo i principi dell'Object-Oriented Programming (OOP), con declinazione specifica al linguaggio Java.
Capacità acquisite (ca1, con riferimento ai "Descrittori di Dublino")
Al termine del corso lo studente avrà acquisito:
• conoscenza e capacità di comprensione dei principali modelli di processo per lo sviluppo di sistemi software;
• capacità di applicare le conoscenze acquisite per supportare l’analisi, la progettazione, lo sviluppo e il testing di sistemi software;
• le competenze necessarie per proseguire gli studi in modo autonomo nell’ambito delle tecniche di progettazione e di sviluppo software in diversi contesti applicativi.
Prerequisiti
Esperienza basilare di programmazione in linguaggio C.
Metodi Didattici
Lezioni frontali con utilizzo di slides e lavagna tradizionale. Il corso prevede sessioni pratiche di laboratorio.
Altre Informazioni
Gli studenti sono invitati a prendere visione della pagina del corso su piattaforma Moodle per maggiori informazioni:
https://e-l.unifi.it/course/view.php?id=7759
Modalità di verifica apprendimento
L'esame si compone di una prova scritta ed una prova orale facoltativa.
La prova scritta consiste nella soluzione di esercizi di programmazione in linguaggio Java e nella discussione di contenuti del programma. La prova è svolta su carta e ha una durata di 1.5h/2h. Durante la prova non è consentita la consultazione di libri, dispense e appunti e non è consentito l'utilizzo della calcolatrice.
Possono accedere alla prova orale facoltativa solo i candidati che ottengono una valutazione almeno pari a 18/30 alla prova scritta. La prova orale inizia con la discussione della prova scritta e prosegue con l'approfondimento di contenuti del programma.
https://e-l.unifi.it/course/view.php?id=7759
Programma del corso
Part I - Introduction to the Java language and the Java Platform
• Fundamentals
o Primitive data types
o Variables, operators and expressions
o Statements
o Methods
• Object-oriented programming concepts
o Reference data types
o Classes and objects
o Subclassing
o Interfaces, Enums, Annotations and Arrays
• Advanced
o Nested types
o Collections
o Java memory management
Part II – Software Development Life Cycle process models
• Basic concepts
• Prescriptive models
o Waterfall model
o Incremental process model
o V-shaped model
• Evolutionary models
o Prototyping model
o Spiral model
• Agile models
o eXtreme Programming (XP)
Part III – Software Analysis & Design techniques
• Introduction to the Unified Modeling Language (UML)
o UML Class diagrams
o UML Use Case diagrams and templates