Sei sulla pagina 1di 10

Principi dell’Ingegneria del

Software

Sommario
ÖApplicabilità dei principi
Principi dell’Ingegneria del ÖRigore e Formalità
ÖSeparazione degli Interessi
Software
ÖModularità
ÖAstrazione
ÖGeneralità
ÖIncerementalità

DIB 2

Principi dell’Ingegneria del


Software

Applicabilità
Ö I principi descrivono proprietà desiderabili dei
prodotti e dei processi in termini generali ed
astratti
Ö I principi sono applicabili in tutti i processi di Rigore e Formalità
sviluppo del software, indipendentemente da:
‰ Il contesto di sviluppo
‰ Il tipi di sistema da sviluppare
‰ L’ambiente di sviluppo
‰ L’ambiente target del software
Ö Si applicano attraverso metodi e tecniche
specifiche utilizzabili nei processi di sviluppo

DIB 3
Principi dell’Ingegneria del Principi dell’Ingegneria del
Software Software

Esempio…
Concetti
Ö Rigoroso
ÖRigore è la coerenza con le premesse del ‰ Se Durata del Volo < 1hh: distribuire bevande
manufatto che si sta producendo e con il ‰ Se Durata del Volo >1 hh e Tipo di Volo =
Intracontinentale : Distribuire Bevande e Snack
metodo e le tecniche che si intende ‰ Se Durata del Volo >1hh e Tipo di Volo = Intercont.:
utilizzare nella produzione Distribuire Bevande e Pranzo
‰ Se Durata Volo > 8hh e Tipo di Volo = Intercont.:
ÖEsistono diversi livelli di rigore, quello più Distribuire Bevande, Pranzo e Colazione
alto è la formalità
ÖFormalità è l’uso esclusivo di formalismi
matematici per guidare lo sviluppo del
software e per valutarlo

DIB 5 DIB 6

Principi dell’Ingegneria del Principi dell’Ingegneria del


Software Software

…Esempio
Vantaggi
Ö Formale
‰ Durata Volo : [1,8 [ Ö Il rigore consente di sviluppare software con buoni livelli di
qualità.
‰ Tipo di Volo :[Nazionale; Intracontinentale; Intercontinentale]
‰ La scrittura rigorosa della documentazione la rende
‰ Distribuzione :[Bevande;Snack; Pranzo; Colazione] comprensibile e tracciabile, quindi l’applicazione software ha
‰ Distribuzione = F (Durata Volo, Tipo Volo) una buona manutenibilità
Ö Il formalismo consente la gestione automatica dello
sviluppo software.
‰ Un programma specificato formalmente può essere generato
automaticamente; un processo descritto formalmente può
essere eseguito automaticamente
Ö I concetti trattati nello sviluppo di un’applicazione sono ad
alto contenuto semantico, quindi sono difficilmente
formalizzabili. Pertanto è necessario che siano almeno
rigorosi per evitare che si realizza qualcosa di differente dal
richiesto; questo è un rischio che quando si verifica genera
grandi diseconomie.

DIB 7 DIB 8
Principi dell’Ingegneria del
Software

Svantaggi
ÖE’ difficile per uno sviluppatore mantenere
sistematicamente lo stesso livello di
rigore; spesso esso si comporta non Separazione degli interessi
conformemente
ÖIl formalismo richiede molto impegno
uomo

DIB 9

Principi dell’Ingegneria del Principi dell’Ingegneria del


Software Software

Concetti Esempi
Ö Separare le decisioni necessarie per risolvere un Ö Separazione per Tempo. I problemi di pianificazione
dell’analisi si separano da quelli della pianificazione della
aspetto dello stesso problema. Esistono diverse progettazione.
modalità di separare: Ö Separazione per Caratteristiche. Si progetta prima il
‰ Separazione per Tempo. Aspetti che si rilevano in tempi sistema software in modo da mantenere elevata la sua
diversi. strutturazione. Successivamente, se fosse necessario, si
affina la struttura perché sia efficiente quanto è richiesto.
‰ Separazione per Caratteristiche. Ogni aspetto
corrisponde ad una caratteristica, ognuna è analizzata Ö Separazione per Prospettive. Prima si struttura il sistema
per assicurare una buona interfaccia con l’utente; dopo si
separatamente dall’altra.
rivede per assicurare una manutenzione economica.
‰ Separazione per Prospettive. Ogni aspetto attiene alla Ö Separazione per Parti. Si risolvono separatamente la
prospettiva di un portatore di interessi realizzazione degli algoritmi; e quella della gestione dei dati
‰ Separazione per Parti. Ogni aspetto riguarda una parte persistenti.
del sistema.

DIB 11 DIB 12
Principi dell’Ingegneria del Principi dell’Ingegneria del
Software Software

Vantaggi Svantaggi
ÖI problemi da affrontare nello sviluppo di ÖSeparare gli aspetti potrebbe far perdere
un’applicazione software sono di diversi la ottimizzazione che potrebbe essere
tipi ed in diversi domini. Tutti richiedono generata da decisioni riguardanti aspetti
compromessi specifici. L’applicazione di differenti ma che sono correlate tra loro.
questo principio consente di analizzare, ‰ Per questo motivo quando due o più aspetti
uno per volta, i differenti aspetti di un hanno caratteristiche che li accomunano
grande problema, diminuendo così il conviene non separarli.
numero di decisioni da assumere
contemporaneamente.

DIB 13 DIB 14

Principi dell’Ingegneria del


Software

Concetti
Ö I Moduli sono parti del Sistema Software; ognuno realizza
una parte delle sue funzioni; tutti cooperano tra loro per
realizzare tutti gli scopi del Sistema Software.

Modularità Ö I moduli devono avere


‰ Alta coesione interna: misura la forza di che giustifica la
coesistenza logica degli elementi interni di un modulo (
istruzioni, procedure, metodi …)
‰ Basso accoppiamento tra loro : misura la densità ed il tipo di
interdipendenza tra moduli
Ö Un’applicazione si può costruire secondo due vie
‰ Si scompone il problema in moduli e successivamente si
dettaglia il progetto di ognuno di essi: approccio Top Down
‰ Si parte dai moduli in dettaglio e si compongono per ricavare
moduli sempre più grandi: approccio Bottom Up

DIB 16
Principi dell’Ingegneria del Principi dell’Ingegneria del
Software Software

Esempi… …Esempi

Programma ad alto
accoppiamento

Struttura fortemente Struttura con alta coesione e Stesso programma


accoppiata basso accoppiamento con l’accoppiamento
migliorato

DIB 17 DIB 18

Principi dell’Ingegneria del Principi dell’Ingegneria del


Software Software

Vantaggi Svantaggi
Ö Consentono di applicare la separazione degli ÖLa eccessiva divisone in moduli potrebbe
interessi: prima sono trattati gli scopi di ogni
modulo e le relazioni tra loro in modo dettagliato; far abbassare la comprensibilità del
dopo si analizzano i dettagli di ogni modulo, Sistema Software. In modo particolare
infine si verifica: la coerenza della loro quando le funzioni sono state divise tra
integrazione attraverso le relazioni e la
correttezza del sistema integrato rispetto agli molti moduli grazie alla Separazione degli
scopi complessivi del sistema. Interessi.
Ö I Moduli possono essere componenti già scritte ‰ Una funzione che ha bisogno di accedere a
che sono catalogate in una libreria e che sono molti dati potrebbe essere parcellizzata tra i
riusate nella costruzione del Sistema Software; moduli che realizzano le elaborazioni dei dati e
consentendo forti economie; moduli che accedono ai dati che i primi devono
Ö I moduli consentono di comprendere il sistema e elaborare.
di manutenerlo più agevolmente

DIB 19 DIB 20
Principi dell’Ingegneria del
Software

Concetti
ÖEstrarre ed analizzare gli aspetti più
generali di un problema trascurando i
Astrazione particolari dello stesso.
ÖI dettagli che si possono trascurare
dipendono dallo scopo dell’astrazione.

DIB 22

Principi dell’Ingegneria del Principi dell’Ingegneria del


Software Software

Esempi Vantaggi
ÖI linguaggi di programmazione sono Ö L’astrazione consente di presentare prospettive
diverse di uno stesso sistema software,
astrazioni dei dispositivi hardware dipendentemente dagli scopi della stessa
ÖLe applicazioni software sono astrazioni astrazione.
L’interfaccia utente mostra all’utilizzatore un’astrazione
delle procedure manuali che ‰
dell’applicazione costituita solo dai servizi che essa offre,
automatizzano. In un programma che senza dare alcuna informazione sulle componenti Hw e
Sw …; l’analisi esprime le capacità e le funzioni del
automatizza la fatturazione sono trascurati sistema senza dare i dettagli dell’architettura, dei moduli
i particolari su come è organizzato l’ufficio …
fatturazione, se ha due o più persone, se è Ö L’astrazione consente di tracciare manufatti che
descrivono lo stesso sistema con diversi livelli di
disposto su piani diversi dell’impresa, se è astrazione, ognuno comprensibile ad una classe
distribuito geograficamente … di parti interessate coinvolte nello sviluppo e
nell’uso dell’applicazione.

DIB 23 DIB 24
Principi dell’Ingegneria del
Software

Svantaggi
ÖUn’astrazione mal calibrata rispetto allo
scopo potrebbe dare una immagine
deformata dei contenuti di dettaglio. Anticipazione del Cambiamento
‰ Una interfaccia poco amichevole potrebbe far
avvertire una bassa qualità della struttura di
un sistema software.

DIB 25

Principi dell’Ingegneria del Principi dell’Ingegneria del


Software Software

Concetti Esempi
Ö Un programma per la gestione di un catalogo che:
‰ Deve comprendere quando i dispositivi di memorizzazione in linea
Ö Capacità di un’Applicazione di accogliere i cambiamenti hanno raggiunto un livello di riempimento di “guardia”
generati da qualsivoglia causa, con poco impegno, in poco ‰ Deve salvare un set di records dalle dispositivi di memorie in linea a
tempo e con un limitato rischio. dispositivi di memorie fuori linea
‰ Recuperare dai dispositivi fuori linea alcuni record richiesti che non
Ö I cambiamenti sono generati da: sono più in linea
‰ Miglioramento della comprensione del Dominio Applicativo Ö E’ opportuno che:
‰ Abbia il livello di guardia definito da differenti algoritmi; gli algoritmi
‰ Miglioramento della comprensione dei modelli utilizzati nello tengano conto delle capacità disponibili in ogni impianto utilizzatore
sviluppo del software ‰ Abbia diverse modalità per selezionare i record da salvare dalle
‰ Cambiamenti del Dominio Applicativo memorie on line a quelle off line; abbia la possibilità di produrre un
numero di copie di record salvati, opportunamente identificati; abbia la
‰ Cambiamenti delle tecnologie del Dominio delle Soluzioni. possibilità di spostare records da memorie off line più pregiate ad altre
Ö Questo principio è quello che differenzia considerevolmente meno pregiate, nel caso che l’utente ne abbia bisogno
‰ Abbia algoritmi differenti per attivare il recupero; inoltre abbia
lo sviluppo del software con la produzione di tutti gli altri algoritmi differenti per individuare il set di record da recuperare e
tipi di bene modalità differenti di trattare i record recuperati, dopo che saranno
utilizzati
‰ Per tutti gli algoritmi necessari si preveda un set nativi e sia possibile
inserire altri algoritmi come add-in

DIB 27 DIB 28
Principi dell’Ingegneria del Principi dell’Ingegneria del
Software Software

Vantaggi Svantaggi
Ö L’analisi e la progettazione deve essere tanto accurata
da prevedere, quanto più è possibile, i cambiamenti
ÖRiduce i tempi ed i costi per la futuri
manutenzione Ö Gli analisti devono avere approfondita conoscenza del
Dominio Applicativo per poter prevedere i cambiamenti
ÖAumenta la riusabilità delle componenti futuri in esso e nel mercato target dell’applicazione
Ö Il progetto deve avere la capacità di accogliere i
cambiamenti futuri previsti e deve curare
l’accoppiamento dei moduli; queste deve essere tanto
più piccola quanto più alto è il livello di predisposizione
al cambiamento
Ö Il management dell’applicazione deve essere attrezzata
con processi e tools della Gestione della Configurazione
Software

DIB 29 DIB 30

Principi dell’Ingegneria del


Software

Concetti
ÖCapacità di riformulare un problema
generale che comprenda uno o più
Generalità problemi analoghi che si devono risolvere.

DIB 32
Principi dell’Ingegneria del Principi dell’Ingegneria del
Software Software

Esempi Vantaggi
ÖStima dei consumi di uno strumento
dinamico sia Stima = 4,5 * E **( 3,5 ÖConsente di riusare i moduli che risolvono
*ESP). Le costanti sono state calcolate con il problema generale in differenti ambienti
dati derivati dall’uso di uno stesso motore senza modificare il codice
per lavori analoghi. Ö Consente di trovare prodotti di uso
ÖQuesto problema si può riformulare come generale (off the shelf) che possono
Stima = a * E ** (b*ESP) + k. Dove: essere inseriti nel sistema che si sta
‰ (a,b,k) sono costanti che descrivono il costruendo
contesto in cui è fatta la stima
‰ E, ESP sono le osservabili del sistema da
stimare

DIB 33 DIB 34

Principi dell’Ingegneria del


Software

Svantaggi

ÖMaggiori costi di sviluppo della soluzione


generale Incrementalità

DIB 35
Principi dell’Ingegneria del Principi dell’Ingegneria del
Software Software

Concetti Esempi
Ö Sviluppo graduale di un’applivazione : gli scopi ÖSi devono realizzare un sistema S con un
finali della stessa si raggiungono per incrementi set di funzioni {F1, F2, F3,… Fn}; il suo
successivi
Ö Si può procedere incrementalmente a tutti i livelli
sviluppo si divide in tre incrementi
di astrazione ‰ INCR1 = {F1, F2, F3,… Fk1}; S1= INCR1
‰ E’ possibile eseguire l’analisi di un sistema per ‰ INCR2 ={Fk1, Fk1+1, Fk1+2,… Fk2};
incrementi e seguire con la progettazione e codifica con
l’intero incremento S2= {S1∪ INCR2}
‰ E’ possibile dividere il sistema analizzato in incrementi e ‰ INCR3 ={Fk2, Fk2+1, Fk2+2,… Fn};
per ognuno di essi fare progettazione e codifica;
successivamente, integrare tutti gli incrementi realizzati S= {S2∪ INCR3}
‰ E’ possibile partire da un sistema interamente progettato
e realizzarlo per incrementi; dopo la realizzazione di tutti
i moduli questi sono integrati.

DIB 37 DIB 38

Principi dell’Ingegneria del Principi dell’Ingegneria del


Software Software

Vantaggi Svantaggi
ÖConsente di soddisfare più rapidamente le
esigenze più critiche ed urgenti dell’utente Ö Aumentano i rischi di integrazione:
ÖConsente di avere più frequentemente la nell’integrazione di un incremento al
sottosistema già sviluppato potrebbe
validazione del sistema dal committente e
evidenziarsi qualche relazione tra moduli delle
dall’utilizzatore due parti che non erano state evidenziate dal
ÖDiminuisce il rischio di sviluppare progetto
un’applicazione non rispondente ai Ö Aumenta il costo di test: dopo ogni incremento
requisiti è necessario fare il Test di Sistema e di
Accettazione del nuovo sottosistema realizzato.

DIB 39 DIB 40