Ingegneria del Software 2014

Похожие документы
Ingegneria del Software 2010

Ingegneria del Software L-A

Ingegneria del Software

Materiale didattico. Sommario

INGEGNERIA DEL SOFTWARE

Lezione 1 Ingegneria del Software II- Introduzione e Motivazione. Ingegneria del Software 2 Introduzione e Motivazioni 1

Modulo 16. Introduzione ai Design Patterns. Tutte le case assolvono alla medesima funzione: offrire uno spazio abitativo

Elementi di Informatica e Programmazione

Principi di Progettazione del Software a.a Introduzione al corso Prof. Luca Mainetti Università del Salento

Ingegneria del Software II

Basi di Dati Ingegneria Informatica e delle Telecomunicazioni

Ingegneria del Software T

Fondamenti di informatica. Introduzione al corso di Fondamenti di informatica I e II (informatici) Anno Accademico

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011. Benvenuti al Corso!

Introduzione. Fondamenti di Informatica 1. Dispensa 1 Gennaio Contenuti. Alfonso Miola. K Corso di Fondamenti di Informatica 1

algoritmi e strutture di dati

Fondamenti di Informatica. Proff. B.Buttarazzi & A.D Ambrogio A.A. 2011/2012

Economia Politica. Corso di laurea in Economia e Politiche Europee. Prof. Raffaele Paci

Modelli e complessità di calcolo

Le aree dell informatica

Principi di Progettazione del Software a.a " Introduzione al corso! Prof. Luca Mainetti! Università del Salento!

Fondamenti di Informatica

Modelli e Metodi per la Simulazione (MMS)

Algoritmi e Strutture Dati

Gestione dello sviluppo software Modelli Base

Fondamenti di Informatica T-1

Il PROCESSO UNIFICATO

Docente: Prof. Marco Patella Tutor: Stefano Pio Zingaro

3. Ciclo di Vita e Processi di Sviluppo

Elementi di Informatica

MATERIALI PER LA DISCUSSIONE

Ingegneria del Software

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Organizzazione del corso

Fondamenti di Informatica (lettere A-I) A

Algoritmi e Strutture Dati

FONDAMENTI DI INFORMATICA II

Corso di Fondamenti di Informatica e Laboratorio T-AB

Corso di. Fondamenti di Informatica T

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

APPUNTI PER IL CORSO DI ALFABETIZZAZIONE INFORMATICA

CALCOLATORI ELETTRONICI

Introduzione al Calcolo Scientifico

Università di Pisa Facoltà di Scienze Matematiche Fisiche e Naturali

Corso di Laurea Ingegneria Informatica

Fondamenti di Informatica

Ingegneria del Software ( )

Elementi di Informatica Corso di Laurea in Scienze Geologiche a.a. 2003/2004. Docente. Orario. Da Ottobre-Dicembre:

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Linee di programmazione

Fondamenti di Informatica e Laboratorio T-AB

Corso di RETI DI COMUNICAZIONE E INTERNET Modulo 1

Analisi e specifica dei requisiti

Fondamenti di Informatica T1"

Introduzione alla programmazione strutturata

Reti Logiche e Architettura dei Calcolatori

Introduzione alla OOP Object Oriented Programming

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Fondamenti di Informatica

Ingegneria del Software (e Prova Finale) Luciano Baresi

MODELLO e RAPPRESENTAZIONE

Introduzione all ingegneria dei sistemi ICT

Architettura degli elaboratori

Anno scolastico 2016 / Piano di lavoro individuale. ITE Falcone e Borsellino. Classe: II ITE. Insegnante: DEGASPERI EMANUELA

Fondamenti di Informatica

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Транскрипт:

Ingegneria del Software 2014 Materiale, link utili, avvisi http://www.dmi.unict.it/~tramonta/se Forum http://forum.informatica.unict.it leggere gli avvisi partecipare alle discussioni fare domande E. Tramontana - Introduzione - 10-Mar-10! 1! Lezioni Tre lezioni per settimana in aula 3 lunedì 11.00 -- 13.00 mercoledì 11.00 -- 13.00 venerdì 11.00 -- 13.00 Coprono tutto il programma del corso Consiglio vivamente di seguire Si impara di più, e si ascolta da un esperto E possibile fare domande ed ottenere risposte! Faremo alcune simulazioni di esami (esercitazioni) Si è aggiornati sulle ultime novità Si possono guadagnare vari bonus Sarà più facile sostenere gli esami E. Tramontana - Introduzione - 10-Mar-10! 2! Libri consigliati Software Modalità Esami Le slide non bastano :-( Sommerville. Ingegneria del Software. Pearson Addison-Wesley oppure Pressman. Principi di Ingegneria del Software. McGraw-Hill Fowler. UML Distilled. Pearson Gamma, Helm, Johnson, Vlissiders. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Ambienti di sviluppo Eclipse (www.eclipse.org) ArgoUML (argouml.tigris.org) E. Tramontana - Introduzione - 10-Mar-10! 3! Esame finale Mini-progetti individuali o di gruppo Se il mini-progetto è di gruppo è da concordare con il prof. Scritto: test a risposte multiple + 2 domande aperte su tutto il programma del corso Orale Durante il periodo di lezioni Altri mini-progetti individuali facoltativi (è un bonus) Prove in itinere tramite test E. Tramontana - Introduzione - 10-Mar-10! 4!

Obiettivi del corso Contesto Descrivere in dettaglio cosa serve per costruire un sistema software in modo professionale Processi di sviluppo del software: analisi, progettazione, implementazione, test, manutenzione Documentazione, Pianificazione, Requisiti, Validazione, OOP, Design pattern, Stili, Architetture, Metriche, Esaminare tecniche allo stato dell arte per le suddette fasi Per le fasi di progettazione ed implementazione Si farà riferimento alla progettazione ad oggetti Si studierà lo standard UML Si userà il linguaggio Java E. Tramontana - Introduzione - 10-Mar-10! 5! Progetti piccoli Uno sviluppatore Lo sviluppatore decide cosa fare Un prodotto Pochi cambiamenti Vita breve Poco costoso Poche conseguenze Programmazione Progetti grandi Team di sviluppatori I clienti decidono cosa fare Famiglie di prodotti Tanti cambiamenti contemporanei Lunga vita Molto costoso Grandi conseguenze Ingegneria del Software E. Tramontana - Introduzione - 10-Mar-10! 6! Cosa è l ingegneria del software L ingegneria del software si occupa della creazione di soluzioni economiche ed efficienti per problemi pratici applicando conoscenze scientifiche per costruire prodotti software con benefici per i clienti ed anche per la società Riferimenti Pressman, capitoli 1 #1.5, 2.1, 9.2, 15.1, 27.7; Sommerville, capitolo 1 Differenza fra ingegneria del software e computer science (informatica) L informatica si orienta alla teoria ed i fondamenti L ingegneria del software si orienta ai problemi pratici di sviluppo e consegna di prodotti software utili Processo software Definizioni e Costi Un insieme di attività ed i loro risultati che permettono di produrre un sistema software Modello software Una descrizione semplificata di un processo software sotto una particolare prospettiva Modello delle attività (workflow), modello del flusso dei dati Costi orientativi per lo sviluppo di un sistema software Dipendono dal modello adottato Usando il modello a Cascata: 15% specifiche, 25% progettazione, 20% programmazione, 40% integrazione e test Per sistemi di lunga durata: 25% sviluppo, 75% evoluzione E. Tramontana - Introduzione - 10-Mar-10! 7! E. Tramontana - Introduzione - 10-Mar-10! 8!

Ingegneria del software Abilità degli ingegneri del software Negli anni 60, i sistemi software diventarono sempre più grandi (controllo aereo, prodotti commerciali) Nel 68, in un convegno NATO fu coniato il termine crisi del software, questo termine significa: Produzioni in ritardo, costi maggiori di quelli preventivati, mancata affidabilità dei sistemi software prodotti Definizioni L Ingegneria del software è L approccio sistematico e disciplinato allo sviluppo, all operatività ed alla manutenzione del software; ovvero l applicazione dell ingegneria al software [IEEE] La produzione di varie versioni di programmi da parte di tante persone Conoscenza di Algoritmi e strutture dati Linguaggi di programmazione Capacità di modellare (creare rappresentazioni) Operare a vari livelli di astrazione Capire i requisiti, scrivere specifiche Costruire modelli e ragionare con essi Capacità sociali Lavorare in team grandi Comunicare con le persone del team e con i clienti Gestire il tempo e le risorse [Parnas, 1974] E. Tramontana - Introduzione - 10-Mar-10! 9! E. Tramontana - Introduzione - 10-Mar-10! 10! Caratteristiche del software Caratteristiche che rendono i sistemi software diversi dagli altri prodotti Complessità, Conformità, Modificabilità, Invisibilità Il software è un prodotto complesso, poiché: Componenti tutte differenti Numero di stati cresce in modo combinatorio Grandi dimensioni Astratto ed immateriale Non esistono leggi naturali che lo regolano Difficile da comprendere Conformità Il software si deve conformare (adeguare) all ambiente esterno Molte interfacce hardware Vari utenti con profili differenti Processi lavorativi predefiniti La conformità aggiunge complessità al software E. Tramontana - Introduzione - 10-Mar-10! 11! E. Tramontana - Introduzione - 10-Mar-10! 12!

Modificabilità Se un sistema software è di successo esiste sempre la necessità di cambiarlo Per adattarlo ad una realtà che cambia (mutate esigenze) Le richieste di estensione aumentano all aumentare del successo Poiché di successo, il sistema software sopravvive all hardware per cui era stato sviluppato inizialmente, generando una nuova esigenza di adattamento alla nuova piattaforma [vedi lezione sull evoluzione] Invisibilità Il software è invisibile e immateriale Non può essere catturato completamente da un unica rappresentazione geometrica Alcune rappresentazioni mirano ad evidenziare Flusso di controllo Flusso di dati Dipendenze di componenti e variabili Sequenze temporali [vedi lezioni su diagrammi UML] E. Tramontana - Introduzione - 10-Mar-10! 13! E. Tramontana - Introduzione - 10-Mar-10! 14! Qualità Qualità Le tecniche dell ingegneria cercano di produrre sistemi software entro i costi e i tempi preventivati e con qualità accettabile Come si valuta la qualità del software? Definizione: Totalità di caratteristiche di un prodotto che si basano sulla abilità a soddisfare i bisogni espliciti ed impliciti [ISO] Criteri operativi per valutare la qualità 1. Il sistema aderisce allo scopo ed è CONFORME ALLE SPECIFICHE Il sistema software fa quello che il cliente vuole? [vedi test] Il sistema software soddisfa le specifiche che erano state raccolte? 2. Il sistema esibisce: Efficienza, Manutenibilità, Dependability (sicuro e affidabile), Usabilità E. Tramontana - Introduzione - 10-Mar-10! 15! Correttezza Un sistema software è corretto se soddisfa (ovvero è conforme con) le specifiche funzionali [vedi test] Si sta assumendo che tali specifiche esistano Se le specifiche sono formali, la correttezza può essere definita formalmente Può essere provata come un teorema Può essere rifiutata trovando contro-esempi Cosa succede se le specifiche sono errate? Il software conforme a tali specifiche è inutile E. Tramontana - Introduzione - 10-Mar-10! 16!

Qualità Efficienza L uso di risorse da parte del software dovrebbe evitare sprechi (memoria, processore, comunicazione) Manutenibilità La facilità di cambiare il software per soddisfare esigenze che cambiano Dependability Il software dovrebbe essere affidabile (reliability), sicuro (security, essenzialmente proteggere i dati; safety, proteggere l hardware) Affidabile: probabilità che il software operi come atteso in un certo intervallo di tempo. Come reagisce il software ad input non attesi? Usabilità Il software dovrebbe essere usato facilmente dagli utenti per cui è stato progettato Obiettivi Obiettivi (sfide) dell ingegneria del software Affrontare sistemi legacy (ereditati), eterogenei e ridurre i tempi di consegna Sistemi legacy Sistemi software antichi ma di valore (indispensabili) che devono essere mantenuti ed aggiornati Eterogeneità I sistemi sono distribuiti e consistono di un mix di hardware e software Consegna C è una pressione crescente per avere i sistemi software più velocemente E. Tramontana - Introduzione - 10-Mar-10! 17! E. Tramontana - Introduzione - 10-Mar-10! 18! Responsabilità Un ingegnere del software deve comportarsi in modo onesto ed eticamente responsabile La confidenzialità di collaboratori e clienti deve essere rispettata Il livello di competenza non deve essere falsato Le leggi sulla proprietà intellettuale (copyright) devono essere conosciute e rispettate Le capacità tecniche non devono essere impiegate in modo non appropriato (es. per diffondere virus, danneggiare sistemi altrui, etc.) E. Tramontana - Introduzione - 10-Mar-10! 19!