Sei sulla pagina 1di 12

Concetti Generali della

Ingegneria del Software

Sommario
ÖVisione d’insieme
Concetti Generali della ÖI tipi di Prodotti Software
ÖQualità dei Prodotti
Ingegneria del Software ÖProblemi dell’Ingegneria del software
ÖPratiche

DIB 1 DIB 2

Concetti Generali della


Ingegneria del Software

Risorse dell’Ingegnere del Software


Ö Modelli per la caratterizzazione dei prodotti, dei
processi e delle risorse
Ö Modelli per la stima dell’impegno di risorse nei
Visione d’Insieme progetti di sviluppo software
Ö Modelli per la valutazione ed il monitoraggio delle
qualità dei prodotti e dei processi
Ö Nella I.S. questi modelli sono raramente basati
su tecniche matematiche; molto spesso sono
basati su Esperienza e sulla Indagine Empirica

DIB 3 DIB 4
Concetti Generali della Concetti Generali della
Ingegneria del Software Ingegneria del Software

Il Ruolo dell’Ingegnere del software Fasi per la Produzione del Software


Ö Per programmare in piccolo deve essere : Ö Analisi e Specifiche dei Requisiti. Definisce in modo preciso e
‰ Un buon programmatore formale quali sono le capacità e le caratteristiche del Sistema
Software da produrre. Produce anche Manuali Utenti e Test di
‰ Esperto di strutture dati ed algoritmi Accettazione.
‰ Conoscitore di uno o più linguaggi di programmazione Ö Progettazione e Specifiche. Organizza le componenti che
Ö Per programmare in grande deve essere in grado di: comporranno il sistema e le loro relazioni, attraverso
‰ Sviluppare modelli necessari nelle varie fasi per operare, l’Architettura. Inoltre, le componenti sono decomposte, a basso
grazie a questi, i compromessi necessari livello, in moduli. Produce anche il Manuale di Sistema; il Test di
‰ Esprimere i concetti inerenti il software con diversi livelli di Integrazione ed il Test di Sistema
astrazione, dipendentemente dal destinatario del manufatto Ö Codifica e Test dei moduli. Produce i moduli e ne fa il test per
che produce correttezza.
‰ Trovare le risorse utili per accelerare ed economizzare il Ö Integrazione e Test. Integra tutti i moduli prodotti secondo quanto
processo di sviluppo (componenti, pattern, template, previsto dal progetto e ne fa il test di Integrazione. Terminata
esperienze…) l’integrazione ne fa il Test di Sistema.
‰ Lavorare in gruppo Ö Consegna. Quando il sistema supera anche il test di accettazione
‰ Gestire progetti e coordinare il lavoro degli altri è consegnato al committente.
Ö Manutenzione. Durante la vita del sistema esso è manutenuto per
eliminare malfuzionamenti e per adeguarlo a nuove esigenze.

DIB 5 DIB 6

Concetti Generali della Concetti Generali della


Ingegneria del Software Ingegneria del Software

Rapporto tra I.S. altri campi dell’Informatica Relazioni tra l’I.S. e le altre Discipline.
Ö Linguaggi di programmazione. La I.S. influenza i linguaggi di Ö Scienze Organizzative. La I.S. prende da queste
programmazione che rendono sempre più servizi utili per
strutturare meglio il software. Ad esempio i pacchetti in ADA e discipline molti dei modelli per la gestione di
JAVA; le librerie di componenti; i linguaggi di interfaccia… sistemi e processi complessi. Stimola questa
Ö Sistemi Operativi. Questi influenzano molto la I.S. perché essi
sono grandi sistemi che hanno problemi che si incontrano molto disciplina a studiare nuovi modelli di stima e di
spesso nelle grandi applicazioni. gestione delle filiere di produzione, visto che
Ö Le basi di dati. Hanno stimolato ed aiutato la I.S. nella quelli che usa nelle produzioni materiali si
realizzazione del principio di separazione degli interessi.
Ö Intelligenza Artificiale. Questa influenza ed è influenzata dalla I.S.. adattano male alle produzioni incentrate
Essa ha portato nuove tecniche di definizione dei requisiti in sull’uomo.
presenza di incertezza; ha invece importato tecniche per la
separazione degli interessi negli agenti. Ö Ingegneria dei Sistemi. Ha relazione con la I.S.
Ö Modelli teorici. Molti modelli teorici sono stati importati dalla I.S.. sia perché studia sistemi complessi sia perché il
Ad esempio protocolli di comunicazione e macchine a stati finiti.
Altri modelli sono stati stimolati dalla I.S. ad esempio specifiche software è sempre una componente di sistemi più
algebriche e modelli di dati astratti. grandi.

DIB 7 DIB 8
Concetti Generali della
Ingegneria del Software

Il Software...
PROGRAMMA
ÖÈ un insieme di istruzioni autoconsistenti rispetto ad uno o
più obiettivi.
I Tipi di Prodotti Software ÖSpesso è usato dallo stesso autore. E’ difficile farlo utilizzare
da altri perché per scarsa documentazione è difficilmente
comprensibile
ÖI suoi difetti sono rilevati, in genere, sul campo perché è
scarsa la validazione durante la sua produzione.
ÖHa vita relativamente breve perché la manutenzione fa
decadere la sua qualità e diventa sempre più difficile e costoso
farlo evolvere.

DIB 9 DIB 10

Concetti Generali della Concetti Generali della


Ingegneria del Software Ingegneria del Software

… Il Software
… Il Software ...
APPLICAZIONE SISTEMA SOFTWARE
ÖÈ un insieme di programmi interagenti che copre un
ÖÈ un insieme di programmi interagenti tra loro. Dominio Applicativo con
ÖSpesso è venduto come un pacchetto usabile da persone ‰ alto livello di qualità,
che non hanno dimestichezza con l’informatica perché ‰ completo di tutta la documentazione : i requisiti, la
sono forniti, almeno, di un’interfaccia e di documentazione progettazione che spiega la sua struttura e le
d’uso. decisioni che hanno giustificato la sua strutturazione;
ÖI loro difetti sono scoperti essenzialmente dagli i manuali d’uso.
utilizzatori, ma durante la produzione una parte sono ÖPer far rientrare gli alti costi di produzione, essi sono
scoperti attraverso la validazione. destinati ad un esteso bacino di utenza anche con
piattaforme diverse, pertanto: la usabilità e la portabilità
ÖSpesso hanno bassi livelli di qualità; sono poco attrezzati sono caratteristiche chiave.
per il trasferimento a nuovi sviluppatori; pertanto la loro
ÖPer poter essere redditizio, un sistema software deve
qualità decade rapidamente e diventa sempre più costosa
avere una lunga vita e deve invecchiare lentamente.
e rischiosa la loro manutenzione.

DIB 11 DIB 12
Concetti Generali della Concetti Generali della
Ingegneria del Software Ingegneria del Software

Applicazioni per l’Impresa … … Applicazioni per l’Impresa


ÖApplicazioni per l’impresa sono Sistemi ‰ Accesso concorrente ai dati, da diversi
Software caratterizzati da : utilizzatori dell’applicazione
‰ Dati persistenti, necessari per passare le ‰ Rilevante numero di schermate componenti
informazioni tra differenti applicazioni e tra l’interfaccia, è frequente avere interfacce
differenti esecuzioni della stessa con centinaia di schermate
applicazione ‰ Integrazione tra applicazioni che supportano
‰ Rilevanti volumi di dati, un sistema di domini differenti della stessa impresa,
medie dimensioni potrebbe avere diversi GB molto spesso costruite con approcci
di dati organizzati in decine di tipi di eterogenei
records ed in milioni di records

DIB 13 DIB 14

Concetti Generali della Concetti Generali della


Ingegneria del Software Ingegneria del Software

Sistemi in Tempo Reale Sistemi Embedded


Ö La caratteristica principale è la risposta a ÖSistemi componenti di altri sistemi che
particolari condizioni esterne entro un
predeterminato intervallo di tempo che in genere spesso non hanno interfacce verso gli
è piccolo. utenti esterni, sempre hanno interfacce
Ö Sono orientati al controllo. In genere gestiscono verso dispositivi dello stesso sistema di cui
pochi dati e molte funzioni essi sono componenti.
Ö Possono essere basati su eventi oppure basati sul
tempo. ÖIn genere hanno pochi dati e poche
Ö Spesso sono utilizzati per operazioni critiche capacità funzionali
quindi devono aver caratteristiche di affidabilità e
di salvaguardia/protezione ( safety) in condizioni
di rischio

DIB 15 DIB 16
Concetti Generali della
Ingegneria del Software

Qualità Principali
Ö Correttezza. Un sistema software deve soddisfare
tutti i suoi requisiti funzionali e di prestazione.
Ö Affidabilità. Probabilità che un sistema software si
Qualità dei Prodotti comporti secondo le attese in un intervallo di
tempo.
Ö Robustezza. Un sistema software si deve
comportare in modo accettabile anche in
circostanze non previste nelle sue specifiche.
Ö Usabilità. Un sistema software deve essere
reputato di facile uso dai suoi utilizzatori.
Ö Manutenibilità. Facilità con cui: si identifica la
causa di un malfunzionamento e si elimina; si
aggiungono, sottraggono e si modificano capacità
e funzioni del sistema.
DIB 17 DIB 18

Concetti Generali della Concetti Generali della


Ingegneria del Software Ingegneria del Software

Prestazioni… …Prestazioni…

ÖTempo di risposta, tempo necessario ÖLatenza, il tempo minimo necessario


per elaborare un processo: da quando per ricevere un qualunque tipo di
si pressa il tasto di avvio a quando risposta, compresa la notifica che
mostra il risultato l’applicazione non è riuscita ad eseguire
ÖReattività, tempo che impiega il sistema nulla;
a notificare che ha acquisito la richiesta ÖThroughput, quanto lavoro il sistema
dell’utente, e’ indipendente dal tempo di riesce ad eseguire nell’unità di tempo:
risposta transazioni per secondo; byte trasferiti
per secondo…

DIB 19 DIB 20
Concetti Generali della Concetti Generali della
Ingegneria del Software Ingegneria del Software

… Prestazioni… … Prestazioni

ÖCarico, quanto lavoro contemporaneo può ÖCapacità, il massimo throughput o


fare il sistema: il numero di utenti che carico che un sistema può reggere. Può
possono lavorare contemporaneamente essere un massimo assoluto od una
soglia oltre la quale le prestazioni del
ÖSensibilità al carico, quanto varia una
sistema possono decadere
prestazione con il cambiamento di carico
sensibilmente
ÖEfficienza, la prestazione rapportata alle
ÖScalabilità, misura della capacità di
risorse utilizzate: throughput/numero di
modificare le prestazioni del sistema
CPU
con l’aumento delle risorse disponibili

DIB 21 DIB 22

Concetti Generali della


Ingegneria del Software

Dissonanze Concettuali
ÖMolti concetti del Dominio Applicativo
Problemi della Ingegneria del sono interpretati in modo diverso da
utenti e da applicazioni diversi.
Software ‰ Per esempio, un cliente può essere
considerato:
• un soggetto con cui l’impresa ha una
relazione commerciale corrente, oppure
• un soggetto con cui si è intrattenuta una
relazione commerciale, anche se tale
relazione non è stata mantenuta

DIB 23 DIB 24
Concetti Generali della
Ingegneria del Software

Struttura Complessa

Ö Un Dominio Applicativo include, in genere, un


insieme di Processi di Business che hanno
molte relazioni tra loro
Ö Le Applicazioni d’Impresa devono tener conto
Pratiche
delle molte interrelazioni tra i processi di
business e perciò risultano essere molto
complesse.

DIB 25 DIB 26

Concetti Generali della Concetti Generali della


Ingegneria del Software Ingegneria del Software

Pratiche Storiche… …Pratiche Storiche: Matrice Requisiti


x Componenti…
ÖStrutturazione del software per facilitare la Ö Una matrice diagonale
R1 R2 R3 … Rn-1 Rn
descrive
manutenzione C1 X X X X X
un’applicazione che
‰ Principi di Parnas circa l’incapsulamento C2 X X X X ‰ Facilita la validazione
dell’informazione/information hiding C3 X X X ‰ facilita la manutenzione
‰ Diagonalizzazione della matrice Requisiti x . ‰ facilita la stima dei costi di
Componenti . manutenzione
. Ö Le ispezioni sul
Cm-1 X X X progetto aiutano a
Cm X X X X migliorare questa
matrice

DIB 27 DIB 28
Concetti Generali della Concetti Generali della
Ingegneria del Software Ingegneria del Software

… Pratiche storiche : Modello di prodotto


... Pratiche Storiche… tracciabile Ö Documentazione
adeguata
ÖLa documentazione come manufatto focale Bisogni Test Ö Tracciabilità tra le
dello sviluppo di un’applicazione astrazioni
Accettazione
‰ (es. Bisogni <-> Requisiti
‰ La documentazione deve essere tracciabile tra <-> Progetto)
manufatti di differenti fasi del ciclo di vita del Test Ö Consistenza tra
software ed all’interno di uno stesso manufatto Requisiti
Sistema astrazioni (correttezza)
‰ La tracciabilità è assicurata se il codice non è ‰ (es. Requisiti <->
Progetto)
documentato a posteriori ma è ricavato dalla Progetto
Test
documentazione IntegrazioneÖ Consistenza tra
eseguibile e
documentazione
(affidabilità)
Codice + Test Unità ‰ (es. Test Integrazione <->
Progetto)
DIB 29 DIB 30

Concetti Generali della Concetti Generali della


Ingegneria del Software Ingegneria del Software

Problemi aperti della Ingegneria del Nuove Frontiere della Ingegneria del
Software Software
ÖLa carenza di conformità dei processi ÖPotenziamento dello sviluppo attraverso la
software con i principi degli stessi causa distribuzione della produzione
lo sviluppo di applicazioni difficili da ÖSviluppo di Software Open Source
manutenere ÖeXtreme Programming
ÖE’ necessaria la raccolta ed il ÖLinee di Prodotto
trasferimento agli sviluppatori di evidenze
sperimentali circa: ÖSoftware ad alta sicurezza ed affidabilità
‰ la relazione tra questi principi e la economicità Ö….
di costruzione, distribuzione e manutenzione
del software

DIB 31 DIB 32
Concetti Generali della Concetti Generali della
Ingegneria del Software Ingegneria del Software

Potenziamento dello sviluppo ... Potenziamento dello sviluppo


attraverso la distribuzione della attraverso la distribuzione della
produzione... produzione …
ÖObiettivi ÖProblemi
‰ far concentrare l’impresa su poche competenze ‰ Specifiche del prodotto devono essere chiare,
centrali altrimenti si costruisce un’applicazione
‰ utilizzare le risorse umane disponibili sull’intero difforme dai requisiti
globo ‰ Incompatibilità della maturità dei processi delle
imprese che cooperano fa rischiare la
violazione dei tempi e dei costi previsti per la
produzione e la manutenzione.

DIB 33 DIB 34

Concetti Generali della Concetti Generali della


Ingegneria del Software Ingegneria del Software

... Potenziamento dello sviluppo Sviluppo di Software Open Source...


attraverso la distribuzione della
produzione ÖObiettivi
‰ Utilizzare la creatività di comunità estese
ÖLezioni Apprese ‰ Utilizzare la potenza di sviluppo di una grande
‰ Solo le imprese che sanno specificare possono comunità
utilizzare la sub contrattazione ÖProblemi
‰ Se un’impresa non ha profonda competenza ‰ Non è chiaro e non è documentato lo scopo
nella gestione dei progetti co-locati non può della documentazione
pensare a distribuirli fuori casa ‰ Non è chiara la responsabilità della correzione
e della evoluzione del software

DIB 35 DIB 36
Concetti Generali della Concetti Generali della
Ingegneria del Software Ingegneria del Software

... Sviluppo di Software Open Source eXtreme Programming...


ÖObiettivi
‰ Riduzione dei tempi e dei costi di sviluppo
ÖLezioni Apprese ‰ Utilizzazione di una buona pratica
‰ E’ necessario accordarsi con gli sviluppatori dell’Ingegneria del Software: la ispezione
perché applichino le buone pratiche ‰ Evitare l’uso di processi prescrittivi e pesanti
dell’ingegneria del software ÖProblemi
‰ Gli sviluppatori sono, spesso, hacker; questo
processo si sta diffondendo in ambienti poco
maturi
‰ il processo non consente di patrimonializzare i
risultati per riusarli in progetti diversi

DIB 37 DIB 38

Concetti Generali della Concetti Generali della


Ingegneria del Software Ingegneria del Software

... eXtreme Programming Linee di prodotto …


ÖLezioni apprese
‰ si deve adottare con chiarezza di scopo, ÖObiettivi
dipendentemente dal dominio di ‰ Utilizzare le somiglianze tra sistemi
applicazione e dagli obiettivi del progetto; software differenti per migliorare lo sviluppo
‰ deve essere utilizzato con modalità e la manutenzione delle applicazioni
orientata al prodotto e non al processo • tempi e costi di sviluppo
‰ non deve indurre ad abbandonare • qualità
l’orientamento al processo ma deve essere
utilizzato come un processo leggero

DIB 39 DIB 40
Concetti Generali della Concetti Generali della
Ingegneria del Software Ingegneria del Software

… Linee di prodotto …
… Linee di prodotto …
ÖProblemi
‰ La costituzione di una famiglia di applicazioni che ÖLezioni apprese
rappresentino una linea di prodotto richiede ‰ Le linee di prodotto sono un approccio che
maggiore tempo della costruzione di una singola promuove attivamente il riuso
applicazione; perciò il processo di costruzione ‰ la efficacia migliora incrementalmente, con
della linea di prodotto è incrementale; l’apprendimento di nuove varianti dei
‰ Il primo membro di una linea utilizza una prodotti nello stesso dominio;
piattaforma ed un modello di dominio applicativo
di riferimento; la linea si popolerà con la
necessità di cambiare la piattaforma o di
evoluzione del modello di dominio o dello stesso
dominio;

DIB 41 DIB 42

Concetti Generali della Concetti Generali della


Ingegneria del Software Ingegneria del Software

… Linee di prodotto Software ad Alta Sicurezza ed


Affidabilità...
ÖEsperienze
Ö Obiettivi
‰ Le esperienze del SEI e dello IESE ‰ Certificazione dei prodotti software con continuità, prima
suggeriscono che l’investimento è e dopo ogni intervento di manutenzione
giustificato dall’economia di produzione e Ö Problemi
manutenzione ‰ Enorme sforzo e costo di certificazione, soprattutto per
sistemi la cui manutenzione è affidata a terzi
‰ Il ritorno dell’investimento si ha con il terzo ‰ La certificazione per prodotti manutenuti localmente
sistema della stessa linea di prodotti richiede la incrementalità delle ispezioni &test

DIB 43 DIB 44
Concetti Generali della
Ingegneria del Software

... Software ad Alta Sicurezza ed


Affidabilità
ÖSuggerimenti
‰ Le applicazioni devono essere costruite per essere
modificate facilmente, utilizzando tutti i principi di
strutturazione della ingegneria del software
‰ Migliorare l’uso di tecniche di manutenzione,
verifica e validazione incrementali
ÖEsperienze
‰ La linea di prodotti è un approccio adeguato per il
superamento di questi problemi perché è
massimizzato il riuso e, quindi, è più facile la
certificazione incrementale.

DIB 45