Il ragionamento: analisi e sintesi
Nell’affrontare un progetto complesso occorre andare oltre il significato
che è assunto, nell’ambiente informatico delle parole analisi e sintesi.
Infatti, in precedenza si è visto che sono diversi gli aspetti da capire e
conoscere: il dominio dell’applicazione, il problema, il dominio della
soluzione e la macchina.
Questo aspetto è risultato uno dei più critici per il progetto VAMP. Il
problema che il progetto deve affrontare è relativamente nuovo nel suo ambito.
Prima di arrivare alla progettazione anche solo di un prototipo, è stato
necessario un grosso lavoro per studiare il problema e capire che cosa
esattamente il sistema deve fare.
Analisi e sintesi
Spesso i problemi che i progettisti software devono affrontare sono
complessi; la capacità del progettista non sta tanto nell’avere una
conoscenza molto approfondita del campo dell’informatica (capacità
necessaria, ma non sufficiente), quanto nell’essere in grado di avere buone
capacità di analisi e di sintesi.
Sarebbe riduttivo pensare ai termini analisi e sintesi esclusivamente nel
contesto dello sviluppo del software. Ad esempio, prima di poter procedere con
l’analisi del sistema software è necessario capire a fondo il contesto
(dominio dell’applicazione) nel quale il software si troverà ad operare; solo
in questo modo saranno veramente chiari i problemi da affrontare e da risolvere
con il software.
L’analisi del problema è quindi il primo passo per il successo del
progetto. Ma che cosa significa esattamente analisi? Citando Bertrand Russel: “L’analisi
può essere definita come la scoperta dei costituenti di un dato complesso e del
modo in cui sono combinati. Il complesso deve essere un complesso con cui
abbiamo familiarità; l’analisi è completa
quando arriviamo ad avere familiarità con tutti i costituenti e con loro modo
di combinazione, e sappiamo che non ci sono altri costituenti e che quello è il
loro modo di combinazione. Possiamo distinguere tra l’analisi formale
– la scoperta del modo di combinazione – e l’analisi materiale – la scoperta dei costituenti (…). La sintesi
può essere definita come la scoperta di un complesso che consiste di dati
costituenti combinati in un dato modo. Ovviamente questo è possibile soltanto
quando c’è un complesso di questo tipo. Possiamo parlare di una sintesi-familiarità
quando arriviamo ad avere familiarità con il complesso risultante; ma quando
veniamo semplicemente a sapere che c’è un complesso di questo tipo parleremo
di sintesi descrittiva, o di sintesi proposizionale,
perché la nostra conoscenza verrà espressa naturalmente con una
proposizione”.
In sostanza, l’analisi è la scomposizione dell’oggetto dell’indagine
nei suoi elementi costitutivi ed esame sistematico di essi e dei rapporti che li
collegano, mentre la sintesi è l’operazione mentale mediante la quale si
risale da elementi particolari e molteplici a un concetto unitario: la sintesi
è dunque l’operazione inversa all’analisi, e consente di cogliere gli
elementi essenziali di una questione, di una realtà.
Analisi e design del software
Nel campo della progettazione del software, gli stessi termini sono usati in
modo più specifico con il seguente significato (riprendendo
anche i concetti di what e how):
- Analisi: lo studio di cosa
deve fare il sistema (punto di vista “funzionale”);
- Design:
lo studio di come il sistema deve
essere implementato (punto di vista “tecnico”).
La fase d’analisi consiste essenzialmente nel modellare il sistema reale,
mentre con il termine design
s’intende la sintesi di un sistema software, e quindi la modellazione dei suoi
costituenti (oggetti, componenti).
I concetti di analisi e design
tipici dei vari processi di sviluppo sono quindi una specializzazione dei
concetti di analisi e sintesi precedentemente introdotti. Allargando il campo
visivo, è tuttavia possibile individuare procedimenti di analisi e di sintesi
in varie fasi del processo di sviluppo del software.
E’ già stata ribadita l’importanza di comprendere a fondo il problema e
il suo dominio, e questo è un tipico procedimento di analisi. Da questa analisi
e dai rapporti con la committenza si ottiene l’SRS (Software
Requirement Specification), che è un documento generato da un processo di
sintesi: esso infatti nasce dall’aggregazione di richieste utente (spesso
incomplete e confuse) di varia provenienza e con diverse caratteristiche,
riviste, interpretate e soprattutto organizzate dal progettista software anche
in base alla conoscenza acquisita su problema e relativo dominio.
L’SRS è il punto di partenza per lo sviluppo
del software. Terminata questa fase, ne iniziano diverse di sintesi, il cui
risultato finale sarà la macchina: è possibile effettuare il design di massima
e quello di dettaglio, e quindi la codifica.
© 2001 Andrea Bulgarelli
|