- 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.
- Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm. "Design Patterns: Elements of Reusable Object-Oriented Software". Pearson Education, 1995.
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.
ATTENZIONE:
Fino a nuovo avviso, a causa delle restrizioni dettate dal Decreto Rettorale per il recepimento del DPCM 4/3/2020, per il contenimento dell'infezione da CoVid-19, le lezioni avverranno in modalità telematica secondo le indicazioni riportate nella pagina del corso su piattaforma Moodle:
https://e-l.unifi.it/course/view.php?id=12009
(Ultimo aggiornamento: 10/03/2020)
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=12009
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 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.
Maggiori informazioni su: https://e-l.unifi.it/course/view.php?id=12009
Programma del corso
Part I - Software Implementation & Testing
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 Java Collections framework & Java Generics
o Java memory management
o JUnit framework
Part II – Software Development Life Cycle process models
• Prescriptive models
o Waterfall model
o Incremental process model
o V-shaped model
• Evolutionary models
o Prototyping model
o Spiral model
• Agile models
o Scrum
o eXtreme Programming (XP)
Part III – Software Analysis & Design techniques
• Introduction to the Unified Modeling Language (UML)
o UML Class diagrams for SW Design Modeling
o UML Use Case diagrams and templates, for SW (functional) Requirements Specification