Corso di Ingegneria del Software - Università di Roma · Lezione 1: Introduzione al SE ......

45
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/

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

Organizzazione sistema Mentcare

Lezione 1 Introduzione SEIngegneria del Software 35

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

Architettura iLearn

Lezione 1 Introduzione SEIngegneria del Software 44

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