Programma di Ingegneria Del Software E Progettazione Web:

DOCENTI

- Prof. Ing. Giovanni Cantone

- Dott. Guglielmo G. De Angelis, PhD

- Dott. Ing. Manuel Mastrofini, PhD - Tutor

 

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). Applicare il tutto allo sviluppo di un progetto semi-professionale.

 

REGISTRO DI LEZIONI (2H), ESERCITAZIONI (2H) E LABORATORI (4H)

INCLUDE PROGRAMMA DI Laboratorio di Applicazioni Software (3 CFU)

24/09/2018 Introduzione ai corsi coordinati di ISPW e LAS . Organizzazione e contenuti.

24/09/2018 Java: Linguaggio e Piattaforma (Macchina virtuale).

26/09/2018 Processo di  sviluppo software. Cascata. Accenno a processi iterativi e incrementali.

26/09/2018 Ricevimento. Domande libere e risposte.

28/09/2018 Elementi di RUP.

28/09/2018 Completamento di Elementi di RUP. Introduzione a OO Thinking: Reasoning on Objetcs (oggetti e idea sul loro possibile livello).

01/10/2018 Modellazione software. UML.

01/10/2018 Introd. alla Ing. dei Requisiti I. Requisiti di utente: Funzionali e non: Stakeholder requests. Features. Attributi, relazioni e tracciabilità dei requisiti e relative motivazioni. Dinamicità dei requisiti.

03/10/2018 OO Thinking: Reasoning on Objetcs (oggetti, classi, comportamenti, stato, relazioni, implementazioni, attributi, operazioni, metodi, misuso di set & get).

03/10/2018 OO Coding. JVM & Ambiente di sviluppo: istruzioni di download. Richiami su Programmazione procedurale vs. OOP. Java: piccolo progetto in Java con qualche classe d'utente.

05/10/2018 OO Thinking: Reasoning on Objetcs ( costruttori, distruttori, creazione, metodi e attributi di classe). Ereditarietà singola e multipla.  Relazioni Intensionali and Estensionali.

08/10/2018 UML Introduzione ai casi d'uso. UML UC Diagrams.

08/10/2018 UML. Activity Diagram.

12/10/2018 OO Thinking: Metamorphism and Polymorphism. Object variables in typed languages. Polymorphism in programming: C++, Java. From objects to meta*classes.

15/10/2018 Classi, Oggetti ed Information Hiding.   Esempi.  UML Class Diagram I.

15/10/2018 Ereditarietà.  Esempi.  UML Class Diagram 2.

17/10/2018 OO Analysis. Sintesi su Analisi software fino a rispondere alla seguente domanda: Quali classi di analisi per un progetto software? Modelli Boundary-Control-Enity (BCE) e Model-View-Contro, (MVC) e Model-View-Presentation (MVP).  Concetto di classe Bean.               

17/10/2018 Un primo piccolo progetto OO e sue estensioni. Da Persona a Cittadino, eventualmente con coniuge, madre, padre, figli, Occupato/Inoccupato, con Carta di identita,  Lista Vaccinazioni. Implementazione in Java di classi, con impiego di ereditarietà, relazioni associative, anche riflessive, a molteplicità 0..1 o multipla.

19/10/2018 Requisiti del Progetto del corso: "User needs". Workshop

22/10/2018 Polimorfismo

22/10/2018 Binding di metodi in Java 1

24/10/2018 Binding di metodi in Java 2

24/10/2018 Documentazione del progetto del corso

26/10/2018 Requisiti del Progetto del corso: "User needs" 2. Workshop 2

31/10/2018 Grafica in Java con JFX. Eventi. Eventi asincroni e loro trattamento e programmazione in Java. Programmazione grafica Java: TextBox , ComboBox e RadioButton). Esempi di programmazione grafica in Java con JFX.

05/11/2018 Class Diagram 3: Interfacce. Ereditarietà multipla fra interfacce in Java.

05/11/2018 Class Diagram 4 : Associazioni, aggregazioni e composizioni. Implementazione delle associazioni. Differenza fra Associazione ed Ereditarietà. Dipendenze e loro tipi.

07/11/2018 Applicazioni web. Architetture MVC/PVC di applicazioni Laptop. Le classi di Boundary nelle  architetture Laptop e Web.

07/11/2018 Sviluppo di UC relativi al progetto del corso.

09/11/2018 Introduzione ai sottosistemi.

12/11/2018 Progettazione con Responsabilità.  Introduzione ai Pattern. Pattern GRASP.

12/11/2018 Pattern GoF1 ed elementi di implementazione in Java

14/11/2018 Use case per il progetto del corso

14/11/2018 JDBC.  ORS: Object Relational System.

14/11/2018 Esercitazione su sviluppo di casi d’uso per il progetto del corso.

16/11/2018 Dai sottodomini del progetto del corso ai suoi sotto-sistemi.

19/11/2018 Pattern GoF2 ed elementi di implementazione in Java

19/11/2018 Esercitazione e discussione su Pattern.

21/11/2018 Mappa Gruppi-Sottosistemi.

21/11/2018 Esercitazione Agile-like con tre sottogruppi

23/11/2018 Thread Java: eredità vs. delega per il codice run. Esempi.

26/11/2018 Persistenza. File Java. Serializzazione/Deserializzazione

26/11/2018 Esempi su definizione e impiego File.

28/11/2018 Thread Java Daemon e non. Esempi. Monitor Java. Lock implicito e uso di Synchronized. Introduzione a Stati di thread Java.

28/11/2018 Laboratorio assistito di progettazione

30/11/2018  Condition implicita e impiego di wait(), notifyAll() e notify(). Interfacce Lock e loro implementazioni e impieghi. Conditioni esplicite: await(), signalAll(), signal(). Stati di thread Java. Reentrant Synchronization.

03/12/2018 Diagrammi di sequenza

03/12/2018 State Machines

05/12/2018 Using explicit conditions. Stati di thread Java.

05/12/2018 Laboratorio assistito di progettazione

07/12/2018 Altri tipi di monitor.

10/12/2018 Eccezioni e loro modello di programmazione in Java

10/12/2018 Esempi su eccezioni e loro modello di programmazione in Java

12/12/2018 Sottosistemi e loro interfacce

12/12/2018 JDBC. Persistent Data Access Interface (DAO) . Data Transfer Object (DTO) ed esempi .

14/12/2018 UC Sottosistemi: Announcing, Evaluation, Renting, Filters mgt.

17/12/2018 Verifica e Validazione del Software 1.

17/12/2018 Tecniche di verifica e di validazione II.

19/12/2018 Elementi di HTML e CSS ed applicazioni. JSP ed esempi

19/12/2018 UC Sottosistemi: Announcing, Physical Apt, Rules, Map mgt.

21/12/2018 UC Sottosistemi: User Profile & Role, Renting, Evaluation mgt.

07/01/2019 Introduzione a JUnit.

07/01/2019 Esempi di test con Junit.

09/01/2019 Integrazione Sottosistemi

09/01/2019 Laboratorio assistito di Integrazione di Sottosistemi

11/01/2019 Meta-modellazione, Meta-classi, e Reflection : UML e Java.

14/01/2019 Implementazione e integrazione di sottosistemi

16/01/2019 Implementazione e integrazione sottosistemi

16/01/2019 Laboratorio assistito di Implementazione di sottosistemi

18/01/2019 Domande e risposte: incontro con la classe.

23/01/2019 Laboratorio assistito di Implementazione di sottosistemi.

30/01/2019 Laboratorio assistito di Implementazione di sottosistemi.