Making sense of Open Source
Open Source quotes

“You can try to avoid open source, but it's probably easier to get out of the IT business altogether. By 2011, at least 80% of commercial software will contain significant amounts of open source code.”

Mark Driver, Gartner Group


Che cosa sono i Metodi Agili?

I metodi agili sono un insieme di metodi di sviluppo che condividono alcuni principi e valori fondamentali, descritti nell'Agile Manifesto. I metodi agili più diffusi sono Extreme Programming e Scrum. L'approccio di Sourcesense è basato su Extreme Programming (XP), con l'aggiunta di alcune pratiche prese a prestito da Scrum.

In poche parole, i metodi agili si propongono di sviluppare codice che abbia un alto valore per il cliente, che sia rilasciato presto e a ritmo continuo.

Un tipico team XP rilascia una prima versione, molto incompleta ma già dimostrabile, del software commissionato, già dopo un paio di settimane. In questo modo il cliente ha un immediato feedback sulla qualità del software consegnato, e può a sua volta fornire agli sviluppatori un prezioso feedback, per mantenerli focalizzati su quello che al cliente serve veramente. Se il team XP è bravo, riesce a mantenere un ritmo continuo di rilasci frequenti, tipicamente ogni due settimane ma anche più frequentemente a seconda dei casi.

Il rilascio di nuove funzionalità a ritmo costante ha delle importanti implicazioni:

  • Sviluppatori e clienti imparano insieme. Gli sviluppatori imparano il dominio applicativo del cliente, mentre il cliente, avendo a disposizione un prototipo, anche se incompleto, può capire meglio in che direzione lo sviluppo deve evolversi.
  • Il cliente ha il controllo della situazione. Ad ogni rilascio ha a disposizione un sistema di qualità finale, anche se non ancora dotato di tutte le funzionalità. Dopo ogni rilascio è possibile, con costi ragionevoli, rinegoziare quello che resta da fare, modificare le funzionalità sviluppate in precedenza, o addirittura decidere che il sistema così com'è è già sufficiente ed interrompere lo sviluppo.
  • Non c'è il tempo di fare una fase di design dettagliato. Altre pratiche ingegneristiche di XP permettono di sopperire a questa mancanza, in una maniera che in generale è molto più efficace e meno rischiosa del metodo "a cascata". Per evitare di ridurre il codice a una massa di spaghetti, gli sviluppatori applicano il design quotidianamente: il design emerge a piccoli passi. Così si evita l'errore opposto, di creare un'architettura ambiziosa, eccessiva e sovrabbondante: il design emergente è della taglia appropriata per il problema da risolvere.
  • Il progresso del team è aperto e visibile. Non ci nascondiamo dietro a ingannevoli "percentuali di completamento". Una feature è o completamente sviluppata, oppure no. Il progresso del team si misura sulle feature completamente sviluppate, che il cliente può personalmente verificare sul sistema corrente. Per saperne di più: sulla pianificazione agile.