Scroll Top
CUSTOM DEVELOPMENT
SVILUPPO SOFTWARE
Sviluppiamo con il metodo Agile le tue idee!
I bravi programmatori sanno cosa scrivere.

I migliori sanno cosa riscrivere.

Eric Steven Raymond – Precursore dell’Open Source
Come creiamo il vostro software
I principi su cui si basa una metodologia Agile sono
solo quattro:
  • le persone e le interazioni sono più importanti dei processi e degli strumenti (ossia le relazioni e la comunicazione tra gli attori di un progetto software sono la miglior risorsa del progetto);
  • è più importante avere software funzionante che documentazione (bisogna rilasciare nuove versioni del software ad intervalli frequenti, e bisogna mantenere il codice semplice e avanzato tecnicamente, riducendo la documentazione al minimo indispensabile, ma funzionale);
  • bisogna collaborare con i clienti oltre che rispettare il contratto (la collaborazione diretta offre risultati migliori del limitarsi ai soli rapporti contrattuali);
  • bisogna essere pronti a rispondere ai cambiamenti oltre che aderire alla pianificazione (quindi il team di sviluppo dovrebbe essere pronto, in ogni momento, a modificare le priorità di lavoro nel rispetto dell’obiettivo finale).

Se l’obiettivo delle metodologie agili è concentrarsi sulla programmazione senza dedicarsi alle attività collaterali, allora queste ultime possono essere eliminate o automatizzate.

La seconda soluzione è migliore perché si può, ad esempio, eliminare la documentazione aumentando il tempo dedicato al testing, ma non si possono eliminare entrambe; quindi si sceglie che strada si vuole percorrere e si fa in modo di utilizzare strumenti per automatizzare il maggior numero possibile di attività collaterali.

Il coinvolgimento del cliente è qui indicato singolarmente perché ci sono differenti gradi di coinvolgimento possibili.Ad esempio in Extreme Programming il coinvolgimento è totale, il cliente partecipa persino alle riunioni settimanali dei programmatori.

In altri casi, il cliente è coinvolto in una prima fase di progettazione e poi non più.

In altri ancora il cliente partecipa indirettamente e viene usato come tester della versione rilasciata.

Secondo Alistair Cockburn, probabilmente il primo teorico delle metodologie agili, questo è l’unico vero aspetto nodale che rende agile una metodologia.Per comunicazione stretta si intende la comunicazione interpersonale, fra tutti gli attori del progetto, cliente compreso. Ciò serve ad avere una buona analisi dei requisiti ed una proficua collaborazione fra programmatori anche in un ambito di quasi totale assenza di documentazione.

Effettuare rilasci frequenti di versioni intermedie del software permette di ottenere più risultati contemporaneamente.Si ricomincia l’iterazione avendo già a disposizione un blocco di codice funzionante in tutti i suoi aspetti, si offre al cliente “qualcosa con cui lavorare“.

Si usa il cliente come tester visto che sarà poi lui ad utilizzerà il software e riscontrerà eventuali anomalie. Si ottengono dal cliente informazioni più precise sui requisiti che probabilmente non sarebbe riuscito ad esprimere senza avere a disposizione utilità e carenze del progetto.

One-team culture. Fondamentale nel seguire approcci Agili è la collaborazione e l’approccio mentale pratico del team di sviluppo stesso.Il criterio di lavoro più adatto sarebbe quello di abbandonare la tradizionale blaming culture (che prevede la penalizzazione o la premiazione del singolo individuo che commetta un errore, oppure che si distinguesse dagli altri per meriti) orientandosi invece verso un modus operandi ‘di gruppo‘, in trasparenza ed onestà, che andrà a premiare (o viceversa) il gruppo stesso unicamente sulla base del raggiungimento degli obiettivi di team (previsti per quell’intervallo temporale);
Un’importante pratica attraverso la quale la soluzione da consegnare si evolve da quella che era soltanto “un’idea” (un concetto, una proposta, un insieme di esigenze) fino a divenire un prodotto di valore per il cliente.L’Iterative development funziona attraverso cicli di azioni/attività che non cambiano, ma che ripetendosi ciclicamente portano la soluzione ‘grezza’ a raffinarsi fino a diventare il prodotto finale.
La ristrutturazione di parti di codice mantenendone invariato l’aspetto e il comportamento esterno
Uno dei punti chiave delle metodologie leggere, direttamente mutuato dalla programmazione Object-Oriented, è la semplicità: semplicità nel codice, semplicità nella documentazione, semplicità nella progettazione, semplicità nella modellazione.I risultati così ottenuti sono una migliore leggibilità dell’intero progetto ed una conseguente facilitazione nelle fasi di correzione e modifica
Una tipologia di approccio al Testing da eseguire durante il nostro progetto, che prevede la scelta e definizione dei veri e propri test che dovranno essere superati dal prodotto (cioè dalla soluzione e dalle sue features) prima di andare a sviluppare la soluzione stessa.Il concetto, in poche parole, è molto semplice: si vuole evitare il rischio di andare a sviluppare qualcosa che poi non si riesce a testare.
Pratica fondamentale dei metodi Agile che consiste nel suddividere il progetto in intervalli temporali ben precisi, della durata di pochi giorni o settimane -ad esempio gli Sprint (SCRUM) o le Structured Timebox (AGILEPM)- entro i quali consegnare delle features, parallelamente ad intervalli temporali di durata superiore (settimane o mesi) chiamati Incrementi, alla fine dei quali avviene la vera e propria consegna della soluzione finale, o di una parte della stessa, utilizzabile effettivamente dal cliente (che ne trarrà il valore aspettato)
Una delle conseguenze dirette dell’iterazione nella produzione è la necessità di introdurre un modello, un metodo, uno strumento, per il controllo delle versioni del software prodotto e rilasciato.Uno degli strumenti più diffusi e maggiormente suggeriti per ottemperare automaticamente a questa pratica è un sistema basato sul protocollo Git.