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):

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