Navigazione di Sezione:
Ingegneria Del Software E Progettazione Web 2015/2016
INGEGNERIA DEL SOFTWARE E PROGETTAZIONE WEB 2015-2016 (9CFU)
(Vedere anche il programma del corso di Laboratorio di Applicazioni Software 2015-2016, 3 CFU)
OBIETTIVI
Introdurre ai modelli di processo software e alla ingegneria dei requisiti, fornire i fondamenti di analisi e progettazione del software, della programmazione OO sequenziale e, rispettivamente, concorrente di applicazioni laptop e web, formare su relativi linguaggi (UML, Java, JSP), ambienti di sviluppo e strumenti (JEE, JUnit).
DOCENTI
- Prof. Giovanni Cantone
- Dott. Guglielmo G. De Angelis., PhD
- Ing. Manuel Mastrofini, PhD
PROGRAMMA
Ingegneria dei requisiti. Introduzione alle discipline fondamentali dell'ingegneria software. Processo di sviluppo SW. Elementi su modello a cascata e su Rational Unified Proces (RUP).
OO Thinking. Modellazione software. UML- Casi d'uso. UML- Activity Diagram. Classi, Oggetti ed Information Hiding. Class Diagram. Ereditarietà. Polimorfismo. Binding di metodi in Java. Interfacce. Ereditarietà multipla fra interfacce in Java. Associazioni, aggregazioni e composizioni. Differenza con Ereditarietà. Implementazione delle associazioni. Dipendenze e loro tipi. Esercitazione UML e OOP in Java 1. Esercitazione UML e OOP in Java 2. Diagrammi di sequenza. Macchine a stati e rel. diagrammi UML. GoF ed elementi di implementazione in Java. Altri tipi di Pattern. Sottosistemi : Interfacce e Componenti. Eccezioni e loro modello di programmazione in Java. Metaclassi. Reflection Java. File Java. Serializzazione/Deserializzazione. Esempi su definizione e impiego File Java. Verifica e Validazione del Software. Testing con JUnit.
Introduzione. Java : Linguaggio e Piattaforma. Piattaforme IEE. Programmazione Java di tutto quanto sopra.
Programmazione concorrente e applicazioni web. Introduzione. Modelli di concorrenza. Processi pesanti e leggeri. Thread Java. Tipologie di codifica di thread in Java. Concorrenza in ambiente globale. Stati di thread Java. Tipi di monitor. Monitor Java. Lock implicito e uso di Synchronized in Java. Lock e Condition Java. Lock di lettura scrittura. Altri tipici problemi di concorrenza in ambiente globale e loro soluzione in Java. Java Bean. File Java. Eventi e loro gestione in Java. Grafica in Java con Swing. Architettura MVC di applicazioni web. HTML e JSP. JSP ed esempi. Annotazioni Java.
Elementi sullo sviluppo software in team e relativi strumenti (Git).
Progetto del corso: assegnazione, discussione e sviluppo in classe di elementi di: UC Modeling. Use Case Realization. Analisi. Progettazione. Costruzione. Test.
LEZIONI E ORARI
(Consuntivo del 29.06.2016)
(Data, docente, argomento)
28/09/2015 G. Cantone - G. De Angelis. Introduzione ai corsi coordinati di ISPW e LAS . Organizzazione e contenuti.
28/09/2015 G. De Angelis. Java : Linguaggio e Piattaforma (Macchina virtuale).
30/09/2015 G. Cantone. Sviluppo software. Il processo a cascata.
05/10/2015 G. De Angelis. Modellazione software. UML.
05/10/2015 G. De Angelis. Introd. alla Ing. dei Requisiti I. Requisiti di utente: Funzionali e non: Stakeholder requests. Feature.
07/10/2015 G. Cantone. Attributi, relazioni e tracciabilità dei requisiti e relative motivazioni. Dinamicità dei requisiti. Introduzione ai processi iterativi e incrementali. Elementi di RUP: discipline, fasi, iterazioni.
12/10/2015 G. De Angelis. Introduzione ai casi d'uso. UML Use case diagram.
12/10/2015 G. De Angelis. UML Activity diagram.
14/10/2015 G. Cantone. Un progetto da sviluppare durante il corso a cura degli studenti. Requisiti di massima.
19/10/2015 G. De Angelis. Classi, oggetti ed information hiding. UML Class diagram I.
19/10/2015 G. De Angelis. Ereditarietà. Esempi. Class diagram 2.
21/10/2015 G. Cantone. OO Thinking and Elements of Java Programming. Reasoning on classes and inheritance. The concept of meta*class.
26/10/2015 G. De Angelis. Binding di metodi in Java
26/10/2015 G. De Angelis. Class diagram 3 : Interfacce. Ereditarietà multipla fra interfacce in Java.
28/10/2015 G. De Angelis. Modelli di linguaggi per OOP: Smalltalk vs. C++, Java. Class diagram 4 : Associazioni, aggregazioni e composizioni. Implementazione delle associazioni. Differenza fra Associazione ed Ereditarietà. Dipendenze e loro tipi.
02/11/2015 G. De Angelis. Progettazione con Responsabilità ed Introduzione ai Pattern.
02/11/2015 G. De Angelis. Pattern GRASP.
04/11/2015 G. De Angelis. Pattern GoF1 ed elementi di implementazione in Java.
09/11/2015 G. De Angelis. Pattern GoF2 ed elementi di implementazione in Java.
09/11/2015 G. De Angelis. Esercitazione e discussione su Pattern.
11/11/2015 G. Cantone. OO Analysis. Sintesi su Analisi software. Modelli Boundary-Control-Entity (BCE), Model View Controller (MVC) , Model-View-Presentation (MVP). Concetto di classe Bean.
16/11/2015 G. De Angelis. Persistenza. File Java. Serializzazione/Deserializzazione.
16/11/2015 G. De Angelis. Esempi su definizione e impiego File.
18/11/2015 G. Cantone. Meccanismi: dall'analisi alla progettazione. Differenza fra i modelli OO, File, incluso Object file, e RDB. Problemi connessi alla conversione dall'uno all'altro modello. I modeli JOO, JIO e JDBC. Ancora su Java Serialize.
23/11/2015 G. Cantone. Applicazioni laptop e applicazioni web. Architetture MVC/MVP di applicazioni laptop e di applicazioni web. Il ruolo delle classi di confine nelle due architetture.
23/11/2015 G. Cantone. Eventi. Eventi asincroni e loro trattamento e programmazione in Java. Introduzione all'IO da interfaccia grafica in Java con AWT, Swing. Le classi JOptionPane, JCombo e JRadioButton.
25/11/2015 G. Cantone. Programmazione Java delle classi di Booundary per architetture laptop con AWT e Swing. JText .
30/11/2015 G. De Angelis. UML. Diagrammi di sequenza.
30/11/2015 G. De Angelis. State machines.
02/12/2015 M. Mastrofini - G. Cantone. Version Control Systems.
09/12/2015 G. Cantone. HTML fino a HTML5.
14/12/2015 G. De Angelis. Eccezioni e loro modello di programmazione in Java.
14/12/2015 G. De Angelis. Esempi su eccezioni e loro modello di programmazione in Java.
16/12/2015 G. Cantone. JSP.
11/01/2016 G. De Angelis. Verifica e Validazione del Software 1.
11/01/2016 G. De Angelis. Tecniche di verifica e di validazione.
13/01/2016 G. Cantone. Stati di thread Java. Monitor Java. Lock implicito e uso di Synchronized. Interfacce Lock e Condition.
15/01/2016 G. De Angelis. Introduzione a JUnit. Esempi di test con Junit.
18/01/2016 G. De Angelis. Metamodellazione, metaclassi, e reflection : UML e Java.
18/01/2016 G. De Angelis. Esempi su metamodellazione, metaclassi, e reflection : UML e Java.
20/01/2016 G. Cantone. Ancora su stati di thread. Implementazione di semplice Lock, Lock rientrante e condizioni, Altri tipi di Monitor.
22/01/2016 G. De Angelis. Domande e risposte.
CORSO INTERGRATIVO (Ing. M. Mastrofini, PhD)
LEZIONI E ORARI
30/10/2015 M. Mastrofini. Dai requisiti all'analisi del progetto del corso: astrazioni chiave e casi d'uso.
02/12/2015 M. Mastrofini. Version Control Systems.
04/12/2015 M. Mastrofini. Strumenti a supporto del coordinamento del gruppo di lavoro: GIT.
11/12/2015 M. Mastrofini. Esempi d'impiego di HTML. Cascade Style Sheet ed esempi di impiego.
18/12/2015 M. Mastrofini. JavaScript.
LABORATORIO GUIDATO (FACOLTATIVO)
Il docente e I tutori sono presenti e disponibili presso il Laboratorio di Informatica o altra aula, mediamente per quattro ore consecutive, in ciascuno dei seguenti giorni: 02/10/2015, 09/10/2015, 16/10/2015, 23/10/2015, 30/10/2015, 13/11/2015, 20/11/2015, 27/11/2015, 04/12/2015, 04/12/2015, 11/12/2015, 18/12/2015, 08/01/2016, 13/01/2016, 22/01/2016, 22/01/2016.
Altresì, oltre che in orario di ricevimento del docente, incontri con i tutori sono pianificati su base tipicamente settimanale nei mesi da maggio a luglio, inclusi i giorni 19/05/2016, 26/05/2016, 09/06/2016, 22/06/2016, 27/06/2016, 28/06/2016, e così via (vedere i relativi messaggi inviati attraverso la lista di spedizione del corso: ispw@lists.uniroma2.it).