Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Software
Sommario
ÖApplicabilità dei principi
Principi dell’Ingegneria del ÖRigore e Formalità
ÖSeparazione degli Interessi
Software
ÖModularità
ÖAstrazione
ÖGeneralità
ÖIncerementalità
DIB 2
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
…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
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
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.
DIB 16
Principi dell’Ingegneria del Principi dell’Ingegneria del
Software Software
Esempi… …Esempi
Programma ad alto
accoppiamento
DIB 17 DIB 18
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
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
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
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
Svantaggi
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
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