Programma di Ingegneria Del Software E Progettazione Web:

INGEGNERIA DEL SOFTWARE E PROGETTAZIONE WEB 2016-2017 (9CFU) (Ver. 3 >> 20 ottobre 2016)

(Vedere anche il programma del corso di Laboratorio di Applicazioni Software 2016-2017, 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

Programma e schedulo finale ( 23/01/2017) DATA  Docente  ARG. LEZIONE (2 ore)   * 03/10/2016 * De Angelis Introduzione ai corsi coordinati di ISPW e LAS . Organizzazione e contenuti.  * 03/10/2016 * De Angelis Java : Linguaggio e Piattaforma (Macchina virtuale)  * 05/10/2016 * Cantone Processo di Sviluppo. Proc. Sviluppo Sw. : Cascata.  * 10/10/2016 * De Angelis Modellazione software. UML.  * 10/10/2016 * De Angelis Introd. alla Ing. dei Requisiti I. Requisiti di utente: Funzionali e non: Stakeholder requests.Feature. Attributi, relazioni e tracciabilità dei requisiti e relative motivazioni. Dinamicità dei requisiti.  * 12/10/2016 * Cantone  Introduzione ai Proc. Sviluppo Sw. Iterativi e Incrementali. Elementi di RUP: fasi, discipline, Iterazioni + Project Management  * 14/10/2016 * Cantone OO Thinking: Reasoning on Objetcs.  * 17/10/2016 * De Angelis Introduzione ai casi d'uso. UML UC Diagram  * 17/10/2016 * De Angelis UML. Activity diagram  * 19/10/2016 * Cantone OO Thinking: Form objects, to classes to meta*classes.  * 21/10/2016 * Cantone OO Thinking : Reasoning on iInheritance  * 24/10/2016 * De Angelis  Classi, Oggetti ed Information Hiding. Esempi. UML Class Diagram I.  * 24/10/2016 * De Angelis Ereditarietà. Esempi. UML Class Diagram 2.  * 02/11/2016 * De Angelis Polimorfismo  * 07/11/2016 * De Angelis Binding di metodi in Java.  * 07/11/2016 * De Angelis Class Diagram 3 : Interfacce. Ereditarietà multipla fra interfacce in Java..  * 11/11/2016 * Cantone OO Thinking : Reasoning on multiple iInheritance, object variables in typed languages / non-typed languages & polymorphsms in programming. Smalltalk vs. C++, Java).  * 14/11/2016 * De Angelis Class Diagram 4 : Associazioni, aggregazioni e composizioni. Implementazione delle associazioni. Differenza fra Associazione ed Ereditarietà. Dipendenze e loro tipi. Progettazione con Responsabilità. Introduzione ai Pattern. Pattern GRASP  * 14/11/2016 * De Angelis Pattern GoF1 ed elem. di impl. In Java  * 16/11/2016 * Cantone OO Analysis. Sintesi su Analisi software fino a rispondere alla seguente domanda: Quali classi di analisi per un progetto software? Modello BCE (MVC | MVP). Concetto di classe Bean.* 21/11/2016 * De Angelis Pattern GoF2 ed elem. di impl. In Java  * 21/11/2016 * De Angelis Esercitazione e discussione su Pattern.  * 23/11/2016 * Cantone Eventi. Eventi asincroni e loro trattamento e programmazione in Java. Programmazione Java delle classi di Booundary per architetture laptop con AWT e Swing. JText , JCombo e JRadioButton.  * 28/11/2016 * De Angelis Metamodellazione, Metaclassi, e Reflection : UML e Java.  * 28/11/2016 * De Angelis Metamodellazione, Metaclassi, e Reflection : UML e Java.  * 30/11/2016 * Cantone Esempi di classi Java di Booundary per architetture laptop con AWT e Swing..  * 05/12/2016 * De Angelis PERSISTENZA File Java. Serializzazione/Deserializzazione  * 05/12/2016 * De Angelis Esempi su definizione e impiego File.  * 19/12/2016 * De Angelis Diagrammi di sequenza  * 19/12/2016 * De Angelis State machines  * 21/12/2016 * Cantone Prova intermedia  * 09/01/2017 * De Angelis Verifica e Validazione del Software 1.  * 09/01/2017 * De Angelis Tecniche di verifica e di validazione II.  * 11/01/2017 * Cantone Thread Java. Tipologie di codifica di thread in Java.  * 13/01/2017 * Cantone Stati di thread Java. Monitor Java. Lock implicito e uso di Synchronized. Interfacce Lock e Condition.  * 16/01/2017 * De Angelis Introduzione a JUnit.  * 16/01/2017 * De Angelis Esempi di test con Junit.  * 18/01/2017 * Cantone Stati di thread Java. Monitor Java. Lock implicito e uso di Synchronized. Interfacce Lock e Condition.  * 20/01/2017 * Cantone (Altri) Tipi di Monitor.  * 23/01/2017 * De Angelis Richiami su UML Sequence Diagram e su Pattern Observer e sua implementazione  * 23/01/2017 * Cantone-De Angelis Organizzazione e contenuti degli esami. Domande e risposte.   * 27/01/2017 * Cantone Domande e risposte sul progetto assegnato durante il corso. * 03/02/2017 * Cantone Domande e risposte sul progetto assegnato durante il corso. * 08/02/2017 * Cantone Domande e risposte sul progetto assegnato durante il corso. * 15/02/2017 * Cantone Sullo sviluppo del progetto del corso: domande e risposte.* 23/02/2017 * Cantone Domande e risposte sul progetto assegnato durante il corso.

 

 

 

 

  *  08/02/2017 * Cantone Domande e risposte sul progetto assegnato durante il corso.

 

 

 

 

LABORATORIO GUIDATO (FACOLTATIVO)

 

Ogni mercoledì dalle 14:00 alle 15:30. Dalle 15:30 alle 19:00 solo per gli studenti non aventi altre lezioni.