Corso di Ingegneria del Software - Università di Roma · Lezione 1: Introduzione al SE ......
Transcript of Corso di Ingegneria del Software - Università di Roma · Lezione 1: Introduzione al SE ......
Corso di Ingegneria del Software
Paolo Bottoni
Lezione 1: Introduzione al SE
Lucidi tradotti e adattati a partire dalla versione in inglese presente a http://iansommerville.com/software-engineering-book/slides/
Lezione 1 Introduzione SEIngegneria del Software 2
Obiettivi
• Introdurre Ingegneria del Software (SE) e
spiegarne importanza
• Dare risposte a questioni chiave su SE
• Cenni sulla professione
• Presentare alcuni casi studio
Lezione 1 Introduzione SEIngegneria del Software 3
Software engineering
• Economie paesi sviluppati dipendono da software
• Sempre più sistemi controllati software
• Spesa software frazione significativa PIL
• SE: teorie, metodi e strumenti per:
• sviluppo software professionale
Lezione 1 Introduzione SEIngegneria del Software 4
• Intangibile
• Completamente flessibile
• Ingegneria software ancora non riconosciuta
come classica disciplina ingegneristica
• Processo di sviluppo software non standard
• Molti progetti software di tipo 'one-off'
Aspetti distintivi del software
Lezione 1 Introduzione SEIngegneria del Software 5
Costi del software
• Costi software spesso dominano costi sistemi
• Su PC, spesso maggiori rispetto costo hardware
• Costi mantenimento maggiori costi sviluppo
• Per sistemi con vita lunga, ordine di grandezza
• SE: metodi per sviluppo efficiente di software
Lezione 1 Introduzione SEIngegneria del Software 6
FAQs su SE
• Cos’è software?
• Cos’è SE?
• Che differenza fra SE e Computer Science (CS)?
• Che differenza fra SE e Ingegneria dei Sistemi (SysEn)?
• Cos’è processo software?
• Cos’è modello di processo software?
• Quali costi per SE?
• Cosa sono metodi di SE?
• Quali attributi per software di qualità?
• Quali sfide chiave per SE?
Lezione 1 Introduzione SEIngegneria del Software 7
Cos’è il software?
• Programmi e documentazione associata
• es. requisiti, modelli di progetto, manuali utente
• Prodotti software possono essere– Generici – per vendita a clienti diversi
– es. software per PC come Excel o Word.
– Ad hoc (custom) – per cliente da sue specifiche
• Software nuovo creato:
• sviluppando nuovi programmi
• configurando sistemi software generici
• riusando software esistente
• spesso implica integrazione e configurazione
Lezione 1 Introduzione SEIngegneria del Software 8
Cos’è l’ingegneria del software?
• Interessata a ogni aspetto produzione software
• Adotta approccio sistematico e organizzato
• Identifica e usa strumenti e tecniche appropriati a:
– Problema da risolvere
– Vincoli di sviluppo
– Risorse disponibili
Lezione 1 Introduzione SEIngegneria del Software 9
Quale è la differenza fra SE e CS?
• CS: teoria e fondamenti
• SE: aspetti pratici
• sviluppo e consegna software utile• corretto, usabile, sicuro
• Teorie in CS insufficienti per fondazione completa
• (differenza con caso fisica e ingegneria elettrica)• Problemi formalizzazione requisiti
• Problemi costruzione modelli formali
• Problemi verifica modelli e software
• Problemi di scala e di integrazione
Lezione 1 Introduzione SEIngegneria del Software 10
Quale è la differenza fra SE e SysEn?
• SysEn: ogni aspetto sistemi basati su computer
• inclusi hardware, software e processi (aspetti sociali)
• SE parte processo con riferimento a
– Sviluppo infrastruttura software
– Controllo
– Applicazioni
– Database
• Ingegneri di sistema coinvolti in:
– specifica sistema
– progetto architetturale
– integrazione, installazione
Lezione 1 Introduzione SEIngegneria del Software 11
Cos’è un processo software?
• Attività per sviluppo o evoluzione software
• Attività generiche processi software:
– Specifica: cosa deve fare sistema; vincoli su sviluppo– Raccolta e analisi dei requisiti
– Sviluppo: produzione del sistema software– Progettazione e implementazione
– Validazione: controllare corrispondenza con requisiti
– Evoluzione: risposta a cambiamenti richieste
– Attività tipicamente distribuite su fasi nel tempo
Lezione 1 Introduzione SEIngegneria del Software 12
Cos’è un modello di processo software?
• Rappresentazione semplificata di processo software
• Presentata da prospettiva specifica
• Aspetti descrittivi e/o prescrittvi
• Esempi di prospettive su processo:
– Workflow: flusso di controllo e dipendenze fra attività
– Data-flow: flusso di informazione
– Role/action: chi fa cosa
• Modelli di processo generici
– A cascata
– Sviluppo iterativo
– SE basata sui componenti
Lezione 1 Introduzione SEIngegneria del Software 13
Quali sono i costi del SE?
• Regola "60/60"• mantenimento - 60% costi software (media)
• miglioramento - circa 60% mantenimento
• correzione errori - circa 17%
• 30% mantenimento è comprensione codice
• Per software ad hoc, costi di evoluzione spesso eccedono quelli di sviluppo
• Dipendenza da tipo di sistema, requisiti non funzionali, processo• es. prestazioni e affidabilità
Spesa in IT
(1999)
Lezione 1 Introduzione SEIngegneria del Software 14
Cosa sono i metodi di SE?
• Approcci strutturati a sviluppo software
– Modelli di sistemi
• Descrizioni di modelli (grafici) da produrre
– Notazioni
– Regole
• Vincoli applicati a modelli di sistema
– Consigli di progetto
• Indicazioni da buone pratiche
– Linee guida di processo
• Quali attività seguire
• Spesso supportati da strumenti specifici
Lezione 1 Introduzione SEIngegneria del Software 15
Quali sono gli attributi del buon software?
• Fornire funzionalità e prestazioni richieste
• Manutenibile– Deve evolvere per fare fronte a nuove esigenze
• Affidabile– Attori dipendono da risultati software
• Efficiente– Non dovrebbe sprecare risorse di sistema
• Accettabile– Da utenti per cui è stato progettato
• Comprensibile
• Usabile
• Compatibile con altri sistemi
Lezione 1 Introduzione SEIngegneria del Software 16
Quali sono le sfide chiave per il SE?
• Eterogeneità
– Sviluppare tecniche di costruzione software per
piattaforme e ambienti di esecuzione diversi
• Consegna
– Sviluppare tecniche che portino a produrre
software più velocemente
• Fiducia
– Sviluppare tecniche che dimostrino a utenti che
possono fidarsi del prodotto
Tipi di applicazione I
• Stand-alone
– Eseguite su calcolatore locale, includono ogni
funzionalità necessaria, senza bisogno di connessione
• Interattive basate su transazioni
– Eseguite su calcolatore remoto, con accesso locale da
parte di utenti
• Sistemi di controllo incorporati
– Controllano e gestiscono dispositivi hardware
– Probabilmente tipo più diffuso di applicazione
Lezione 1 Introduzione SEIngegneria del Software 17
Tipi di applicazione II
• Sistemi di elaborazione a lotti
– Sistemi per imprese che elaborano, in unico lotto, numerosi
ingressi individuali per creare uscite corrispondenti
• Sistemi per svago
– Intesi principalmente per uso individuale
• Sistemi per modellazione e simulazione
– Sviluppati da scienziati e ingegneri per modellare processi
o situazioni fisiche, con molti oggetti separati e interagenti
Lezione 1 Introduzione SEIngegneria del Software 18
Tipi di applicazione III
• Sistemi di raccolta dati
– Raccolgono dati da ambiente tramite insieme di sensori
e li trasmettono ad altri sistemi per elaborazione
• Sistemi di sistemi
– Composti da combinazione di altri sistemi software
Lezione 1 Introduzione SEIngegneria del Software 19
Fondamenti di ingegneria del software
• Indipendenti da specifiche tecniche di sviluppo
– Sistemi andrebbero sviluppati con processo gestito e
ben compreso.
• Processo dipendente da tipo di software
– Dipendibilità e prestazioni importanti per ogni tipo
– Importante comprendere e gestire specifiche e requisiti
– Dove appropriato scegliere di riusare software esistente
anziché scrivere nuovo software
Lezione 1 Introduzione SEIngegneria del Software 20
Ingegneria del software per il Web
• Riuso del software
– Approccio dominante in questo campo
– Sistemi costruiti a partire da assemblaggio di componenti
e sistemi esistenti
• Sviluppo incrementale e agile
– Sistemi Web sviluppati e consegnati incrementalmente
– Difficile specificare requisiti completi in anticipo
Lezione 1 Introduzione SEIngegneria del Software 21
Lezione 1 Introduzione SEIngegneria del Software 22
Responsabilità professionale e etica
• SE comporta responsabilità maggiori che
applicazione di competenze tecniche
• Ingegneri del software devono comportarsi
in modo onesto e etico
• Richiede di più che rispettare legge
• Codice etico ACM/IEEE
Lezione 1 Introduzione SEIngegneria del Software 23
Aspetti della responsabilità
• Confidenzialità
– Nei confronti di clienti e datori di lavoro, anche senza impegno scritto
• Competenza
– Rappresentare correttamente proprio livello di competenza. Non devono consapevolmente accettare lavori oltre loro competenze
Lezione 1 Introduzione SEIngegneria del Software 24
Aspetti della responsabilità
• Diritti di proprietà intellettuale
– Conoscere leggi locali, es. brevetti, copyright, etc.
– Assicurare protezione proprietà intellettuale
– Per datori di lavoro e clienti
• Cattivo uso del computer
– Non sfruttare abilità per uso scorretto computer altrui
Lezione 1 Introduzione SE Ingegneria del Software 25
Dilemmi etici
• Disaccordo di principio con politiche management superiore
• Azienda rilascia sistema critico senza test adeguato
• Partecipazione sviluppo sistemi d’arma o nucleari
Take away
• Ingegneria del software HA a che fare con
PROCESSI tramite cui software è prodotto
• NON HA a che fare con programmazione o
progettazione di algoritmi (anche se può stabilire
discipline)
• Software NON semplicemente programmi, ma
anche tutto ciò che serve per provarne
correttezza, efficienza, efficacia
Lezione 1 Introduzione SEIngegneria del Software 26
Studi di caso
• Pompa insulina personale
– Sistema incorporato in pompa di insulina usata da diabetici
per controllare livello glucosio in sangue
• Mentcare: gestione pazienti con problemi mentali
– Mantenere cartelle cliniche su persone che ricevono
assistenza per problemi di salute mentale
• Stazione meteorologica esterna
– Sistema di raccolta dati su condizioni meteo in aree remote
• iLearn: ambiente di apprendimento digitale
– Sistema di supporto ad apprendimento a scuola
Lezione 1 Introduzione SEIngegneria del Software 27
Sistema di controllo pompa insulina
• Raccoglie dati da sensore di zucchero in
sangue e calcola dose di insulina da iniettare
• Calcolo basato su tasso di cambiamento livelli
di zucchero in sangue
• Manda segnale a micro-pompa per rilasciare
dose corretta di insulina
• Sistema critico per salvaguardia: livelli bassi
possono portare a malfunzionamenti cerebrali,
coma e morte; livelli alti possono avere
conseguenze a lungo termine su vista e reni
Lezione 1 Introduzione SEIngegneria del Software 28
Lezione 1 Introduzione SE 29
Architettura hardware
Dispositivo
ago
Sensore
Schermo 1 Schermo 2
Allarme
Pompa Orologio
Controllore
Alimentatore
Riserva di insulina
Ingegneria del Software
Lezione 1 Introduzione SE 30
Modello di attività di pompa insulina
Calcolo richiesta
insulina
Analisi zucchero
in sangue
Sensore zucchero
in sangue
Controllore
distribuzione
insulina
Pompa insulina
SangueParametri
sangue Livello zucchero in sangue
Insulina
Comandi
controllo
pompa Richiesta insulina
Ingegneria del Software
Requisiti essenziali ad alto livello
• Sistema sarà disponibile a fornire insulina
quando richiesto
• Sistema agirà affidabilmente e fornirà
quantità corretta di insulina per contrastare
livello attuale di zucchero in sangue
• Requisito essenziale di salvaguardia: non è
mai fornita dose eccessiva di insulina, in
quanto potenzialmente a rischio di morte
Lezione 1 Introduzione SEIngegneria del Software 31
Mentcare: sistema informazione su
pazienti con problemi mentali
• Sistema informativo medico
– Mantiene informazione su pazienti e su trattamenti
• Pazienti in genere non richiedono trattamento
ospedaliero ma incontri regolari con specialisti con
conoscenza dettagliata problemi
• Incontri in genere non in ospedale, ma in spazi
locali o centri comunitari
Lezione 1 Introduzione SEIngegneria del Software 32
Caratteristiche di Mentcare
• Sistema informativo da usare in cliniche
• Utilizza base di dati centralizzata, ma può
anche essere utilizzato su PC in locale
• Accesso a base di dati quando connessi,
ma possibile scaricare e usare copie locali
di cartelle cliniche pazienti
Lezione 1 Introduzione SEIngegneria del Software 33
Obiettivi di Mentcare
• Generare informazione di gestione che permetta
a gestori servizio di validare prestazioni rispetto
a obiettivi locali e di governo
• Fornire informazione tempestiva a personale
medico per supportare trattamento pazienti
Lezione 1 Introduzione SEIngegneria del Software 34
Aspetti fondamentali
• Gestione cura individuale
– Medici possono creare cartelle per pazienti, aggiornare
informazione in sistema, vedere storia paziente, etc.
– Riassunti su problemi principali e trattamenti prescritti
• Controllo pazienti
– Sistema controlla cartelle pazienti sotto trattamento e
produce avvisi se individua possibili problemi
• Rapporti amministrativi
– Sistema genera rapporti mensili su numero di pazienti
trattati a ogni clinica, numero di pazienti entrati in cura o
che hanno lasciato cura, medicine prescritte, costi, etc.
Lezione 1 Introduzione SEIngegneria del Software 36
Questioni rilevanti
• Privacy
– Informazioni su pazienti è confidenziale, non deve
essere mai rivelata a nessuno che non sia staff
medico autorizzato o paziente stesso
• Salvaguardia
– Alcune condizioni portano pazienti a suicidio o a
diventare pericolosi per altri. Dove possibile,
sistema avviserà staff medico su possibili problemi.
– Sistema deve essere disponibile quando richiesto,
altrimenti salvaguardia può essere compromessa e
prescrizione corretta può essere impossibile
Lezione 1 Introduzione SEIngegneria del Software 37
Stazione meteo remota
• Governo di paese con vaste aree di natura selvaggia
decide di dispiegare diverse centinaia di stazioni
meteo in aree remote
• Stazioni raccolgono dati da insieme di sensori per:
temperatura, pressione, luce solare, pioggia, velocità
e direzione vento
– Stazione include strumenti che misurano parametri meteo,
su periodi di 24 ore.
– Ogni strumento controllato da sistema software che prende
periodicamente letture parametri e gestisce dati raccolti
Lezione 1 Introduzione SEIngegneria del Software 38
Sistema informazione meteo
• Sistema stazione meteo
– Responsabile per raccolta dati, elaborazioni iniziali e
trasmissione a sistema gestione dati
• Sistema gestione dati e archiviazione
– Raccoglie dati da stazioni remote, compie elaborazione
e analisi e archivia dati
• Sistema gestione stazione
– Comunica via satellite con stazioni remote per
controllare salute sistemi, fornisce rapporti su problemi
Lezione 1 Introduzione SEIngegneria del Software 39
Funzionalità software aggiuntive
• Controllare strumenti, hardware energia e
comunicazione, riportare guasti a sistema gestione
• Gestire energia sistema
– assicurare carica batterie in condizioni ambientali adeguate
– generatori spenti in condizioni avverse (vento forte)
• Supportare riconfigurazione dinamica, parti software
rimpiazzate con nuove versioni, sistemi di backup
attivati in caso di fallimenti di sistema
Lezione 1 Introduzione SEIngegneria del Software 40
iLearn: ambiente digitale di apprendimento
• Piattaforma che incorpora strumenti per
apprendimento generici e specifici, e insieme
di applicazioni rivolte a utenti
• Strumenti inclusi in ogni versione di iLearn
scelti specificamente da insegnanti e studenti
– Esempi:
• applicazioni generali come spreadsheet,
• applicazioni di gestione apprendimento, es. Virtual
Learning Environment (VLE) per gestire compiti a casa,
giochi e simulazioni
Lezione 1 Introduzione SEIngegneria del Software 41
Sistema orientato a servizi
• Componenti sistema considerati come
servizi rimpiazzabili
• Aggiornamento incrementale se nuovi
servizi disponibili
• Rapida configurazione per creare versioni
per gruppi diversi, es. bambini piccoli che
non sanno leggere, studenti senior, etc.
Lezione 1 Introduzione SEIngegneria del Software 42
Servizi iLearn
• Servizi di utilità forniscono funzionalità di base
indipendente da applicazione, utilizzabili da altri
servizi sistema
• Servizi applicativi forniscono applicazioni specifiche,
es. email, comunicazione di gruppo, condivisione
foto, accesso a contenuto educativo specifico, es.
film scientifici o risorse storiche
• Servizi di configurazione usati per adattare ambiente
con insieme specifico di servizi applicativi e definire
come condividere servizi tra insegnanti, studenti,
genitori, etc.
Lezione 1 Introduzione SEIngegneria del Software 43
Integrazione servizi in iLearn
• Servizi integrati offrono API (Application Programming
Interface) tramite cui altri servizi hanno accesso,
rendendo possibile comunicazione diretta fra servizi
• Servizi indipendenti acceduti tramite browser
– Informazione condivisa con altri servizi solo tramite azioni
esplicite (copia/incolla)
– Ri-autenticazione può essere richiesta per ogni servizio
indipendente
Lezione 1 Introduzione SEIngegneria del Software 45