Jazz è una piattaforma di collaborazione per team scalabile ed estendibile per l'integrazione delle attività durante il ciclo di vita del software.
Sviluppare software in un team è come suonare uno strumento in un gruppo. Tutti i musicisti devono eseguire la propria parte intonandosi e sincronizzandosi con gli altri. Insieme, devono concordare delle strategie di comunicazione e prestare attenzione ai segnali che si inviano reciprocamente per non compromettere l'esecuzione. Fattori imprescindibili per una buona esecuzione sono una solida collaborazione e capacità individuali. Analogamente, gli sviluppatori di software devono concentrarsi sulla creazione di codice di qualità e su un coordinamento delle attività che produca un risultato finale coerente basato sul lavoro di ciascuno.
Gli ambienti di sviluppo integrati (IDE) come Eclipse hanno dimostrato di essere strumenti efficaci per l'aumento della produttività individuale. Tuttavia, gli sviluppatori sono impegnati attivamente sia nel lavoro in team che nella scrittura di codice. È qui che la piattaforma Jazz può giocare un ruolo di primo piano, poiché cambia la prospettiva dalla produttività individuale a quella dell'intero team.
Si pensi al lavoro necessario a un team per individuare e correggere un ipotetico bug. Nella correzione di un bug è coinvolto l'intero team: Mike scopre e segnala il problema, Rick rivede i report dei bug in entrata e assegna il lavoro a Susan, Susan corregge il bug e, infine, il lavoro torna a Mike per la verifica. Anche la correzione segue il flusso del team: da Susan che corregge il problema nel flusso di codice a Mike che verifica la correzione nella build che la contiene.

Questi flussi possono rivelarsi fragili. I flussi all'interno del team si interrompono se una correzione viene sottoposta a check-in senza aggiornare il report dei bug o se non è disponibile alcun link per collegare la correzione a uno specifico flusso di codice e a una build. Queste interruzioni possono creare confusione all'interno del team impedendone l'avanzamento. A peggiorare le cose, un'interruzione potrebbe non essere immediatamente visibile a tutti i membri del team. Inoltre, esiste una sovrapposizione tra il lavoro correlato al dominio (ad esempio, scrivere codice per il proprio prodotto software) e il lavoro associato principalmente alla gestione del coordinamento nel team (ad esempio, contrassegnare i bug come corretti).
Sebbene l'IDE includa diversi strumenti, lo sviluppatore continua a eseguire manualmente diverse attività di pianificazione ripetitive, alcune necessarie per garantire una collaborazione efficace nel team, altre facili da dimenticare o da eseguire in modo non corretto. Sarebbe molto meglio se Susan potesse semplicemente comunicare all'IDE che sta attualmente lavorando alla correzione di uno specifico bug. Quindi, una volta completati la correzione e lo scenario di test, potrebbe segnalarlo al sistema. Senza ulteriori azioni da parte sua, il sistema eseguirebbe il commit dei file modificati, li assocerebbe al report dei bug, aggiornerebbe le note della build e contrassegnerebbe il report dei bug come chiuso. Se gli strumenti consentissero l'automazione della pianificazione come descritto in questa ipotesi, il lavoro del team risulterebbe più efficace poiché le importanti connessioni tra report dei bug e check-in del codice potrebbero essere considerate affidabili. Questo scenario offrirebbe anche vantaggi ai singoli membri del team grazie all'automazione di mansioni di pianificazione noiose e soggette a errore.
Jazz è una piattaforma di collaborazione per team per l'intero ciclo di vita del software, progettata per supportare l'integrazione delle attività in tutte le fasi del ciclo (il precedente scenario di esempio descrive alcune attività comuni nelle fasi centrali del ciclo di vita). La piattaforma Jazz è progettata per garantire l'estendibilità sia su client che server, nonché la scalabilità in installazioni che spaziano da team di piccole dimensioni alle grandi imprese. Incorpora la nozione di guida del processo supportata da strumenti che indica la capacità degli strumenti di comprendere il processo di sviluppo del team e di aiutare i suoi membri a seguire tale processo senza intralciarne il lavoro.
La piattaforma Jazz non è pensata solo per integrare gli strumenti esistenti, ma anche per fornire una piattaforma sulla quale creare funzioni per gli strumenti del ciclo di vita molto più integrate di quanto fosse prima possibile. Con un tale livello di integrazione degli strumenti di sviluppo durante tutto il ciclo di vita, si aprono scenari inimmaginabili con un semplice insieme di soluzioni unite alla rinfusa. Strumenti end-to-end integrati come questo possono aiutare i team a creare software in modo più efficace, rendendo più piacevoli le attività di sviluppo del software.
La piattaforma Jazz è progettata per consentire un supporto completo durante l'intero ciclo di vita dello sviluppo del software. Un thread eseguito in tutte le fasi di un progetto rappresenta il processo che i membri del team hanno concordato di seguire. Fornendo informazioni sul processo alla piattaforma Jazz, il team può ricevere supporto specifico per il processo. Questo supporto può essere fornito in diversi modi(tutti completamente aperti): dal controllo rapido delle regole all'offerta di una guida sul processo in linea (ad esempio, tasto F1) fino all'automazione della pianificazione. La piattaforma Jazz supporta il processo nei seguenti modi:
La piattaforma Jazz è progettata e creata per le seguenti operazioni:
Il ruolo principale della piattaforma Jazz consiste nel fornire programmi di utilità per la scrittura di strumenti con meccanismi da utilizzare e regole da seguire che consentano di sviluppare strumenti del ciclo di vita integrati. Tali meccanismi vengono esposti tramite interfacce API ben definite. La piattaforma Jazz offre anche blocchi di creazione e framework che semplificano lo sviluppo di nuovi strumenti.