Ingegneria del Software 2010

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

Ingegneria del Software L-A

Ingegneria del Software

Materiale didattico. Sommario

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

INGEGNERIA DEL SOFTWARE

Ingegneria del Software T

Basi di Dati Ingegneria Informatica e delle Telecomunicazioni

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

Ingegneria del Software

Elementi di Informatica e Programmazione

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

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

Le aree dell informatica

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

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

Gestione dello sviluppo software Modelli Base

Modelli e Metodi per la Simulazione (MMS)

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

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

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

Modelli e complessità di calcolo

Algoritmi e Strutture Dati

3. Ciclo di Vita e Processi di Sviluppo

APPUNTI PER IL CORSO DI ALFABETIZZAZIONE INFORMATICA

Il PROCESSO UNIFICATO

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

algoritmi e strutture di dati

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Introduzione all ingegneria dei sistemi ICT

Analisi e specifica dei requisiti

Algoritmi e Strutture Dati

Introduzione alla programmazione strutturata

Ingegneria del Software II

Ingegneria del Software ( )

Programmazione Orientata agli Oggetti

MODELLO e RAPPRESENTAZIONE

Fondamenti di Informatica

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

MATERIALI PER LA DISCUSSIONE

Introduzione al Calcolo Scientifico

Corso di Fondamenti di Informatica e Laboratorio T-AB

Fondamenti di Informatica T-1

Organizzazione del corso

Corso di Laurea Ingegneria Informatica

FONDAMENTI DI INFORMATICA II

Docente: Prof. Marco Patella Tutor: Stefano Pio Zingaro

Alcuni diagrammi. OCL (Object Constraint Language)

Fondamenti di Informatica

Corso di Ingegneria del Software. Activity Diagram

Fondamenti di Informatica T1"

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Fondamenti di Informatica (lettere A-I) A

14. Verifica e Validazione

Ingegneria del Software (e Prova Finale) Luciano Baresi

Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati

Il calcolatore. Architettura di un calcolatore (Hardware)

FONDAMENTI DI INFORMATICA

Corso di. Fondamenti di Informatica T

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Linee di programmazione

Elementi di Informatica

Corso di RETI DI COMUNICAZIONE E INTERNET Modulo 1

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Транскрипт:

Ingegneria del Software 2010 Materiale, link utili, avvisi http://www.dmi.unict.it/~tramonta/se Forum su SDAI http://www.sdai.unict.it leggere gli avvisi partecipare alle discussioni fare domande Lezioni Due per settimana in aula 2 lunedì 10.30 -- 13.30 mercoledì 10.30 -- 13.30 il 22 marzo ed il 24 marzo non ci sarà lezione Coprono tutto il programma del corso Consiglio vivamente di seguire jugyou ni kite kudasai! Si impara di più, e si ascolta da un esperto E possibile fare domande ed ottenere risposte! Si è aggiornati sulle ultime novità Si possono guadagnare vari bonus Sarà più facile sostenere gli esami E. Tramontana - Introduzione - 10-Mar-10 1 E. Tramontana - Introduzione - 10-Mar-10 2 Materiali utili Modalità Esami Libri consigliati, poiché le slide da sole non sono sufficienti :-( Sommerville. Software Engineering. 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), non basta Scite! Jude, ArgoUML E. Tramontana - Introduzione - 10-Mar-10 3 Esame finale Mini-progetti individuali Test a risposte multiple + 2 domande aperte su tutto il programma del corso Domande orali Durante il periodo di lezioni 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 il processo di sviluppo del software Consistente delle fasi di: analisi, progettazione, implementazione, testing, manutenzione 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 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 5 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 La differenza tra ingegneria del software e computer science (informatica) L informatica si orienta sulla 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 workflow, modello del flusso dei dati Costi orientativi per lo sviluppo di un sistema software Dipendono dal modello adottato Per lo sviluppo tramite il modello a cascata: 15% specifiche, 20% design, 18% codice, 47% 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 di 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 [Parnas, 1974] E. Tramontana - Introduzione - 10-Mar-10 9 Conoscenza di Algoritmi e strutture dati Linguaggi di programmazione Capacità di modellare 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 E. Tramontana - Introduzione - 10-Mar-10 10 Caratteristiche del software Caratteristiche 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 E. Tramontana - Introduzione - 10-Mar-10 11 E. Tramontana - Introduzione - 10-Mar-10 12

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 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, generando una nuova esigenza di adattamento [vedi lezione sull evoluzione] E. Tramontana - Introduzione - 10-Mar-10 13 E. Tramontana - Introduzione - 10-Mar-10 14 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] 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 per valutare la qualità Aderenza allo scopo e conformità alle specifiche Il sistema software fa quello che il cliente vuole? Il sistema software soddisfa le specifiche che erano state raccolte? Efficienza, Manutenibilità, Dependability, Usabilità E. Tramontana - Introduzione - 10-Mar-10 15 E. Tramontana - Introduzione - 10-Mar-10 16

Qualità Qualità Correttezza Un sistema software è corretto se soddisfa (ovvero è conforme con) le specifiche funzionali, 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 17 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 E. Tramontana - Introduzione - 10-Mar-10 18 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 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 E. Tramontana - Introduzione - 10-Mar-10 20