Programma di Ingegneria Del Software E Progettazione Web:

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).