Skip to main content
marcozanon.com

Analisi preliminare nello sviluppo di un software

Creazione: | Aggiornamento:

Premessa

Ogni colloquio con un potenziale cliente che mi ha appena proposto la creazione di un nuovo software termina con una (giusta) richiesta di conoscere le tempistiche e soprattutto i costi di sviluppo.
A questo punto, salvo casi di progetti molto molto semplici, faccio sempre presente la necessità di effettuare un'analisi preliminare, magari semplificata, prima di poter rispondere a queste domande.

Poiché però questa mia affermazione genera spesso dubbi o, peggio, malumori nel mio interlocutore, ritengo utile chiarire bene di cosa si tratta e perché la ritengo imprescindibile.

Definizioni

Quando utilizzo il termine analisi intendo quella fase del lavoro che è assolutamente fondamentale a favore di entrambe le parti e della buona riuscita del prodotto, in quanto consiste nel tradurre le richieste del cliente in dettagli molto più tecnici; "quanto" tecnici, dipende dal tipo di applicazione da sviluppare ma soprattutto dalla situazione.

Il compito dell'analista (figura professionale specifica) è esattamente questo: partecipare alle riunioni con il cliente e poi, tornato in ufficio, dedicare alcune/molte giornate per tradurre il tutto in direttive tecniche da passare poi ai programmatori. Non è infrequente che costui impieghi anche una settimana o più, se deve scendere ad un livello di dettaglio molto spinto per consentire al singolo programmatore di scrivere codice corretto e che si interfacci con quello scritto dagli altri.

Per quanto mi riguarda non vi è solitamente bisogno di tutto questo dettaglio.
Ciò però non toglie che sia comunque necessario chiarire alcuni aspetti tecnici non solo prima di iniziare a scrivere il software, ma anche prima di poter stilare un preventivo che possa definirsi ragionevolmente "centrato" sul lavoro da svolgere.
Devo capire e decidere - a puro titolo di esempio - con quale linguaggio scrivere il software, con quali librerie grafiche e framework sottostanti, come suddividere le aree di lavoro, come strutturare i dati nel database, ecc.; fatto questo, devo "immaginarmi" le fasi dello sviluppo cercando di capire in anticipo dove potrebbero manifestarsi problemi o incongruenze per poi riparlarne con il cliente, oppure cercando di capire se gli strumenti scelti sono incompatibili con qualche richiesta (il che può richiedere parecchio tempo speso in ricerche online).
Il tutto poi va tradotto in una mini-relazione, che peraltro viene allegata al preventivo e ne forma parte integrante.

"Questo lavoro ha un costo?"

Risposta breve: certamente sì, perché trattasi di un servizio professionale che, anche nella sua forma semplificata, richiede comunque almeno una giornata di tempo e che peraltro viene svolto specificamente a favore di un cliente (non può cioè essere "rivenduto" ad altri né inquadrato come una sorta di "formazione / aggiornamento" personale che possa essere speso in altre situazioni).
Io ritengo dunque che tutto questo non debba essere a costo zero, esattamente come d'altronde avviene nelle altre professioni (e francamente non riesco a capire perché ciò che si dà per scontato per, ad esempio, un dentista debba invece sembrare "fuori norma" per un informatico).

Conclusioni

L'analisi è quel processo - fondamentale per la buona riuscita di un software - che, magari in forma semplificata, consente di tradurre in modo più tecnico le richieste del cliente, di pervenire ad un preventivo attendibile, di procedere correttamente con la realizzazione del prodotto e conseguentemente di evitare contestazioni tra le parti una volta avviato il progetto.