Introduzione all Ingegneria del Software

Documenti analoghi
Materiale didattico. Sommario

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Architettura. Nome Modulo Tipologia lezioni Ore Docente SSD Ruolo Interno Affidamento. Vincenzo Conti

Fondamenti VBA. Che cos è VBA

Corso di Fondamenti di Informatica e Laboratorio ato o T-AB

LA REVISIONE LEGALE DEI CONTI La Pianificazione Ottobre 2013

CAPITOLO 7 GESTIONE DEI PROCESSI

Il calcolatore. Architettura di un calcolatore (Hardware)

Le aree dell informatica

RIF. CORSO: 2015-GG-39. Scheda progetto

Grafica ed interfacce per la comunicazione. Scienze della Comunicazione A.A.2013/14

Comune Fabriano. Protocollo Generale, Servizio Progettazione, Servizio Edilizia Privata. Progetto di Certificazione secondo le norme ISO 9000

Syllabus Start rev. 1.03

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

I.I.S.S. A. VESPUCCI Gallipoli Pag. 1/7

Linguaggi di alto livello, compilatori e interpreti

I COSTI E LA CONTABILITA ANALITICA

Misura M19. Sostegno allo sviluppo locale LEADER (da art. 42 a 44) Interventi

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

IL RUOLO DELLA TECNOLOGIA NEL PROGETTO DI ARCHITETTURA. Progettazione dei Sistemi Costruttivi

PROGRAMMAZIONE COORDINATA TEMPORALMENTE A.S. 2015/ CLASSI: 1AE 1AM 1BI 1BM 1CM

Elementi di Informatica e Programmazione

OBIETTIVI DISCIPLINE PROFESSIONALIZZANTI I.P.I.A. (Allegato 5)

Concetti Introduttivi. Il Computer

Parole note, nuovi significati: linguaggio, determinismo e infinito

CURRICOLO DIPARTIMENTO INFORMATICA PRIMO BIENNIO

FONDAMENTI DI INFORMATICA II

CAE. Ingegnerizzazione assistita da calcolatore

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Programmazione modulare

LA PARTECIPAZIONE DEGLI ALUNNI CON BISOGNI EDUCATIVI SPECIALI E/O DISABILITÀ ALL ISTRUZIONE E FORMAZIONE PROFESSIONALE SINTESI DELLA POLITICA

SCIENZE DELLA FORMAZIONE PRIMARIA (V.O.) Metodologia Didattica per la Scuola Primaria* - A.A. 2013/2014 Prof.ssa G. Compagno SCHEDA DI TRASPARENZA

I sistemi operativi (prima parte) Agostino Lorenzi I sistemi operativi - Atlas

Introduzione alla programmazione. Walter Didimo

Offerta Formativa. La Norma ISO 9001:2000. Principi, contenuti, applicazioni ed evidenze oggettive

Alcune idee sui sistemi software e la loro architettura

ISTITUTO ISTRUZIONE SUPERIORE "L. EINAUDI" - ALBA (CN) ANNO SCOLASTICO 2015/2016

Syllabus start rev. 1.03

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

Il sistema di misurazione e di valutazione della Performance dell Università Parthenope del personale responsabile e non di Unità Organizzative

ISTITUTO TECNICO INDUSTRIALE STATALE "G. MARCONI" Via Milano n PONTEDERA (PI) DIPARTIMENTO: Informatica

Concetti generali e introduzione alla norma UNI EN ISO 9001/2008

Il sistema informativo aziendale

SICUREZZA MICROIMPRESE METALMECCANICHE

PROGRAMMAZIONE DIDATTICA ANNUALE DI TECNOLOGIA CLASSE PRIMA

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

gestione delle imprese Prof. Arturo Capasso

Università degli Studi di Udine

Liceo Marie Curie (Meda) Scientifico Classico Linguistico PROGRAMMAZIONE DISCIPLINARE PER COMPETENZE

Mathcad Prime 2.0 Guida al curriculum

INSEGNAMENTO DI: FONDAMENTI DI INFORMATICA C - IEI

Dipartimento di INFORMATICA TC - TTRG. Anno Scolastico Piano di Lavoro Disciplinare. INFORMATICA Articolazione: INFORMATICA Classe IV

3 Le verifiche nel corso dell esercizio di Giovanna Ricci e Giorgio Gentili

Lo sviluppo del progetto informatico

PIANO DI LAVORO INDIVIDUALE PIANO DI LAVORO ANNUALE - CONTRATTO FORMATIVO

APPROPRIATEZZA EFFICACIA EFFICIENZA in Sanità

orario ricevimento via orario ufficio risposta entro 3 giorni

4.11 CONTROLLO DELLE APPARECCHIATURE

OCSE-PISA 2009 Programme for International Student Assessment

Processi decisionali e modelli di simulazione

I livelli dei linguaggi. Introduzione alla OOP Object Oriented Programming. La programmazione procedurale separa il calcolo dalla memoria

Il Bollino GRIN: coordinamento nazionale per le lauree di informatica

Ministero della Salute

Obiettivi di accessibilità per l anno 2016

AURORA WebDOC Document Management System

FONDAMENTI DI INFORMATICA

Introduzione alla programmazione Object Oriented. Luca Lista

CURRICULUM VITAE DATI ANAGRAFICI. Alessandro Masera. Età Nato a Rovereto il Servizio militare TITOLI DI STUDIO. Diploma

Economia e gestione delle imprese

Security Conference Milano, 20 Febbraio 2007

Gestione del rischio nella sicurezza alimentare e HACCP. Slide 1

Informatica A - Gestionali

Liceo Scientifico " C. CATTANEO " PIANO DI LAVORO DI INFORMATICA. CLASSE 3 LSA SEZ. B e D

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

Acque potabili: la rete per la qualità

Controllo di Gestione. la Gestione della tua Azienda sempre sotto Controllo!

NEWS. Prossimi eventi: IL BOSCO IN MUSICA 2015!!!

Ore settimanali di lezione: 3 h di cui 2 in compresenza con l insegnante di Lab. di Informatica prof.ssa E.De Gasperi

Il sistema qualità la qualità in un azienda di servizi riflessioni sulla qualità nell attivit attività del Medico Competente

Dipartimento di INFORMATICA, TC, TTRG. Anno Scolastico Piano di Lavoro Disciplinare

RIF. CORSO: 2015-GG-32. Scheda progetto

LINEE GUIDA PER LA GESTIONE DELLA CONTINUITÀ

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

SISTEMI OPERATIVI, RETI, INTERNET

Gestire e rappresentare l Enterprise Architecture con TOGAF ed Archimate Obiettivi e Caratteristiche di un approccio combinato

Introduzione al Linguaggio C ed all IDE DEV-C++

Corso di Marketing DIPARTIMENTO SCIENZE SOCIALI, POLITICHE E COGNITIVE. Gaetano Torrisi SIENA a.a

Laboratorio software. A.A C. Brandolese

Strutturare il codice: sottoprogrammi

Numero Unico Regionale ARPAT per la sua attivazione in emergenza ambientale

Introduzione alla Modellazione Solida

CONSIDERAZIONI SUL SISTEMA DI GESTIONE DELL UTENSILERIA PER LE AZIENDE MANIFATTURIERE METALMECCANICHE

Introduzione alla logistica

CERTIFICAZIONE ENERGETICA DEGLI EDIFICI Regione Lombardia

Definizione di metodi

Ricerca Operativa. Docente. 1. Introduzione

LA PNL NELLA PSICOLOGIA DEL LAVORO

Il progetto U-GOV Contabilità al Politecnico di Torino. Approccio e pianificazione, fattori di complessità e punti di attenzione

Statistica descrittiva e statistica inferenziale

Piano annuale di lavoro anno scolastico classe quinta Corsi Giunti Scuola Annarita Monaco PROGETTAZIONE DIDATTICA.

Transcript:

Università degli studi Facoltà di Ingegneria di Napoli Federico II Corso di Laurea in Ingegneria Informatica Prof. Stefano Russo Introduzione all Ingegneria del Software 1 Introduzione al corso Breve storia dell ingegneria del software Definizioni Processo e prodotto Fattori di qualità del software Riferimenti C.Ghezzi, M. Jazayeri, D. Mandrioli; Ingegneria del Software. Fondamenti e principi, II edizione. Pearson. Cap. 1 1.1, 1.2, Cap 2 2.1, 2.2 Consigliato: C. Ghezzi et alii: Ingegneria del Software. Progettazione, sviluppo e verifica. Mondadori Informatica, 1997 Cap. 1 1.1, 1.2, 1.3 Inizio 1 Marzo, fine 10 Giugno Lunedì 14.30-16.30, Giovedì 14.30-16.30 28 Lezioni da 2 ore 5 Esercitazioni Materiale didattico: Slide del corso Testi adottati: C.Ghezzi, M. Jazayeri, D. Mandrioli; Ingegneria del Software. Fondamenti e principi, seconda edizione. Pearson, 2004. C. Savy: Da C++ a UML: guida alla progettazione, McGraw-Hill, 2000. M. Pezzé, M. Young. Software Testing and Analysis. Process, Principles, and Techniques. Wiley.

C. Ghezzi et alii: Ingegneria del Software. Progettazione, sviluppo e verifica. Mondadori Informatica, 1997 Testi Consigliati J. Conallen, Building Web Applications with UML, Addison-Wesley, 1999. SITO WEB DEL CORSO: www.docenti.unina.it/stefano.russo

Nasce verso la fine degli anni 70, quando si comprese che le tecniche di programmazione erano insufficienti a costruire sistemi software complessi, di grandi dimensioni e di qualità. Inizialmente, nell uso del calcolatore i problemi da risolvere erano ben compresi e noti (ad es. risoluzione di un equazione): il problema era circoscritto tra il computer e l utente -programmatore (ad es. un fisico) Successivamente la diminuzione dei prezzi fa crescere il numero di utenti. A fine anni 50 nascono i linguaggi di alto livello e nasce la professione del programmatore, che si separa dal ruolo dell utente Anni 60: sviluppo dei primi progetti complessi, ad es.: sistema operativo CTS (dal MIT) IBM OS 360 Lo sviluppo di sistemi complessi fa sorgere la necessità di un nuovo tipo di approccio: Grossi progetti spesso sforavano i budget previsti Problemi nell adattare tecniche di sviluppo di piccoli programmi su grossi software Alto numero di persone coinvolte => problemi di comunicazione e cooperazione Alta durata dei progetti, cambiamento del personale => necessità di documentare ogni attività Gestione dei cambiamenti dei requisiti Esigenza di un approccio ingegneristico!! L IS nasce dunque come maturazione dell attività di programmazione, e dall esigenza di adottare un approccio che veda il software come un sistema complesso, e la sua costruzione come un lavoro ingegneristico (alla stregua di altri prodotti dell ingegneria come ponti, navi e aeroplani).

La diminuzione del costo dell hardware e l aumento di quello del software ha accentuato l importanza economica dell IS Si prevede che l impatto economico continui a crescere nel futuro: le spese sono passate da 140 miliardi di dollari nel 1985 a 800 nel 2000. Dal punto di vista sociale, l impatto del software è evidente, ed è accentuato dalla pervasività dei sistemi software nella nostra vita quotidiana Come ogni tipo di prodotto, il software viene sviluppato da un suo processo produttivo, che influenza fortemente la qualità del prodotto finale Inizialmente, c era scarsa attenzione all organizzazione del processo (approccio code-and-fix) Successivamente, sono nate proposte su come organizzare il processo produttivo, partendo da una riflessione su quale fosse il ciclo di vita di un prodotto All interno del ciclo di vita del prodotto software, si distinguono delle fasi che producono dei risultati parziali (artefatti). Le fasi del ciclo di vita sono (ad alto livello): Definizione: si occupa del cosa. Determinazione dei requisiti, informazioni da elaborare, funzioni e prestazioni attese, comportamento del sistema, interfacce, vincoli progettuali, criteri di validazione.

Sviluppo: si occupa del come Definizione del progetto, dell architettura software, della strutturazione dei dati e delle interfacce e dei dettagli procedurali; traduzione del progetto nel linguaggio di programmazione; collaudi Manutenzione: si occupa delle modifiche Correzioni, adattamenti, miglioramenti, prevenzione A seconda di come sono organizzate, gestite ed implementate queste fasi si hanno diversi possibili modelli di processo Due classificazioni: Qualità Esterne black-box: viste dall utente Qualità Interne white-box: viste dallo sviluppatore Le qualità interne implementano (sono un modo per realizzare) le qualità esterne Non è sempre possibile operare una distinzione marcata Qualità del processo Qualità del prodotto (anche i prodotto intermedi, i.e., gli artefatti, sono soggetti agli stessi requisiti di qualità) N.B. I fattori di qualità sono spesso correlati tra di loro. Si influenzano a vicenda

Correttezza: il software soddisfa la specifica dei requisiti funzionali Proprietà matematica che stabilisce l equivalenza tra il software e la sua specifica Assume che le specifiche siano disponibili e non ambigue. E raro che sia così Tuttavia la definizione è utile a catturare un obiettivo desiderabile Metodi utilizzati per valutare e migliorare la correttezza: Testing, Verifica formale, Ispezione Utilizzo di algoritmi e librerie standard Utilizzo di processi e metodologie di provata efficacia Affidabilità: qualitativamente, è la misura della continuità del servizio offerto Quantitativamente, è la probabilità che il software operi come atteso in un intervallo di tempo determinato La correttezza è una qualità assoluta (0/1) non tollera scostamenti dal servizio atteso; la nozione di affidabilità è invece relativa (scostamenti tollerabili) Affidabilità Correttezza Ciò è vero nell ipotesi che la specifica dei requisiti funzionali colga tutte le proprietà desiderate dall utente e non contenga erroneamente proprietà indesiderabili. In pratica non è così: il software può soddisfare quanto specificato, ma non può assicurare che questo corrisponda esattamente ai requisiti effettivi dell utente. La figura assume che i requisiti siano corretti. Ci possono essere applicazioni corrette sviluppate sulla base di requisiti non corretti

Robustezza: se il software si comporta in maniera accettabile anche in corrispondenza di situazioni non specificate nei requisiti Ad esempio, in presenza di input non corretti o inattesi, o malfunzionamenti hardware Se si potesse definire esattamente cosa fare per rendere un applicazione robusta, si potrebbe specificare tale comportamento => la robustezza diventerebbe equivalente alla correttezza. La linea di demarcazione tra robustezza e correttezza è pertanto la specifica Prestazioni: qualità esterna basata sui requisiti dell utente e sull utilizzo efficiente delle risorse (tempo di esecuzione, memoria occupata) È diversa dall efficienza: l efficienza è una qualità interna che si riferisce al peso del software sulle risorse le prestazioni sono legate ai requisiti utente L efficienza influenza e spesso determina le prestazioni Difficile da misurare, perché evolve con l evolversi della tecnologia Per valutare le prestazioni di un algoritmo si può usare la Teoria della complessità computazionale Per valutazioni più specifiche (efficienza e/o prestazioni su uno specifico sistema di elaborazione), vi sono tre approcci: Measurement-based: misurazioni su sistemi reali Analytical (model-based): costruzione di un modello analitico (ad es. basato su teoria delle code). Utile in fase di progettazione (sistema non ancora implementato) Simulation: costruzione di un modello simulativo Le tecniche possono essere usate in congiunzione (es. inizialmente un approccio model-based per individuare aree critiche, e poi modelli simulativi per tali aree)

Usabilità: un sistema è usabile se i suoi utenti lo reputano facile da utilizzare È una qualità soggettiva Le interfacce utente influiscono molto sulla amichevolezza (user frendliness) e dunque sull usabilità Studiata molto dalla disciplina Human-Computer Interaction (HCI) che si occupa dei fattori umani (human factors) Verificabilità: deve essere facile procedere alla verifica della correttezza di un sistema Utilizzo di software monitor, di nome sistematiche di codifica, codice ben strutturato, programmazione modulare Manutenibilità: facilità con cui le attività di manutenzione vengono eseguite ed economicità dei relativi processi Caratteristica importante: la manutenzione supera il 60% dei costi totali del software Tipi di manutenazione: Correttiva: per eliminare errori residui (circa il 20% dei costi di manutenzione) Adattativa: modifiche da effettuare per adattare l applicazione a cambiamenti dell ambiente (circa il 20% dei costi) Perfettiva: per eliminare, aggiungere e modificare alcune caratteristiche o funzionalità (circa il 50% dei costi) La manutenibilità può essere vista come l insieme di: Riparabilità: si può facilmente correggere difetti Una corretta strutturazione in moduli favorisce la riparabilità Evolvibilità: se facilita cambiamenti che gli permettono di gestire nuovi requisiti Richiede capacità di anticipare I cambiamenti in fase di progettazione Tende a diminuire con i rilasci successivi del prodotto (i.e., è più complicato apportare modifiche => aumenta il rischio di introdurre nuovi errori)

Riusabilità: denota la possibilità di impiegare componenti esistenti che vengono assemblati per fornire una o più funzionalità (eventualmente dopo qualche modifica locale) Può essere applicata anche ad artefatti diversi dal codice (es. riuso di parti della specifica) L alta riusabilità è uno degli obiettivi dell object-oriented Portabilità: se può essere eseguito in ambienti diversi Comprensibilità: il software deve essere comprensibile al fine di poterne garantire la correttezza, di poterne facilmente apportare modifiche e di poterlo riusare Visibilità: se tutti i passi e lo stato del processo sono disponibili e facilmente accessibili dall esterno (richiede chiara documentazione) Interoperabilità: capacità di coesistere e cooperare con altri sistemi. Un concetto correlato è quello di sistema aperto (open system) Una collezione estendibile di applicazioni scritte in modo indipendente tra loro, basata su standard, che funziona come un sistema integrato Il termine aperto in contrapposizione a sistema chiuso, di tipo proprietario Produttività: qualità del processo di produzione che ne indica le prestazioni e l efficienza Tempestività: indica la capacità di rendere disponibile un prodotto al momento giusto Richiede una attenta pianificazione del processo In contrasto con altre qualità, come affidabilità e prestazioni Una tecnica è la consegna incrementale del prodotto

Si enfatizzano talvolta altri attributi di qualità Ad es., dal punto di vista della Dependability [Laprie 2004]: Disponibilità: misura della readiness del servizio offerto (probabilità che il software operi come atteso in un dato istante di tempo) Affidabilità Manutenibilità Safety: assenza di conseguenze catastrofiche su utenti e ambiente Integrità: assenza di alterazioni improprie IFIP WG 10.4 considera anche la Confidenzialità (assenza di diffusione non autorizzata di informazioni) Insieme alla disponibilità e alla integrità compone l attributo di sicurezza Attributi di qualità si possono ottenere combinando altri attributi Non c è comunque completo accordo sulle definizioni degli attributi di qualità del software Ad esempio, il modello di qualità ISO 90126 adotta definizioni ancora leggermente diverse. [Laprie 2004]: A.Avizienis, J.C. Laprie, B.Randell, and C. Landwehr. Basic Concepts and Taxonomy of Dependable and Secure Computing. IEEE Transactions on dependable and secure computing, vol. 1, no. 1, January-March 2004