Ingegneria del Software e Sistemi Informativi

Denominazione dell’insegnamento: Ingegneria del Software e Sistemi Informativi
Corso di Laurea o di Laurea Magistrale : Ingegneria Informatica
SSD:       ING-INF/05                  Numero C.F.U.:   9            
Titolari:        Beniamino Di Martino - Massimo Ficco

Obiettivi del corso

Il corso mira a fornire ai discenti le principali metodologie e strumenti concettuali per la specifica dei requisiti, la progettazione, lo sviluppo e la gestione del Ciclo di Vita di un moderno Sistema Software Complesso.

Programma del corso

INGEGNERIA DEL SOFTWARE

Requisiti di un sistema software

•              Correttezza, Affidabilità, Robustezza, Manutenibilità, Amichevolezza, ect..

Il ciclo di vita del software

•              Modello a cascata; modello con retroazione; modelli evolutivi; modello trasformazionale.

•              Modelli di processo specializzati: il modello a V, il processo unificato, il modelli di sviluppo a componenti.

Specifica e progettazione del software

•              Analisi e Specifica dei Requisiti.

•              Progettazione orientata agli oggetti (concetti).

Il linguaggio UML

•              UML – Aspetti statici

o             Diagrammi dei casi d’uso

o             Diagramma delle classi.

•              UML – Aspetti comportamentali

o             Diagramma delle classi: organizzazione della gerarchia, contenimento tra classi, realizzazione del contenimento lasco e stretto, contenimento ed ereditarietà, realizzazione dell’associazione, realizzazione dell’interazione tra gli oggetti.

o             I diagrammi di sequenza, di stato, di attività.

•              UML – Aspetti implementativi.

o             Diagramma dei componenti

o             Diagramma di distribuzione

o             Packages e dipendenze tra i packages, template ed interfacce

o             Architetture stratificate.

Le Architetture Orientate ai Servizi (SOA)

•              Architetture SOA : Service Oriented Analysis and Design (SOAD).

•              Introduzione a XML. Le tecnologie CSS e XLT per la visualizzazione dei documenti XML.

•              Le tecnologie DTD e XML schema. Validazione dei documenti XML.

•              Introduzione ai Web Services. Le tecnologie SOAP, UDDI e WSDL. Caratteristiche dei Web Services.

•              Esempi di sviluppo basati su Eclipse.

Metodologie agili

•              Sviluppo rapido del software.

•              Metodologie agili: Estreme Programming (XP), Scrum Model, Prototipizzazione del software.

Design Patterns

Pattern Architetturali: Model View Control.

  • Classificazione dei Design Patterns (Creational, Structural, Behavioural, Concurrency).
  • Creational Patterns: Abstract Factory (con esempio), Builder, Factory Method, Prototype, Singleton.
  • Structural Patterns (Adapter, Bridge, Composite, Proxy; accenni su: Container, Decorator, Façade, Flyweight)
  • Behavioural Patterns (Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Visitor; accenni su Observer, State, Strategy, Template Method)
  • Concurrency Patterns (Thread Pool, Master Worker, Divide et Impera)
  • Cloud Patterns. Patterns agnostici (con esempi), Patterns proprietari (da AWS e Azure).

Forward Engineering e Reverse Engineering.

•              Analisi, trasformazione e riuso del Codice.

•              Software Modernization.

•              Il problema del Millennium Bug

Compilatori

•              Compilatori.

•              Analisi lessicale.

•              Espressioni regolari

•              Automi a stati finiti.

•              Linguaggi.

•              Grammatiche.

Parsing

•              Alberi di parsing.

•              Abstract Syntax Tree.

•              Visita dell’AST.

Analisi e Rappresentazione del codice al livello Strutturale

            Analisi e Rappresentazione del Flusso

o             Analisi e Rappresentazione del Flusso di Controllo

            Grafo di Flusso

            Grafo di Flusso di Controllo

            Relazione di Dominanza

o             Analisi e Rappresentazione del Flusso dei Dati

            Reaching definitions

            Variabili vive

            Catene definizione-uso e uso-definizione

            Sistemi Data Flow monotoni

            Analisi degli intervalli

            Analisi e Rappresentazione delle Dipendenze

o             Control Dependence

            Relazione di post-dominanza

            Dipendenza di Controllo

            Loops

o             Data Dependence

            Dipendenze true, anti ed output

            Cammini liberi da definizioni

            Dipendenze Loop Carried e Loop Independent

            Spazio delle Iterazioni

            Vettore delle dipendenze

            Livello di una dipendenza

            Algoritmi per la determinazione delle dipendenze

            Il Program Dependence Graph

            Strumenti Open-Source per la costruzione di moduli di analisi e compilatori

            SISTEMI INFORMATIVI

I sistemi informativi

•              Informazione. Il sistema informatico. I sistemi informativi. I processi aziendali. La piramide di Anthony.

I Sistemi Operazionali

•              Informazione operativa. Basi di conoscenza aziendale.

I sistemi operazionali aziendali.

•              Sistema di Basi di Dati e componenti di un DBMS.

Modello Concettuale e logico dei Dati

•              I diagrammi Entità-Relazioni-Attributi (ERA).

•              Query SQL (cenni).

I Sistemi Operazionali di base

•              Sistema gestionale classico. Sistema ERP.

•              Attività routinarie fondamentali dell’azienda.

•              Sistemi di supporto primario all’ERP. Estensioni dell’ERP.

I sistemi informazionali.

•              Definizione e proprietà delle transazioni.

•              I sistemi informazionali. Data warehouse.

•              Modello multidimensionale: fatti, misure, dimensioni. Viste su dati multidimensionali.

•              Gerarchie. Data mart.

Data Warehousing

•              Architettura dei sistemi di data warehousing.

•              Integrazione di sorgenti informative. Progettazione del DW e di basi di dati multidimensionali: modello concettuale (Dimensional Fact Model) e modello logico (ROLAP, MOLAP, HOLAP).

Curricula scientifici dei docenti

Beniamino Di Martino è Professore Ordinario presso la Seconda Università di Napoli, per il settore Scientifico Disciplinare INGINF/05 - Sistemi per l' Elaborazione dell' Informazione. Dal 1995 al 1998 e' stato Ricercatore presso l' Institute for Software Technology and Parallel Systems dell' Universita' di Vienna (Austria). Dal 1998 al 1992 è stato Ricercatore Universitario, e dal 2002 al 2005 Professore Associato, presso la Seconda Universita' di Napoli. Ha pubblicato 10 testi scientifici a diffusione internazionale ed oltre 200 pubblicazioni scientifiche a diffusione internazionale, di cui più di 50 articoli su riviste internazionali.Ha partecipato ed è stato responsabile scientifico a numerosi progetti di ricerca internazionali (EC Esprit, EC CEI-Pact, EC TMR, Austrian FWF), nazionali (PRIN, FAR) e regionali. E’ Project Coordinator del Progetto Europeo (FP7-ICT) mOSAIC (su Cloud Computing), e Responsabile di Unità per i Progetti Europei FP7-SMARTCITIES CoSSMIC (su Smart Grids) e JU-ARTEMIS Crystal (su sistemi software affidabili). E' Editor o Associate Editor di 7 riviste scientifiche internazionali (tra cui IEEE Transactions on Cloud Computing) , membro in numerosi editorial board di riviste internazionali e guest editor per numerose riviste internazionali. E’ stato general e program chair di numerosi congressi internazionali, steering committee member di congressi internazionali, membro di numerosi comitati di programma di congressi internazionali. E’ stato membro dell’ Executive Board of the IEEE CS Technical Committee on Supercomputing Applications (IEEE-TCSA), e Vice Chair dell’ Executive Board of the IEEE CS Technical Committee on Scalable Computing (IEEE-TCSC). E’ membro dell’ IEEE Working group su Cloud Interoperability, del Cloud Standards Customer Council, del Cloud Computing Experts’ Group della Commissione Europea – Internet of Services, Software and Virtualization Unit, del Comitato di Indirizzo della Federazione IDEM (IDEntity Management). E’ stato Chair del Nomination Committee for the ``2012 IEEE TCSC Award of Excellence in Scalable Computing'' e membro del Nomination Committee for the ``2009 IEEE TCSC Medal for Excellence in Scalable Computing".

E’ revisore di progetti per la Commissione Europea, per i programmi ICT, ICT-PSP ed eInfrastructures, e per l’ European Research Council (ERC). E’ revisore di progetti scientifici per i Ministeri della Ricerca del Belgio, del Lussemburgo e del Cile. E’ revisore di progetti industriali in ambito ICT per i Ministeri dell’ Università e della Ricerca, e dello Sviluppo Economico, per la Regione Piemonte, per la Regione Campania, per la Regione Calabria, per la Regione Lazio, per la Regione Puglia e per numerosi enti pubblici locali. E’ stato membro del “Comitato Tecnico per la predisposizione ed implementazione del Piano Strategico della Società dell’ Informazione della Regione Campania”. E’ vice-Direttore del Dipartimento di Ingegneria Industriale e dell’ Informazione della Seconda Università di Napoli. E’ Delegato del Rettore per l’ Informatica e per il GARR. E’ membro del Comitato di Indirizzo dell’ Iniziativa Nazionale IDEM – Identity Management, e Responsabile IDEM per l’ Ateneo. Ha svolto attività di ricerca sui seguenti temi: Modelli, paradigmi, linguaggi ed ambienti di programmazione ed esecuzione avanzati per sistemi informatici Distribuiti, Grid e Cloud, Tecniche e strumenti di Reverse Engineering e Program Comprehension, Semantic Web e Semantic Web Services, Natural Language Processing e Business Analytics, Ingegneria della Conoscenza, Intelligenza Artificiale e Business Intelligence.

Competenze attese in ingresso e/o Propedeuticità
Risultati d’apprendimento attesi
Anno del corso di studio in cui è inserito 1° Anno Laurea Magistrale
Testi di riferimento                         

        Riger S. Pressman: Principi di Ingegneria del Software 5/ed, McGraw-Hill.

        Dispensa “Analisi, Rappresentazione e Comprensione Automatica del Codice” – Prof. Beniamino Di Martino

        M. Golfarelli e S. Rizzi: Data Warehouse – Teoria e pratica della programmazione, McGraw-Hill.

Materiale didattico aggiuntivo

dispense – lucidi delle lezioni

Modalità di erogazione Tradizionale.
Sede Via Roma 29 Aversa.
Organizzazione della didattica
Modalità di frequenza
Metodi di valutazione

L’esame consiste in un elaborato (facoltativo) e una prova orale finali. L’elaborato consta nello svolgimento di un progetto di gruppo o task individuale relativo ad uno degli argomenti del corso, da concordare con il docente. La prova orale mira all’accertamento delle competenze del candidato di tipo teorico e progettuale, e verte di norma sulla discussione dell’elaborato e sugli aspetti teorici degli argomenti trattati al corso. Nel valutare l’elaborato, la commissione tiene conto del corretto impiego delle tecniche di ingegneria del software illustrate nel corso.

Dati statistici delle votazioni conseguite dagli studenti

Sono resi disponibili a cura del docente:

Calendario delle attività didattiche http://www.cdcinformazione.unina2.it/calendari
Eventuali attività di supporto alla didattica Esercitazioni.
Orari di ricevimento studenti Sono resi disponibili a cura del docente:
Calendario delle prove di esame https://esse3.ceda.unina2.it/Home.do