INGEGNERIA DEL SOFTWARE AA. 2011/’12

Slides:



Advertisements
Presentazioni simili
USABILITÁ Sembra banale, ma….
Advertisements

Prof. Rebecca Montanari Anno accademico 2011/2012
Linguaggi di Programmazione e compilatori
Informazioni sul Corso
Introduzione allo studio dell’informatica
Organizzazione di una rete Windows Server Client Il ruolo dei computer I computer in una rete possono svolgere le funzioni di client e server dei.
1 14. Verifica e Validazione Come assicurarsi che il software corrisponda alle necessità dellutente? Introdurremo i concetti di verifica e validazione.
2. INGEGNERIA DI SISTEMA Il software è inutile a meno che non sia combinato con componenti hardware per formare un “sistema” Introdurremo il concetto di.
Gestione della Qualità
Studiare INFORMATICA all’Università Ca’ Foscari
Teoria dei Sistemi - Esercitazioni TEORIA DEI SISTEMI Dalla descrizione generica di un fenomeno alla costruzione di un modello SD 1. Front office / back.
Corso di Informatica per Giurisprudenza Lezione 5
Tecnologie Informatiche per la Qualità 1 - La Qualità 1 Università degli Studi di Milano – Polo di Crema - Dipartimento di Tecnologie dellInformazione.
Ulteriori Abilità Informatiche
Corso di Laurea in Ingegneria Informatica Laboratorio di Sistemi Operativi II anno, III periodo 2 crediti 13 ore di lezione 16 ore di esercitazione.
Virtual Learning Environments (i. e
Corso di Fondamenti di Informatica A Andrea Omicini Anno accademico 1999/2000 Università degli Studi di Bologna Facoltà di Ingegneria Corsi di Laurea in.
INGEGNERIA DELLA CONOSCENZA E SISTEMI ESPERTI Prof
Metodologia sviluppo KBS Fabio Sartori 12 ottobre 2005.
INGEGNERIA DELLA CONOSCENZA E SISTEMI ESPERTI Stefania Bandini Dipartimento di Informatica, Sistemistica e Comunicazione Università di Milano-Bicocca.
Information and Communication Technology CORSO DI LAUREA RELAZIONI PUBBLICHE E COMUNICAZIONE DIMPRESA Andrea Carignani (9 crediti) Fondamenti 6 Crediti.
Information and Communication Technology CORSO DI LAUREA IN RELAZIONI PUBBLICHE E PUBBLICITA’ Andrea Carignani (7,5 crediti) Fondamenti 5 Crediti.
Information and Communication Technology (6 crediti) Andrea Carignani
Corsi di Laurea Turismo, culture e territorio
Elementi di Informatica Simone Scalabrin a.a. 2008/2009.
CONOSCENZE INFORMATICHE
Prima cerano i calcolatori (costosi e per pochi) Poi vennero i terminali (una sola applicazione per tanti) Poi arrivarono i PC (un calcolatore per tutti)
L’ingegneria del software
Lo sviluppo del progetto informatico
INFORMATICA & COMUNICAZIONE
Università del Salento Facoltà di Ingegneria Corso di Basi di dati I a.a
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 1 - Cicli di vita Ernesto Damiani Università degli Studi di Milano.
Docente: Prof. Lorenzo Mezzalira Esercitatore: Ing. Stefano Giavardi
Analisi dei Requisiti (Requirements Engineering) Seminario RE Università degli Studi di Padova, 12 Gennaio 2004.
Alla fine degli anni quaranta nasceva il mito del cervello elettronico, e tutte le attività connesse allutilizzo del computer venivano indicate tramite.
Cos’è l’ECDL ? La European Computer Driving Licence (ECDL) è un certificato, riconosciuto a livello internazionale, attestante che chi lo possiede ha l'insieme.
Ingegneria dei Requisiti - e dei Sistemi - Giuseppe Berio DI-Unito 2007.
Scelta di un modello di processo: esempio
Ingegneria del Software Giuseppe Berio DI-Unito 2006.
Commenti alle Attività Generiche. Attività Generiche (Pressman) Principali: Comunicazioni; Pianificazione; Modellazione; Costruzione, Dispiegamento Collaterali:
Capitolo 0 : Introduzione al corso CdL in Ingegneria Elettronica e delle Telecomunicazioni: Fondamenti dei S.O. (6CFU) Capitolo 0 : Introduzione al corso.
Informazioni e dati A. Ferrari. Informazione automatica Informatica deriva dalla contrazione di altri due termini: informazione e automatica e sta a significare.
Programmazione ad Oggetti
Definizione(i) di Ingegneria del Software (IEEE) Strategie sistematiche, a partire da richieste formulate del committente, per lo sviluppo, esercizio e.
Microeconomia Giovanni Pica.
Programmazione Web Presentazione del corso /2015.
Fondamenti dell’Informatica A.A Prof. Vincenzo Auletta1 Presentazione del Corso Fondamenti dell’Informatica Docente Prof. Vincenzo Auletta.
We make it 1 L’ infrastruttura Virtuale e la gestione Dinamica Fabiano Finamore Infrastructure Optimization Sales Brain Force Italia.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
Sezione F Pianificazione di progetto
Laboratorio di Tecnologie dell’Informazione
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Normalizzazione Programma del Corso.
ELEMENTI DI INFORMATICA
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
Università degli Studi G. D’Annunzio (Chieti – Pescara) Dipartimento di Scienze Sistemi di Elaborazione Stefano Bistarelli Università degli Studi G. D’Annunzio.
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 5 – Test e verifica Ernesto Damiani Università degli Studi di Milano.
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
ECONOMIA AZIENDALE E GESTIONE DELLE IMPRESE LEZIONE IV PRODUZIONE E QUALITÀ PRODUZIONE E QUALITÀ LUCIO DEL BIANCO ANNO ACCADEMICO
FITEL Telecomunicazioni Soluzioni per tecnologie informatiche e telecomunicazioni.
La ricerca in campo educativo. Problemi e metodi
Riunione CCR 21/12/2005 Gruppo Storage Relazione sulla analisi di infrastrutture Fibre Channel e presentazione attivita’ per il 2006 Alessandro Brunengo.
Che cos’è l’E.C.D.L. In una società informatizzata come sempre più è la nostra, questa patente ha potenzialmente una diffusione di massa, giusto come la.
Standard e strumenti per lo sviluppo del software Marco Carezzano Andrea Andrenacci (ZEROPIU, Business Partner di Telecom Italia) Milano, 2 febbraio 2005.
Le basi di dati.
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
COMPONENTI DI UN SISTEMA INFORMATICO HardwareSoftware Parte fisicaComponenti logiche Componenti fisiche (elettroniche e meccaniche) di un computer Istruzioni.
Corso di Laurea Magistrale in Informatica A.A Laboratorio di Progettazione Introduzione Obiettivi del corso Metodo Articolazione Scelta dei progetti.
La ricerca in campo educativo. Problemi e metodi Corso di laurea ‘Educatore Professionale di Comunità’ Pedagogia sperimentale Prof. Bruno Losito.
Transcript della presentazione:

INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia

Obiettivi della lezione Descrivere gli obiettivi e le modalità di svolgimento del corso Fornire un’introduzione generale ai contenuti Definire cosa si intende per Ingegneria del Software Discutere i concetti di prodotto software e di processo software Spiegare il concetto di visibilità di processo Introdurre la nozione di responsabilità professionale

Outline Obiettivi (learning outcomes) Dettagli tecnici: libri, lezioni, esami, ecc. Ingegneria del Software: perché è importante 10 domande e 10 risposte

Obiettivi Il corso di Ingegneria del Software presenta i metodi, le tecniche e gli strumenti fondamentali di documentazione della specifica, analisi e progetto di sistemi software complessi da un punto di vista architetturale, con enfasi speciale sulla parte di analisi/specifica dei requisiti e progettazione a oggetti usando UML. Analizziamo in particolare le tecnologie di costruzione di documenti di supporto alla progettazione.

Dettagli sul corso URL: http://www.dsi.unive.it/~ingsw Mail Address: ingsw@dsi.unive.it Lezioni: Lunedi e Giovedi dalle 8.45 alle 10.15 Ricevimento: Giovedi 10.30-12.00 (su appuntamento)

Libri di testo: Roger Pressmann, Principi di Ingegneria del Software, quinta ed. McGraw Hill ISBN 9788838662164 oppure Ian Sommerville, Ingegneria del Software, settima ed. Pearson Education, ISBN 9788871923543

Modalità d’esame Per chi frequenta (min 70% delle lezioni): Verranno assegnati 4 tasks durante il corso Da svolgere in gruppi di 4 persone Da consegnare tassativamente entro la scadenza fissata Per superare l’esame, deve essere consegnata la versione rivista dei tasks entro la data del primo appello. La valutazione = valutazione dei tasks + valutazione revisione Per chi non frequenta: una prova scritta negli appelli d’esame (mooooolto difficile!).

Perché un corso di Ingegneria del Software? E’ importante distinguere: i sistemi semplici (uno sviluppatore, un utente, prodotto sperimentale) dai sistemi “hard” (molti sviluppatori, molti utenti, “prodotto vero”) L’esperienza acquisita nello sviluppo di sistemi semplici non è scalabile! Analogia con la costruzione di un ponte: Su un ruscello = facile, basta una persona Sul ponte di Messina … ? Il problema è la complessità UNIX contiene 4 milione di linee di codice Windows 2000 contiene 108 linee di codice L’Ingegneria del Software ha a che fare con la gestione della complessità.

Contesto mondiale L'incremento del Pil mondiale, pari al 4,9% nel 2005 e aumentato al 5,1% nel 2006, è stato superato dall'accelerazione registrata dal settore ICT, il cui tasso di crescita è stato del 6,1% nel 2005 e del 5,5% nel 2006 (dove la flessione è data dall'assestamento della crescita delle Tlc). Nel confrontare la crescita dell' It in Italia con i dati analoghi a livello mondiale, i curatori rilevano che: La spesa IT ha un enorme ritardo; A partire dal 2004, la spesa IT è cresciuta in misura molto più accelerata rispetto al mondo, con un divario che è stato in attenuazione: 5,8 nel 2003, 4,8 nel 2004, 4,3nel 2005, 4,2 nel 2006. (Rapporto Aitech-Assinform 2007)

Il mercato IT in Italia

Ingegneria del Software Le economie di tutti i paesi sviluppati dipendono dal software, e la maggior parte dei sistemi sono controllati da software L’Ingegneria del Software ha a che fare con teorie, metodi e strumenti per progettare, costruire e mantenere sistemi software di grandi dimensioni Qual’è l’impatto potenziale del software? In negativo Riduzione di posti di lavoro (http://www.developerdotstar.com/mag/articles/read_impact.html) Perdita di vite umane (http://www.baselinemag.com/article2/0,1397,1543590,00.asp) In positivo Ricerca sul Genoma (http://www.genome.gov/) Previsioni del tempo (http://www.hpcc.gov/pubs/blue97/acc-weather.html)

10 domande sull’ingegneria del software Cos’è il software? Quali sono gli attributi di un software di qualità? Cos’è l’ingegneria del software? Qual’è la differenza tra ingegneria del software e informatica? Qual’è la differenza tra ingegneria del software e ingegneria di sistema? Cosa si intende per processo di produzione del software?

10 domande sull’ingegneria del software Cos’è un modello di processo di produzione software? Quali sono i costi nel processo di produzione software? Quali sono i metodi dell’ingegneria del software? Quali sono le sfide che l’ingegneria del software si trova ad affrontare?

1. Cos’è un prodotto software? Qualcosa di più di un insieme di linee di codice… Un insieme di linee di codice, strutturato in packages Tutta la documentazione che descrive la struttura del sistema I dati di configurazione, che permettono di installarlo Il manuale utente

Prodotti software: una prima classificazione System software – operating systems, drivers, compilers, etc. Application software – Custom business apps. Engineering/Scientific software – Mentor Graphics, ANSYS. Embedded software – Cell phones, PDAs. Product software – Word, Excel. Web Applications Artificial Intelligence software

Prodotti Software: un’altra classificazione Prodotti Generici Sistemi stand-alone prodotti da un’organizzazione di sviluppo e venduti sul mercato ad ogni cliente Prodotti Dedicati Sistemi che sono commissionati da un cliente specifico e sviluppati appositamente La maggior spesa di software riguarda sistemi generici, ma il maggior sforzo di sviluppo è su prodotti dedicati La differenza principale? Chi dà la specifica del prodotto (il produttore o il consumatore).

Le caratteristiche del prodotto software Il software si sviluppa o si struttura, non si “costruisce” come negli altri processi manifatturieri Lo sviluppo del software e la produzione dell’hardware sono due processi profondamente diversi In comune c’è la tensione a semplificare la produzione riducendola ad un “Assemblaggio di componenti”

Curva dei guasti per l’hardware

Curva dei guasti per il software

2. Attributi di qualità di un prodotto software Affidabilità Correttezza Robustezza Verificabilità Sicurezza - Innoquità Efficienza (Produttività) Non deve sprecare risorse (memoria, tempo,...) Usabilità Deve avere interfaccia e documentazione appropriate Manutenibilità Capacità di evolvere in rapporto alla modifica di requisiti

Il triangolo di McCall M a i n t b l y P o r t a b i l y F l e x i b t u s a b i l t y T e s t a b i l y I n t e r o p a b i l y P R O D U C T E V I S N P R O D U C T A N S I P R O D U C T E A I N C o r e c t n s U s a b i l t y E f i c e n y R e l i a b t y I n t e g r i y

3. Cos’è l’Ingegneria del Software? Definizione IEEE: “The application of systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.”

Cos’è l’ingegneria del software? “Software engineering” è una disciplina che cerca di fornire le regole per il processo di produzione del software Un ingegnere del software dovrebbe: adottare un approccio sistematico e organizzato al proprio lavoro usare strumenti e tecniche appropriate, che dipendono dal problema che deve essere risolto, dai vincoli presenti e dalle risorse disponibili.

Vista a layers dell’Ingegneria del Software tools methods process model a “quality” focus

Definizione dei layers Il layer dei processi è la base per la gestione di ogni progetto software. “Un processo definisce chi fa cosa, e quando e come si raggiunge un certo obiettivo.” Il layer dei metodi descrive come all’interno di un singolo processo si realizzano i singoli passi che lo compongono. Il layer dei tools descrive strumenti che supportano lo sviluppo delle attività.

4. Ingegneria del software e informatica L’informatica è una scienza: il “cuore” sono i fondamenti teorici: linguaggi – algoritmi – complessità – formalismi ecc. L’ingegneria del software ha a che fare con aspetti più “pratici”: come pianificare e sviluppare la produzione di software di qualità. Ad un ingegnere del software le conoscenze di base dell’informatica servono quanto la fisica ad un ingegnere elettrico

5. Ingegneria del software e Ingegneria di sistema L’ingegneria di sistema ha come oggetto tutti gli aspetti dello sviluppo di un sistema basato su computers, inclusi gli aspetti hardware, software e di processo. L’ingegneria del software può essere vista come una parte dell’ingegneria di sistema. Gli ingegneri del software collaborano alla specifica del sistema, alla progettazione architetturale all’integrazione con le altre componenti.

6. Processo di produzione software Il processo di produzione software è un insieme di attività il cui fine complessivo è lo sviluppo di un prodotto software oppure la modifica di un prodotto software

7. Attività richieste nel processo di sviluppo software Specifica Progettazione Implementazione Validazione Installazione Manutenzione Smaltimento

Caratteristiche del processo Comprensibilità Visibilità Supportabilità (CASE ) Accettabilità Robustezza Mantenibilità Rapidità

Problemi nel processo di sviluppo del software Specifiche incomplete/incoerenti Mancanza di distinzione tra specifica, progettazione e implementazione Assenza di un sistema di validazione Il software non si consuma: la manutenzione non significa riparare alcune componenti “rotte”, ma modificare il prodotto rispetto a nuove esigenze

8. I costi di un prodotto software All’incirca il 60% dei costi è legato allo sviluppo, il 40% sono costi per la verifica e validazione (testing). I costi variano a seconda del tipo di sistema che deve essere sviluppato e da requisiti quali la performance o l’affidabilità del sistema. La distribuzione di costi nelle varie fasi del processo di produzione del software dipende dal modello di processo.

Costi relativi nell’intero ciclo di vita del sw

Costo di una modifica

9. Modelli di processo di produzione software Una rappresentazione semplificata del processo di produzione software a partire da una certa prospettiva Esempi di prospettiva da cui si può modellare il processo di produzione sw: Workflow - sequenza di attività Data-flow - flusso di informazione Role/action - chi fa cosa

Le sfide ed i problemi Skill shortage Secondo una ricerca condotta da EITO nel 2003, in Europa ci sono 1 milione e 700 mila posti nell'Information & Communication Technology che non riescono ad essere coperti perché mancano le giuste risorse. In Italia la carenza di risorse è calcolata in 167 mila unità. Skill gap Problema ancor più grave è lo Skill gap, ossia la distanza fra le competenze tecniche richieste dal mercato ICT e la professionalità degli operatori del settore. Alta percentuale di fallimento Indagine dello Standish Group, basata su un campione di 28.000 progetti e pubblicata da Computer Weekly il 9 luglio 1998:

Miti dell’ingegneria del software Software Myth #1 “Se sforiamo i tempi previsti, basta aggiungere programmatori e ce la faremo!” Non basta aggiungere risorse ad un progetto per accelerarne la realizzazione. Lettura consigliata: Frederick Brooks, The Mythical Man-Month “Adding manpower to a late project makes it later”

Miti dell’ingegneria del software Software Myth #2 “Se sappiamo a grandi linee cosa deve fare il sistema, possiamo già iniziare a programmare” Avere chiari gli obiettivi è un buon inizio, ma l’attività di codifica inizia molto più tardi!

Miti dell’ingegneria del software Software Myth #3 “Una volta scritto il programma e fatto girare, il nostro lavoro è finito” Scrivere programmi è solo una parte molto piccola dell’intero processo.

Miti dell’ingegneria del software Software Myth #4 “Finché il programma non gira, non c’è modo per giudicarne la qualità” L’attività di revisione durante il processo di progettazione è una condizione indispensabile per garantire la qualità del prodotto finale.

Miti dell’ingegneria del software Software Myth #5 “Se segui buoni processi di sviluppo software e ti adegui agli standards, un buon prodotto finale è garantito.” La qualità di processo è una condizione necessaria, ma non sufficiente, per la qualità di prodotto.

Miti dell’ingegneria del software Software Myth #6 “I requisiti variano continuamente, ma ogni richiesta di cambiamento può essere facilmente soddisfatta, perché il software è flessibile” E’ vero che I requisiti cambiano, ma la facilità con viene soddisfatta la richiesta di modifica dipende dalla fase del processo in cui avviene la richiesta.

Concludendo Ingegneria del software = una disciplina metodologica che studia principi, tecniche, metodi e strumenti che supportanto il processo di produzione del software.