PHP Lifecycle

di Gianni Tomasicchio - 10 aprile 2009

Una delle cose che ho imparato lavorando su progetti di dimensioni medio-grandi è l'importanza di una corretta pianificazione dell'intero ciclo di vita del software.

E' come quando si organizza un viaggio. Prima di partire bisogna individuare con precisione la meta, le tappe intermedie e i mezzi da utilizzare. Certo, se si fa una gita fuori porta non è necessaria tutta questa preparazione, ma se invece il viaggio è più lungo allora conviene rifletterci un po' su, prima di incamminarsi.

Allo stesso modo, la realizzazione di una applicazione PHP di una certa complessità richiede da un lato lo studio dei percorsi da intraprendere, dall'altro la scelta degli strumenti da utilizzare.

L'argomento è vastissimo e quindi, per adesso, mi limiterò ad elencare quali sono i punti essenziali da valutare e le scelte da effettuare prima di lanciarsi a capofitto nella realizzazione di una applicazione web con PHP.

Iniziamo dall'analisi dei requisiti. Quali sono i criteri e le tecniche che vogliamo utilizzare per definire esattamente cosa dobbiamo realizzare? Come gestiamo una variazione dei requisiti quando questa avviene a sviluppo avviato?

Definite le funzionalità della nostra applicazione, come effettuiamo la scelta delle tecnologie PHP da impiegare per realizzare l'applicativo? Quale framework e librerie utilizziamo?

Dall'analisi dei requisiti dobbiamo poi passare alla progettazione del software. Come procediamo? Secondo quali criteri definiamo l'architettura del software partendo dai requisiti precedentemente individuati?

Dobbiamo poi effettuare il setup delle macchine di sviluppo e di produzione. Come prepariamo i PC di sviluppo ed i server di produzione? Hosting, housing, server virtuale o server dedicato? Che "distribuzione" di PHP installiamo? Come dobbiamo scegliere l'IDE da usare? Quali sono le caratteristiche che non possono mancare?

Le questioni sistemistiche non finiscono qui. Lavorare in team sullo stesso codice pone parecchi problemi da risolvere. Su quale macchina conserveremo il codice? Dobbiamo utilizzare un gestore della configurazione (CVS, SVN, ecc.) , quale? Secondo quale politica? Come gestiamo i conflitti che si vengono a generare quando due sviluppatori lavorano sullo stesso script?

Anche per la stesura del codice è necessario fare delle scelte e definire degli standard (coding standard) in modo tale che diversi sviluppatori possano lavorare sullo stesso codice senza troppi problemi, potendo contare sul rispetto di alcuni canoni di programmazione e di stile. Data la liberta di programmazione che offre PHP, questo è senza dubbio un punto molto importante per evitare di ritrovarsi con tonnellate di spaghetti code.

Ma non è ancora finita. La stesura del codice non è il punto di arrivo. Bisogna infatti definire delle strategie di verifica e test del codice prodotto. Queste modalità (test unitari, test funzionali, test delle performance, ecc.) vanno individuate prima di iniziare a scrivere il codice poiché possono avere degli impatti anche sull'architettura del software e sulle abitudini degli sviluppatori.

Una volta che abbiamo completato lo  sviluppo del software, come gestiamo la manutenzione? Qual è l'iter da seguire per raccogliere le segnalazioni dei bachi da parte degli utenti (e dello stesso applicativo), la correzione ed il rilascio delle modifiche in produzione?

Nei prossimi post cercherò di riprendere ciascuno di questi punti per provare a dare delle indicazioni più precise sui diversi aspetti da considerare quando si devono prendere delle scelte che possono far risparmiare tempo e denaro oppure far naufragare l'intero progetto.

1 commento

1 cobra90nj cobra90nj venerd́ 10 aprile 2009, ore 23:58
Grazie Gianni per questo articolo, mi è tornato molto utile, spero che continui ad approfondire su questi punti.
Ciao...
Effettua l'accesso o registrati per inserire un commento