Aggiunta di un tipo di Work Item in VSTS

Precedenti post sulla personalizzazione Work Item in TFS

1 – Tfs e customizzazione del process template
2 – Customizzare il Process Template, le basi
3 – Customizzare il process Template, aggiungere un campo ad un Work Item
4 – Customizzare il process template, regole per i campi aggiuntivi dei WI
5 – Personalizzare i Work Item di TFS, ancora qualche regola interessante
6 – Stati e transizioni
7 – Approfondiamo stati e transizioni

Post su personalizzazione VSTS

1 – Personalizzare il process template in VSTS
2 – Process template Ereditati in VSTS
3 – Aggiungere ad un Work Item un campo esistente in un altro template
4 – Creazione di un campo custom
5 – Modificare gli stati di un Work Item

Sicuramente la personalizzazione più interessante che può essere fatta su un Process Template è aggiungere un nuovo tipo di Work Item. In ogni team infatti esiste la necessità di tracciare informazioni concettualmente non mappabili su uno dei tipi di Work Item Tradizionali. Ad esempio potreste voler tracciare le sessioni di Event Storming da fare con il cliente e poterle schedulare. In questo caso un normale PBI nel process template SCRUM potrebbe fare al caso vostro, ma sicuramente avere un Work Item personalizzato permette di tracciare l’informazione in maniera più corretta. Per chi fa SCRUM infatti può essere interessante creare un Work Item Type per ogni tipologia di attività che sia pianificabile nello sprint.

Come possibile esempio mostrerò una personalizzazione fatta sul process template dell’account VSTS di GetLatestVersion, creata per per supportare un processo particolare, la pubblicazione di video-pillole sull’argomento ALM.

Di base con il processo SCRUM , sarebbe possibile utilizzare i PBI per rappresentare i Video che vogliamo realizzare ed utilizzare le features per categorizzare i video, ma è in qualche modo una forzatura. Sicuramente il poter creare dei Work Item personalizzati permettono di rappresentare in maniera più personalizzata e corretta queste iniziativa.

Navigando nella sezione dei Work Item Types nella pagina di personalizzazione del Process Template, si può notare il link che permette la creazione di un nuovo Work Item Type.

image

Per cominciare inizio creando un Work Item chiamato Video Pill, che deve rappresentare un video di massimo 7 minuti che focalizzerà l’attenzione su un punto ben preciso. Come si può vedere dalla figura sottostante è sufficiente dare un nome, una descrizione ed un colore ed il nuovo Work Item è creato.

image 

Alla pressione del bottone “Create” viene creato il nuovo Work Item che appare immediatamente nella lista a sinistra.

image

A questo punto la prima modifica che solitamente viene effettuata è quella di decidere se e dove questo nuovo Work Item apparirà nei backlog, ovvero nella pianificazione agile (Portfolio Management).

image

Di base si deve quindi decidere a che livello del backlog verrà visualizzato il nostro Work Item Type, oppure decidere di non farlo apparire per nulla. Nel caso della pillola video si è deciso per il livello del PBI, ovvero, banalmente, una User Story. In questo modo è possibile dare una “categoria” all’informazione. Tutti i Work Item a livello Task sono attività dello sprint / iterazione figlie di un elemento del backlog, mentre i livelli superiori (features ed epics) sono contenitori più generali per gestire il Portfolio Management.

Per quanto riguarda le opzioni di Overview è possibile modificare la descrizione, sia distruggere il tipo di Work Item, opzione che non è chiaramente possibile per i Work Item base del processo. Anche in questo caso si può vedere come il sistema previene operazioni (come la cancellazione di tipi già presenti) che possono andare ad inficiare un eventuale aggiornamento del Process Template.

image

Ricordate che cancellare un Work Item Type custom provocherà la cancellazione di tutti i Work Item creati sulla base di quel tipo, cosi come tutti i dati storici, ed è quindi una operazione che deve essere ponderata con molta attenzione.

Dopo avere selezionato la posizione del Backlog è consigliabile andare ad editare gli stati disponibili, in questo caso si è scelto di utilizzare gli stessi stati del PBI. Questo non è strettamente necessario, ma dato che il nuovo tipo di Work Item condivide lo stesso livello di Backlog, il processo sarà molto più chiaro se la nostra Video Pill contiene gli stessi stati dei Work Item Type che sono presenti allo stesso livello.

image

Anche in questo caso è interessante vedere le differenze che vi sono tra i menù contestuali presenti nella lista di stati di un PBI (1) e quelli presenti nella lista di stati del nostro nuovo Work Item (2).

image

Mentre per il PBI le uniche opzioni che possiamo avere per gli stati base sono View e Hide, nel nostro nuovo Work Item tutti gli stati possono essere sia Editati che Rimossi. Mentre, come visto nell’articolo precedente, non è possibile rimuovere uno stato per uno dei Work Item base, per quelli personalizzati non esiste nessuna limitazione e si possono aggiungere e rimuovere tutti gli stati che si preferisce.

A questo punto non rimane altro da fare che andare a inserire nel Work Item Type i campi desiderati e modificare il layout in modo che sia aderente alle nostre necessità.

Anche in questo caso si può notare come con veramente pochi click sia stato possibile andare ad aggiungere una nuova tipologia di informazione nel nostro account VSTS, adattandolo alle specifiche esigenze del team e senza il rischio di complicare le procedure di update.

Gian Maria.

WorkItems History: la mia prima estensione per VSTS e TFS

Sono davvero felice ed orgoglioso di condividere la prima versione della mia primissima Estensione per Visual Studio Team Services e Team Foundation Server: WorkItems History.
Cos’è
WorkItems History è un’estensione che aggiunge un hub “History” alla sezione Work di VSTS/TFS e permette di visualizzare la cronologia dei work item modificati e/o aggiunti al backlog del progetto.
Perchè
Lavorare in team non è sempre una cos semplice, specialmente quando c’è bisogno di tenere tutte le cose “sotto controllo”. Con questa estensione, possiamo avere un po’ più di controllo almeno su quello che sta accadendo al nostro lavoro.
Altre info
Ho deciso di rilasciare questa estensione come Software Open Source.
Potete dare un’occhiata alla sua pagina di (https://github.com/n3wt0n/WorkItemsHistory) e, se volete, potete contribuire attivamente al progetto. Fate riferimento alle Contribution guidelines ed al Code of Conduct per maggiori dettagli a riguardo.
Utilizzo, supporto e Feedback
Questa estensione è pubblicamente disponibile attraverso il VS Marketplace, a questo link: https://marketplace.visualstudio.com/items?itemName=DB.WorkItemsHistory
Potete trovare  ulteriori informazioni sull’utilizzo e l’installazione di WorkItems History sul repo GitHub.

Nel caso in cui doveste trovare un bug o un comportamento inaspettato dell’estensione, fatemelo sapere attraverso la pagina Issues su GitHub e cercherò di risolverlo prima possibile!
Attendo i vostri feedback :)

AgileIoT, The Funnel

AgileIoT è prima di tutto una filosofia, basata sull’agile manifesto, che si trasforma in un approccio pratico attraverso i relativi principi, pratiche e metodologie.

Questa impostazione si concretizza nell’AgileIoT Funnel che ne descrive in modo sintetico gli aspetti portanti evidenziando gli Ambiti relativi e i diversi Elementi caratterizzanti:

agileiot funnel

 Troviamo quindi:

  • Filosofia, pensata per visualizzare una visione condivisa;
    • La Bottega Rinascimentale, la cellula in cui veniva fatto quanto necessario alla realizzazione di una nuova opera: dalla progettazione alla commercializzazione, passando per la formazione e la produzione. I membri del team sono spinti a comportarsi come gli artigiani rinascimentali.
  • Principi, pensati per ispirare le azioni delle persone:
    • Non si tratta di software, hardware o servizi: è l’insieme che va realizzato bene!
    • Pensare meno e agire prima!
    • Semplice è meglio!
    • Se non puoi ricordarlo, non puoi migliorarlo!
  • Pratiche, pensate per guidare le azioni delle persone:
    • Fast Prototyping;
    • Make-Measure-Learn;
    • Flashback;
    • Continuous Improvement;
    • Continuous Integration.
  • Metodologie, pensate per adattare il tutto a differenti contesti:
    • Duttile Framework;
    • Fiotto;
    • … il vostro approccio!

Grazie al Funnel è quindi possibile approfondire la struttura a supporto dell’adozione di Agile nel mondo dell’IoT e decidere come e cosa utlizzare in funzione dello specifico contesto.

 

Stay tuned J

Dati e Novità da Connect(); 2016

Mercoledì 16 novembre 2016, Microsoft ha dimostrato all’evento Connect(); 2016 la sua vision sul futuro dello sviluppo software con soluzione che sono indirizzate and ogni sviluppatore, ogni tipo di applicazione ed ogni piattaforma.
Gli speaker hanno anche condiviso diversi dati piuttosto interessanti riguardo l’adozione di prodotti e servizi:
  • Più di 20 milioni di installazioni di Visual Studio 2015 (con la Community edition gratuita che rappresenta oltre 14 milioni sul totale)
  • 1 milione di utenti mensili attivi (MAU, monthly active users) su Visual Studio Code.
  • 4.6 milioni di utenti registrati su Visual Studio Team Services
  • Più di 25.000 sviluppatori di 1.700 aziende diverse hanno contribuito al .NET Core e altri repository open source relativi, con quasi il 2/3 dei contributi che sono esterni a Microsoft.
  • 1 milione di membri Visual Studio Dev Essentials
  • Gli utenti Xamarin sono aumentati di circa mezzo milione dall’acquisizione, segnando un incremento del 3x rispetto al tasso di crescita precedente
  • 20.000 registrazioni per la preview privata di SQL Server on Linux, di cui più del 50% sono Fortune 500
  • 1.6 milioni di account Azure SQL Databases con più di 100 miliardi di query al giorno
  • Più di 120.000 nuove sottoscrizioni Azure al mese
  • Approssimativamente 1 VM Azure ogni 3 è Linux
  • L’utilizzo di Microsoft Graph è cresciuto del 35% mese su mese nello scorso anno
  • 47.000 third party applications basate su Microsoft Graph e più di 1 miliardo di transazioni API
  • Più di 400 milioni di dispositivi hanno installato Windows 10
Brian Harry ha scritto un blog post molto interessante (è leggibile qui) con tutti gli annunci relativi alle novità di TFS e VSTS. Dateci un’occhiata!

Modificare gli stati di un Work Item

Precedenti post sulla personalizzazione Work Item in TFS

1 – Tfs e customizzazione del process template
2 – Customizzare il Process Template, le basi
3 – Customizzare il process Template, aggiungere un campo ad un Work Item
4 – Customizzare il process template, regole per i campi aggiuntivi dei WI
5 – Personalizzare i Work Item di TFS, ancora qualche regola interessante
6 – Stati e transizioni
7 – Approfondiamo stati e transizioni

Post su personalizzazione VSTS

1 – Personalizzare il process template in VSTS
2 – Process template Ereditati in VSTS
3 – Aggiungere ad un Work Item un campo esistente in un altro template
4 – Creare un campo Custom

Per chi ha personalizzato il Workflow di un Work Item, sicuramente la possibilità di personalizzazione degli stati dei Work Item offerta attualmente da VSTS sembrerà alquanto primitiva. La personalizzazione offerta da VSTS infatti non permette ancora di definire un vero e proprio Worklfow, come invece è possibile fare personalizzando il template di TFS, ma permette solamente di gestire l’anagrafica degli stati.

Nella figura sottostante si può infatti vedere la parte di personalizzazione degli stati (1) di un Work Item (PBI), in cui è possibile aggiungere nuovi stati (2) oppure editare gli stati presenti (3).

image

Come si può vedere dalla figura, gli stati del Work Item sono raggruppati in aree, chiamate: Proposed, In Progress, Completed e Removed. Questi valori rappresentano una sorta di “macro categorie” per gli stati. La regola è che deve esistere almeno uno stato valido per ogni macro categoria. Questo garantisce al motore di poter sempre “ragionare” sulle “macro categorie” per generare le board di default e per tutti i comportamenti di default.

Le limitazioni di personalizzazione ed il concetto di Macro Categorie permette di rendere indolore l’aggiornamento, evitando che l’utente possa andare a modificare qualsiasi aspetto del Workflow. Si paga quindi la limitazione, ma si ottiene di contro un aggiornamento senza sorprese.

Per tutti gli stati già presenti, l’unica opzione possibile è quella di “nasconderli”, con l’opzione hide. Questo significa che lo stato è sempre presente nel template (garantendo quindi la compatibilità degli upgrade), ma non è più possibile associare questo stato ad un Work Item. Tutti i Work Item associati ad uno stato che è messo in Hide sono considerati in uno stato invalido.

image

 

In questo caso nella figura precedente è stato mostrato lo stato Approved messo in “hide”. A questo punto aprendo un Work Item in quello stato la UI forza a cambiarne il valore.

image

Come regola non è possibile mettere in hide tutti gli stati di una “Macro Categoria”, questo garantisce al motore di VSTS che ogni Work Item ha uno stato che al 100% appartiene ad una delle Macro Categorie.

La tecnica di mettere uno stato in Hide, previene una delle personalizzazioni che maggiormente rendono complicati gli upgrade, la rimozione di uno degli stati base.

Si può naturalmente creare un nuovo stato e le uniche opzioni che possono essere configurate sono: il nome, la Macro Categoria ed il colore.

image

A differenza degli stati base, gli stati nuovi aggiunti dall’utente possono essere rimossi. L’effetto è simile a quello che si ha con l’hide degli stati di default. In questo caso però lo stato verrà rimosso completamente dalla lista e potrà chiaramente essere riaggiunto in seguito. Anche se lo stato viene rimosso i valori storici rimarranno, per cui nella storia dei vari Work Item le transizioni da e per quello stato saranno sempre presenti nella storia. Tutti i Work Item che si trovano attualmente in uno stato rimosso sono  in uno stato non valido e debbono essere corretti prima di poter essere salvati nuovamente. (analogamente a quanto succede con l’Hide)

Purtroppo in questa prima versione la personalizzazione si ferma qui e non si  hanno altre opzioni. Di base la mancanza maggiore che si ha rispetto alla personalizzazione completa è l’impossibilità di definire un vero workflow, stabilendo le transazioni tra gli stati. Questo impedisce anche di poter mettere security tra la transazione degli stati, e di fatto è quindi possibile muoversi da qualsiasi stato in qualsiasi altro stato di destinazione.

Sebbene questa personalizzazione sia limitata, permette comunque di poter aggiungere stati e garantire di adeguare la nomenclatura del flusso al proprio processo.

Una volta terminata la personalizzazione degli stati, è necessario aggiornare la configurazione nella Kanban Board. Ad esempio avendo messo in Hide lo stato Approved per il PBI la configurazione di default lamenta questo errore:

image

In questo caso la colonna “Approved” non è più valida perché referenzia lo stato “Approved” del Work Item Type PBI, che invece è stato messo in uno stato Hide.

E’ sufficiente specificare un nuovo stato valido per tutte le colonne della Kanban Board per risolvere l’errore. Ad esempio potremmo voler tracciare il fatto che sia i Bug che i PBI hanno una fase di Valutazione, che concettualmente appartiene alla categoria “In Progress” perché implica che alcune risorse sono al lavoro su di essi. In questo caso è stata aggiunta la colonna “Evaluating” che cataloga i bug in Triage ed i PBI in fase di Analisi.

image

In questo caso la colonna di Evaluating ha un significato differente per Bug e PBI, nel primo caso si sta facendo Triage, mentre nel secondo caso si sta analizzando il PBI, magari producendo gli Storyboard.

Anche in questo caso, sebbene con le dovute limitazioni, è possibile con pochi click adattare il Processo di VSTS al proprio modo di lavorare e non viceversa.

Gian Maria

AgileIoT, IoT Production Dilemma

La creazione di una soluzione IoT pensata per il mercato richiede un mix di validazioni di diversa natura, al fine di comprovarne la sostenibilità e ridurre sensibilmente i rischi annessi alla sua realizzazione.

In particolare, una delle scelte cruciali è quella di decidere se sia possibile andare in delivery con uno dei classici EVK (Evaluation Kit, Arduino, RaspberryPI, BeagleBone, ecc…), facilmente reperibili sul mercato e che consento di realizzare velocemente un prototipo dell’idea di base, oppure se sia necessario ricorrere alla produzione di Smart Thing specifici.

Tendenzialmente, una soluzione di mercato deve essere realizzata tenendo conto del giusto bilanciamento delle caratteristiche di riferimento, cosa che, il più delle volte, rende necessaria una progettazione e realizzazione ad-hoc (Manufacturing Smart Thing). Possono esistere, altresì, dei casi particolari in cui la strada di utilizzare un EVK anche in delivery diventa praticabile:

agileiot production dilemma1

EVK vs Manufacturing Smart Thing

Se è necessario realizzare uno Smart Thing specifico, diventa fondamentale organizzarsi per gestire il relativo processo di progettazione e realizzazione: dalla fase di concept a quella finale che porta al dispiegamento del tutto nell’ambiente di funzionamento previsto.

Utilizzando AgileIoT è possibile associare alle diverse fasi di un processo di sviluppo IoT, Prototyping/Engineering/Workout, le diverse azioni inerenti l’aspetto manifatturiero della soluzione.

agileiot production dilemma2

 Smart Thing Manufactoring phases

Se, inoltre, si Identificano in modo esplicito le diverse milestone è possibile configurare lo Smart Thing production lifecycle, legato ancora una volta alle tre fasi specifiche dell’AgileIoT Framework:

agileiot production dilemma3

Smart Thing production lifecycle

Grazie all’impostazione Goal Driven di AgileIoT è possibile associare alle diverse fasi una serie di task specifici da completare in funzione di quanto appena evidenziato:

  • Prototyping Phase
    • Creare il prototipo utilizzando un EVK, una breadboard e quanto necessario.
  • Engineering Phase
    • Progettare lo Smart Thing grazie agli EVK;
    • Progettare la Printed Circuit Board (PCB) tramite soluzioni CAD [es. Eagle];
    • Definire il Prototype-BOM;
    • Individuare il manufacturing team e far realizzare i primi prototipi;
    • Validare e Testare i prototipi, adattare il firmare e definire la BOM finale
    • Definire il package e i supporti di Delivery
    • Ordinare la produzione del numero necessario di Smart Thing
  • Workout Phase
    • Effettuare il deployment dello Smart Thing e delle soluzioni Cloud annesse

Considerando che quasi sempre la realizzazione fisica del componente avviene ad opera di un team terzo, sia esso esterno o appartenente alla stessa azienda, è interessante andare ad evidenziare quelle che sono le responsabilità del Product Owner (amministrative) e del Prime Maker (operative):

  • Prototyping Phase
    • Trovare un partener per la [progettazione] realizzazione manifatturiera;
    • Identificare gli early adopter.
  • Engineering Phase
    • Recepire il Prototype BOM e avviare le azioni di outsourcing con il partner manifatturiero;
    • Monitorare lo stato di avanzamento della produzione;
    • Gestire l’approvvigionamento dei prototipi;
    • Supportare le attività di test ed integrazione;
    • Recepire il BOM finale e avviare le azioni di outsourcing per la produzione di massa.
  • Workout Phase
    • Supportare le azioni e strategie di Delivery.

 

È sempre più evidente il motivo per il quale la creazione di una soluzione IoT richieda un approccio estremamente disciplinato e un’overview generale di tipo strategico e operativa.

 

Vi ricordo che potete trovare tutte le informazioni su AgileIoT.org

 

Stay tuned J

 

 

GetLatestVersion è lieta di annunciarvi AMA = Ask Me Anything.

 

Dopo il successo di DevOpsHeroes vi invitiamo ad una sessione AMA con lo staff di GetLatestVersion.it.

Una AMA (Ask Me Anything) e’ una sessione aperta di un’ora dove si possono proporre domande su qualunque tema allo staff di GetLatestVersion.it (nel nostro caso relative a DevOps), senza una scaletta od una impostazione predefinita, e le risposte possono essere anche supportate da demo immediate o approfondimenti provenienti da esperienze reali.

L’AMA si terrà Venerdi 11 Novembre, dalle 18:30 alle 19:30.

L’evento sarà hostato tramite Live Meeting, raggiungibile a questo indirizzo: https://www.livemeeting.com/cc/mvp/join?id=P9G329&role=attend&pw=S%24-ZK*H2c

Vi aspettiamo.

Gian Maria e lo staff di GetLatestVersion.

Edit: Ho corretto l’orario, ho erroneamente messo le date in GMT, per cui l’orario ufficiale è dalle 18:30 alle 19:30

Personalizzare il process template in VSTS – Creare un campo Custom

Precedenti post sulla personalizzazione Work Item in TFS

1 – Tfs e customizzazione del process template
2 – Customizzare il Process Template, le basi
3 – Customizzare il process Template, aggiungere un campo ad un Work Item
4 – Customizzare il process template, regole per i campi aggiuntivi dei WI
5 – Personalizzare i Work Item di TFS, ancora qualche regola interessante
6 – Stati e transizioni
7 – Approfondiamo stati e transizioni

Post su personalizzazione VSTS

1 – Personalizzare il process template in VSTS
2 – Process template Ereditati in VSTS
3 – Aggiungere ad un Work Item un campo esistente in un altro template

Nel precedente articolo è stata descritta la procedura per aggiungere ad un Work Item Type un campo già esistente in VSTS. In questo post vedremo invece come aggiungere un campo completamente nuovo, che non è quindi pre-esistente in VSTS. La procedura seguita è molto simile alla precedente, è sufficiente infatti andare nel layout del tipo di Work Item che si vuole modificare ed aggiungere un nuovo Field nella posizione desiderata.

A questo punto invece di usare un campo esistente è sufficiente scegliere di creare un nuovo tipo di campo scegliendo come primo passo la tipologia di dato che si vuole utilizzare.

image

Come si può oservare, è possibile scegliere tra vari tipi di dato: si parte dai tipi testuali (singola linea e multipla) poi vi sono i classici tipi Data, boolean, numerici ed anche la possibilità di utilizzare Picklist. A differenza della personalizzazione effettuabile on-premise, non è possibile utilizzare tutto il set di regole di TFS (ad esempio ALLOWEDVALUES), ma si è limitati da ciò che l’interfaccia utente offre. La flessibilità è comunque sufficiente per la maggior parte delle personalizzazioni più comuni e le limitazioni, come già detto in precedenza, garantiscono che la personalizzazione rimanga nei “binari” predeterminati, cosi da non avere problemi al momento di eventuali aggiornamenti.

Supponiamo ad esempio di volere inserire un campo booleano nel bug per indicare se il bug è stato segnalato direttamente dal cliente oppure se è stato trovato da un team di test interno. In questo caso è sufficiente specificare il nome del campo, una descrizione e specificare boolean come tipo.

image

Una volta aggiunto il nuovo campo, quest’ultimo è subito visibile editando o creando un nuovo bug e si può immediatamente utilizzarlo.

image

L’interfaccia utente viene generata dinamicamente sulla base del tipo di campo in modo da aiutare l’utente nella compilazione. Se ad esempio il campo è di tipo booleano come nel nostro esempio, viene utilizzata una checkbox, se si utilizza un campo text il controllo sarà una normale textbox e cosi via.

Grazie alle PickList è supportata la scelta multipla, si può ad esempio aggiungere un campo Reproducibility che indica la riproducibilità del bug.

image

In questo caso nel tab Options è possibile specificare se il campo è o meno obbligatorio, e si può specificare anche il valore iniziale di default se necessario.

image

Nell’interfaccia utente il nuovo campo verrà rappresentato con una ComboBox con all’interno i campi specificati nel template. Questo tipo di campo è spesso il più richiesto come personalizzazione, perché è uso comune nei vari team di andare a dettagliare i Work Item con delle informazioni specifiche del proprio processo. Sebbene l’uso dei Tag possa in molti casi sopperire a molte delle richieste, avere la possibilità di inserire campi specifici a scelta multipla è una funzionalità tra le più utili.

image

Purtroppo a differenza delle personalizzazioni che possono essere effettuate on-premise non esiste un concetto analogo alla GLOBAL LIST e quindi se abbiamo più tipologie di campi è necessario mantenere tutte le varie picking list manualmente.

In caso di rimozione di uno dei valori della picking list, i Work Items che hanno impostato il valore rimosso sono ancora validi, ma la prima volta che verranno editati verrà forzato il cambiamento ad uno dei valori ammessi. Ad esempio togliendo il valore Sometimes ed aggiungendo il valore Unknown, se apriamo un Work Item che ha il valore Sometimes impostato per il campo, quest’ultimo verrà marcato in giallo, perché fallisce la validazione ed è necessario quindi cambiarlo.

Non esiste per ora la possibilità (come invece esiste per la versione on-premise) di permettere il mantenimento del valore anche se non più presente nella lista dei valori ammessi.

image

Il nuovo campo può in ogni momento essere cancellato dalla definizione, questo non cancella fisicamente i dati dal Database, ma semplicemente impedisce di visualizzarne il valore nell’interfaccia utente. Questo è infatti il messaggio di warning che viene dato quando si rimuove un campo custom dall’interfaccia utente.

image

La riprova che i dati siano ancora effettivamente nel database si ha accedendo al Work Item tramite le API. Se infatti si rimuove il campo Reproducibility dal tipo Bug e poi si recupera un work item di tipo Bug con le REST API si può notare che il valore del campo è ancora li.

image

Naturalmente è possibile volere rimuovere completamente il nuovo campo, cancellando anche tutti i dati in tutti i work item in cui il campo era stato valorizzato. Per fare questo è necessario prima rimuoverlo precedentemente da tutti i layout di interfaccia e successivamente disassociarlo anche dai Work Item che lo hanno collegato.

SNAGHTML246c2a5

Come si può vedere dalla figura precedente è necessario selezionare il tab dei tipi di Work Item, selezionare la visualizzazione dei Field ed infine localizzare il campo che si vuole rimuovere e scegliere la voce di menù “Remove” dal menù contestuale. Anche in questo caso il sistema avverte che in realtà nessun dato è viene realmente rimosso, e si può aggiungere nuovamente lo stesso campo e ritrovare cosi tutti i dati in tutti i Work Item che avevano popolato quel campo. Sempre con le REST API potete verificare che il valore del campo è ancora presente in tutti i Work Item preesistenti anche dopo averlo rimosso dal tipo.

Una volta che il campo non è più referenziato da nessun tipo di Work Item è possibile andare nel tab di gestione globale dei campi, selezionare il campo custom e distruggerlo definitivamente.

image

Come si può vedere dalla figura precedente, il campo Reproducibility non ha l’icona a sinistra che indica un campo ereditato dal template padre, per cui può essere rimosso definitivamente con il comando Destroy.

Questa volta il sistema avverte che l’operazione non è reversibile e che anche tutti i dati storici verranno cancellati.

image

Naturalmente tutti i campi custom creati possono essere utilizzati nelle query di TFS senza problema alcuno, ecco ad esempio come definire una query che ci estrae tutti i bug segnalati dal cliente che sono ancora aperti.

image

I campi custom possono anche essere utilizzati nella definizione degli alert, si può ad esempio volere un alert ogni volta che un nuovo bug segnalato dal cliente è stato inserito nel sistema.

Da questo semplice articolo si può apprezzare come aggiungere un campo ad un tipo di Work Item sia una operazione decisamente semplice e sicuramente molto più alla portata di tutti rispetto all’editing del process template standard.

Nel prossimo articolo verrà esaminato invece come creare un nuovo tipo di Work Item.

Gian Maria.

DA2, Teaming Strategies

Con le strategie legate all’organizzazione e alla composizione del team, ovvero le Teaming Strategies, andiamo a chiudere questa serie di post dedicata alle strategie che consentono di adottare un approccio disciplinato a DevOps.

In particolare, in questo insieme troviamo 4 possibili approcci:

  • Production hand-off, letteralmente il prodotto “passa di mano” dal team di sviluppo a quello di operations. In questo caso è necessario prevedere che una parte del team di dev originale, o un team apposito, si faccia carico di supportare il fixing dei problemi in produzione. Chiaramente, creando un sotto-team, si libera il team originale per altre attività ma si mina il suo know-how generale sul prodotto;
  • Warranty Period: contempla il fixing diretto dei problemi in produzione, ovvero non vincolata ai processi aziendali tipici di segnalazione/approvazione/risoluzione dei bug. Questo rendere l’intero processo estremamente snello e riduce il tempo di Delivery del fix stesso. È doveroso precisare che non si sta in alcun modo proponendo o avvallando la pericolosa pratica di code&fix diretta sugli ambienti di produzione;
  • Production support: il supporto in produzione avviene da parte dello stesso team che ha realizzato il prodotto e che, attualmente, è al lavoro sulla successiva release, ha il vantaggio di ottenere molti feedback su come il sistema si comporta in erogazione e su come integrarsi con le operazioni di Ops. Chiaramente, lo svantaggio, è che parte del tempo del team, anche consistente, potrebbe essere dirottato su queste problematiche, soprattutto se quanto prodotto è di qualità discutibile;
  • Developer-led operation, questa strategia affida allo stesso team di sviluppo la responsabilità delle operazioni di ops, supportando a pieno ogni aspetto dell’evoluzione in chiave “you build it you run it”. Nonostante sia la soluzione che mette il team a centro dell’intero ecosistema e, apparentamene, di massima integrazione, bisogna fare attenzione a non produrre “silos architetturali”, in cui ogni team decide autonomamente la propria architettura a supporto. Per evitare questo problema è fondamentale che i team siano “enterprise aware” e sia presente un Architecture Owner che guidi il mainstream di tali scelte. Dualmente è immaginabile che un membro del team operation venga spostato nel team dedicato allo sviluppo, ricordandosi comunque di trovare opportuni strumenti di sincronizzazione tra i diversi ops in modo da avere sempre un allineamento a livello complessivo.

Delle quattro strategie riportate, risulta evidente che un vero approccio DevOps è riscontrabile solo in quella developer-led operations mentre, dualmente, la prima è quella che più si allontana da esso.

 

Say tuned!

Update 12 ottobre di VSTS

Come sempre, con cadenza regolare è arrivato il nuovo rilascio di VSTS. La cosa interessante è che in questo caso abbiamo un blog post di Brian Harry che ci spiega esattamente come viene effettuato l’aggiornamento di un sistema cosi complesso come VSTS.

Questo post è chiaramente molto interessante in ottica DevOps, perché ci mostra i piccoli trucchi che si utilizzano quando si tiene un sistema con decine di migliaia di utenti aggiornato ogni 3 settimane. La prima tecnica è sezionare il sistema, nel caso di VSTS questo sezionamento si chiama Ring. Questo significa che a Ring0 l’istanza è usata internamente da Microsoft ed espressamente anche dal team di VSTS. Questo significa che dopo avere aggiornato l’istanza di Ring0 si attende 24 ore per capire se il nuovo deploy è andato ad intaccare qualche funzionalità fondamentale. In questo modo si può limitare l’impatto che un deploy ha ad un numero minore di utenti, e quindi evitare che un bug che sfugge al controllo impatti immediatamente tutta la mole di utenti.

Le release notes vengono pubblicate quando il primo Ring pubblico Ring1 viene aggiornato, ma recentemente questa politica è cambiata, per cui ora le release notes sono pubblicate immediatamente, questo fa si che voi possiate capire quali nuove feature sono state deployate, anche se nel vostro account non sono disponibili.

Per quanto riguarda le novità di questo rilascio, è stato introdotto in git il cherry-pick and revert, direttamente dalla web ui, che consente quindi da una pull request di prendere un singolo commit e poterlo riportare nelle altre branch (utile per le hotfix). Debbo dire che non sono un grande fanatico di questa funzionalità, sono il tipo che preferisce che i cherry-pick siano fatti da riga di comando e fatti solamente quando serve veramente.

Altre modifiche riguardano la possibilità di cercare tra i file di codice nel tab Code, ed una migliore visualizzazione dei commit di Git nell’interfaccia WEb.

Molte altre motifiche e fix sono state fatte in molti task della build, e per il Web Test Runner è stata introdotta la possibilità di Aggiornare bug esistenti, funzionalità che esisteva nel runner di MTM ma che era ancora assente in quello web.

Per il resto potete leggere tutte le novità nel post ufficiale.

Happy VSTS.