Author Archives: Giorgio Di Nardo

Usare Visual Studio Team Services (VSTS) senza mouse? Si può!

Buone notizie per i patiti (come me) della tastiera. Le modifiche apportate nel corso degli ultimi sprint hanno notevolmente irrobustito l’arsenale di comandi attivabili con la tastiera sia in Visual Studio Team Services (VSTS) che in Team Foundation Server (TFS). Non solo sono aumentati gli shortcut supportati, ma è finalmente disponibile e facilmente accessibile un sommario di quelli disponibili in ogni pagina di VSTS.

E’ infatti sufficente premere il tasto ? in qualsiasi pagina per accedere ad un popup che elenco gli short disponibili in quel contesto. Ad esempio nella home page è possibile utilizzare i seguenti tasti:

image_thumb18

Come vedete VSTS supporta sia tasti singoli (come s per spostare il focus sulla casella di ricerca), sia combinazioni (come g w premuti in sequenza uno dopo l’altro per aprire la schermata di gestione delle attività).

Come detto gli shortcut sono contestuali, quindi se ci troviamo ad esempio nella pagina che visualizza il backlog della nostra applicazione, avremo a disposizione sia gli shortcut globali, sia quelli della sezione attività, sia ancora quelli specifici di gestione del backlog:

image_thumb19

Per chi fosse interessato ad implementare degli shortcut nella propria applicazione web, segnalo che VSTS utilizza la libreria open source MouseTrap, che anch’io sto utilizzando con ottimi risultati nei nuovi progetti di cui mi capita di occuparmi.

Happy coding!

Le novità dell’aggiornamento di Visual Studio Online del 4 settembre

Il lavoro incessante del team di sviluppo di Visual Studio Online non si ferma neanche d’estate e, puntuali come sempre, allo scadere delle tre settimane ecco disponibili le novità portate a termine nel corso del 70esimo sprint.

È uno sprint che presenta parecchie interessanti novità che aiuteranno senza dubbio quelli che utilizzano VSO quotidianamente per i propri progetti di produzione.

Vediamo rapidamente di cosa si tratta, riservandoci di approfondire le funzioni più interessanti in un prossimo post.

  1. Gestione delle query sui Work Item
  • Un nuovo comando consente di inviare direttamente un email con le informazioni sul Work Item;
  • Dopo aver aperto il dettaglio di un Work Item che fa parte di una query, oltre ai pulsanti per navigare sul Work Item precedente o successivo, è ora disponibile un nuovo comando per tornare alla lista. Il comando è attivabile anche con lo shortcut da tastiera ALT+Q e replica il comportamento già garantito dal tasto back del browser. In tutte e tre modalità (comando della toolbar, shortcut e tasto back) il ritorno alla lista avviene con l’elemento corrente (quello di cui stavamo esaminando il dettaglio) che viene automaticamente selezionato;
  • La modalità full screen, che massimizzando lo spazio a disposizione per l’elemento selezionato risulta particolarmente utile ad esempio durante i meeting Scrum, è ora disponibile sia sulle query che su tutti i tipi di Work Item;
  • Nel menu contestuale attivabile sui risultati di una query è ora disponibile un nuovo comando che apre il Work Item in un tab separato. Il nuovo tab ha qualche piccolo difetto di gioventù, ad esempio dalla toolbar manca il comando per attivare la modalità full screen che è però attivabile cambiando “a mano” il querystring.
  1. Ricerca rapida nei controlli ad albero
  • Lavorando con VSO capita spesso, anzi direi sempre, di dover impostare o modificare l’area o l’iterazione a cui un particolare Work Item fa riferimento. Come sapete ciò è possibile per mezzo di un comando ad albero che si apre a tendina e ci consente di navigare nella gerarchia delle iterazioni (o delle aree) fino a selezionare quella desiderata. Fin tanto che “giochiamo” con un progetto di prova tutto funziona a meraviglia. Quando però ci cimentiamo con un progetto “reale”, in cui ad esempio il numero di release e di sprint può diventare notevole, utilizzare il controllo non era propriamente agevole. Da oggi è possibile cominciare semplicemente a scrivere nel campo Iteration (o in quello Area) per veder apparire una lista sottostante che presenta gli elementi filtrati in base al testo inserito. Se il valore che vogliamo impostare è univoco e quindi sufficiente premere Invio per selezionarlo. Se ad esempio vogliamo mettere un Work Item nello sprint 70 è sufficiente scrivere 70 e premere Invio (supponendo che non ci siano due iterazioni che contengo il testo 70 nella propria descrizione) con un bel risparmio di tempo.
  1. Nuovi grafici di tendenza
  • Sono disponibili due nuovi intervalli di tempo per i grafici sui Work Item che mostrano i risultati relativi rispettivamente alle ultime 12 settimane e all’ultimo anno. Per i nuovi due intervalli i dati non sono ovviamente mostrati su base giornaliera ma sono invece raggruppati per settimana nel primo caso o per mese nel secondo.
  1. Più elementi nella Kanban board
  • Il limite di 20 elementi visualizzabili nella prima e nell’ultima colonna della Kanban board è stato sostituito con un limite di 999 che è decisamente adeguato anche per progetti più grandi e duraturi. Il valore può essere al solito impostato nella schermata di personalizzazione delle colonne.
  1. Evidenza di tutte le Test Suite a cui un Test Case appartiene
  • Man mano che il progetto cresce è molto probabile che uno stesso Test Case finisca per far parte di più Test Suite. In tal caso prima di apportarvi delle modifiche è bene verificare e ponderare gli eventuali effetti collaterali sulle diverse Test Suite. Una nuova opzione sul pannello dei filtri consente ora di visualizzare immediatamente tutte le Test Suite a cui il Test Case selezionato appartiene.
  1. Preview 2 delle API WIT
    Sulla base dei tanti feedback ricevuti dopo il rilascio della Preview 1, il team di VSO ha rilasciato una nuova preview che include:
  • Modalità più semplice di creazione e modifica dei Work Item;
  • Esecuzione più facile di comandi ad-hoc che utilizzano il Work Item Query Language;
  • Accesso alla lista delle aree e delle iterazioni;
  • Nuove API per elencare i tipi di Work Item e Link, le Categorie e i Campi;
  • Oggetti di ritorno JSON meno prolissi.

È comunque possibile configurare quale versione delle API si intende utilizzare per mantenere compatibilità con integrazioni già realizzate.

  1. Supporto per Hubot
  • Le Team Room di Visual Studio Online possono ora essere collegate alla chat open source Hubot. L’integrazione consente di migliorare la produttività semplificando ad esempio la creazione di Work Item, la pianificazione di una Build o la visualizzazione del proprio lavoro recente direttamente dalla Team Room.

Happy coding!

Associare il proprio Microsoft Account con l’account aziendale per condividere i benefici dell’abbonamento MSDN su Visual Studio Online

In un precedente post avevo parlato del funzionamento del piano Basic gratuito di Visual Studio Online e della possibilità di superare il numero di 5 utenti a patto che gli eccedenti siano in possesso di un abbonamento MSDN.

Con l’attuale possibilità di utilizzare Visual Studio Online sia con il proprio Microsoft Account che con l’account aziendale, per qualcuno si potrebbe porre il problema di riuscire a condividere i benefici dell’abbonamento su entrambi gli account, potendo quindi partecipare sia a progetti aziendali che extra-aziendali senza essere in entrambi i casi contati come utenti Basic.

Fortunatamente il problema è facilmente risolvibile associando i due account dalla propria sottoscrizione MSDN.

Apriamo quindi il nostro browser preferito e navighiamo su http://msdn.microsoft.com accedendo se necessario con il nostro Microsoft Account. Selezioniamo quindi in alto a destra il link Abbonamenti MSDN.

Nella sezione Visual Studio Online selezioniamo il link Collegamento all’account aziendale.

Nel dialog box Link to your Organizational Account impostiamo il nostro Account aziendale e clicchiamo sul pulsante Collega.

I due account risultano ora collegati (collegamento che è sempre possibile modificare o rimuovere utilizzando i link opportuni) ed è quindi possibile utilizzare i privilegi della propria sottoscrizione MSDN su entrambi.

Happy coding!

La fine del Early Adopter di Visual Studio Online non è la fine del mondo

In questi giorni Microsoft ha confermato che il programma Early Adopter di Visual Studio Online terminerà il 7 maggio. I benefici Early Adopter consentivano agli utenti che si erano registrati su VSO nella fase di lancio della piattaforma di poter usufruire di tutti i servizi della stessa gratuitamente. Il termine di tale opzione era previsto inizialmente per il 13 marzo ma era stato successivamente posticipato per una serie di problemi che hanno ritardato la disponibilità delle modalità di migrazione.

Gli utenti di VSO che preferissero optare per una soluzione on-premises piuttosto che per la versione a cloud a pagamento riceveranno infatti da Microsoft tutto il dovuto supporto per l’esportazione dei dati da VSO e l’importazione degli stessi sul proprio TFS.

In questo post non vorrei però parlare di migrazione, ma approfittare invece per capire un po’ meglio quali saranno le opzioni gratuite offerte dalla piattaforma per gli Early Adopter dopo tale data, che poi altro non sono se non quelle già garantite a un qualunque utente che si iscriva oggi su VSO.

Il piano entry level disponibile su Visual Studio Online è il Basic ed è su questo che saranno convertiti tutti gli attuali Early Adopter a meno di non sottoscrivere un piano a pagamento. Il piano consente di utilizzare il servizio cloud di Microsoft per gestire i propri progetti sia dal punto di vista del codice che delle attività, con la possibilità di condividere i progetti in team fino a 5 persone senza costi aggiuntivi.

Ciò vuol dire un repository di codice sorgente con tutte le caratteristiche di TFS che ben conosciamo e con la possibilità di utilizzare sia lo storico Team Foundation Version Control (TFVC) centralizzato che Git, un sistema di Version Control distribuito (DVCS). Ma vuole anche dire poter sfruttare VSO per la gestione dei requisiti e delle attività di sviluppo, potendo optare tanto per un approccio tradizionale (usando il Process Template MSF for CMMI Process Improvement 2013) quanto per uno Agile (scegliendo il template generico MSF for Agile Software Development 2013 o quello Microsoft Visual Studio Scrum 2013 specifico per Scrum di cui una la peculiare terminologia).

Il piano prevede inoltre fino a 60 minuti mensili di Build e 15.000 minuti di Load Testing.

La possibilità di lavorare in team su un progetto condiviso su VSO è ancora più interessante se analizziamo meglio la limitazione delle 5 persone gratuite. La limitazione è infatti relativa alla possibilità di aggiungere fino a 5 utenti in possesso a loro volta di un piano Basic. Non vi è invece alcuna limitazione relativa agli utenti in possesso di un abbonamento MSDN ed è quindi possibile, da un piano Basic, gestire un progetto con anche più di 5 membri a patto che quelli eccedenti siano tutti in possesso di un abbonamento MSDN.

Per verificare quale sia la situazione del nostro piano possiamo cliccare sul tab Users a partire dalla Home page del nostro account.

All’interno del tab è riassunta la situazione relativa alle licenze di tutti gli utenti accreditati sul nostro account di VSO. Nel nostro esempio l’account prevede l’accesso per 6 utenti in possesso del piano Early Adopter. In questo caso alla data di scadenza del 7 maggio gli utenti saranno migrati sul piano Basic e questo poterebbe l’account a sforare il limite di 5 account Basic gratuiti.

È quindi necessario acquistare licenze aggiuntive per gli utenti oltre il quinto, oppure specificare che uno o più utenti sono in possesso di un abbonamento MSDN e non vanno quindi conteggiati nel novero di quelli Basic. Per farlo selezioniamo l’utente e clicchiamo sul tasto Edit.

Possiamo ora scegliere il tipo di licenza impostando ad esempio Eligible MSDN Subscriber e cliccando su Save. In tal modo comunichiamo a VSO che l’utente selezionato gode, a parer nostro, dei privilegi riservati agli utenti in possesso di un abbonamento MSDN.

La nostra indicazione viene registrata e sarà confermata al successivo login dell’utente su Visual Studio Online.

Quando ciò avviene il cruscotto degli utenti riporta l’indicazione corretta sulla licenza in uso. È possibile anche anticipare il momento in cui i piani Early Adopter saranno convertiti in Basic, impostando per uno o più utenti il piano Basic con la stessa procedura appena descritta. Gli utenti con licenza Basic vanno ovviamente a riempire i 5 spazi gratuiti a disposizione.

I vantaggi degli utenti in possesso di un abbonamento MSDN non si esauriscono nel fatto di poter partecipare a progetti su account Basic senza consumare gli slot gratuiti previsti. Tali utenti infatti non sono soggetti alle limitazioni previste per gli utenti Basic a livello di Team Rooms, Features, Test, Feedback, ecc.

Happy coding!

Togliere i fine settimana dal Burndown di Visual Studio Online

Se state usando Visual Studio Online per gestire i vostri progetti, vi sarete di certo imbattuti nella problematica gestione dello Sprint
Burndown.

Il grafico di Burndown ci consente di monitorare l’andamento del lavoro all’interno dello sprint in una modalità visiva di facile interpretazione e di impatto immediato. Il valore del Remaining Work, cumulato tra tutti i Task che fanno parte dello sprint corrente, viene infatti riportato giorno per giorno su un grafico cartesiano avente in ascissa lo scorrere dei giorni e in ordinata la quantità di lavoro ancora da completare. Una linea di sviluppo “ideale”, tracciata sul grafico, aiuta a comprende a colpo d’occhio se l’andamento dello Sprint segue le previsioni o se viceversa il Team è in ritardo con il completamento dei requisiti.

Senza addentrarsi nelle altre caratteristiche migliorabili, una delle grosse problematiche del Burndown era legata al fatto che, nel disegnare il grafico, VSO prendeva in considerazione non soltanto i giorni feriali ma anche quelli del fine settimana, nei quali generalmente il Team non è al lavoro e quindi il Remaining Work complessivo rimane lo stesso.

Questa inclusione da un lato genera un andamento a scaletta del grafico (con una forma che mi ricorda sempre quella di alcuni scivoli dei parchi acquatici), dall’altro rende difficile capire l’effettivo stato del progetto, visto che per essere in linea con i tempi è necessario trovarsi ben al di sotto della linea ideale prima del fine settimana.

Nel caso riportato, ad esempio, il Team sembra essere in anticipo sui tempi al termine dei primi 4 giorni (punto A) ma in realtà è un’impressione che si dimostra errata all’inizio della settimana successiva (punto B). Così come il ritardo sembra contenuto e facilmente recuperabile alla fine della settimana (punto C) mentre è in realtà molto maggiore (punto D) e richiederà uno sforzo notevole per condurre in porto lo Sprint nei tempi previsti.

Un recente aggiornamento di Visual Studio Online ha finalmente risolto questo problema dandoci la possibilità di specificare quali siano i giorni lavorati settimanali del Team. Per farlo è sufficiente accedere alle impostazioni (tramite il menu al solito rappresentato dall’icona a forma di ingranaggio) a partire dalla home page del nostro progetto.

Selezioniamo quindi il Team per il quale vogliamo impostare i giorni lavorativi (è possibile specificare differenti configurazioni per i diversi Team mantenendo così il massimo della flessibilità nell’ambito del progetto).

Nella scheda dei Settings troviamo i checkbox che ci consento di impostare quali siano i giorni lavorativi e quali quelli festivi che saranno esclusi dal Burndown.

Happy coding!

ALM@Work Hands On Lab con DomusDotNet

Update 16/03: la data della seconda sessione è stata spostata da martedì 25 a mercoledì 26 marzo, sempre alla stessa ora.

Per tre settimane di seguito a partire dal prossimo 18 marzo avrò in piacere di fare da speaker ad un corso su Visual Studio Online organizzato da DomusDotNet, la community romana di appassionati di .NET di cui mi onoro di far parte.

Il corso sarà erogato tramite Lync ed è indirizzato a tutti coloro che vogliano muovere i primi passi sulla piattaforma ALM online di Microsoft, in pratica l’equivalente del Team Foundation Server installato on-premises.

Il calendario dei tre appuntamenti è il seguente:

  • Martedì 18 marzo – Visual Studio Online Jumpstart: “Backup su file ZIP… se lo conosci lo eviti”! Apriamo un account gratuito su VSO e andiamo alla scoperta delle potenzialità che la piattaforma ci mette a disposizione per gestire il codice dei nostri progetti senza il rischio di perdere neanche una riga del nostro lavoro;
  • Mercoledì 26 marzo – Features, User Stories and Tasks: “Non di solo codice vive il programmatore”! Impariamo ad usare gli strumenti di VSO per gestire in modo semplice ed utile requisiti e attività cooperando con gli altri eventuali membri del team;
  • Martedì 1 aprile –
    Source code management (branch, merge, shelve)
    : “C’è tutto un mondo oltre il check-in”! Lavorare sulla versione 2 della nostra applicazione mentre risolviamo un bug urgente sulla versione 1 già rilasciata senza pestarsi i piedi non è più un miraggio ed è ad un solo branch di distanza da noi.

Le sessioni avranno inizio alle ore 21 e prevedono una durata di circa 40 minuti l’una.

Come dice il titolo, si tratta di laboratori in cui “sporcarsi le mani”. Ogni partecipante sarà invitato a riprodurre sul proprio PC le attività che porteremo avanti nel corso della sessione, perché fare è il miglior modo per imparare. Al termine della sessione un ampio spazio sarà riservato per dubbi o domande. Visto l’approccio è ovviamente necessario avere Visual Studio 2013 installato sul proprio PC (anche nella versione Express) nonché la versione desktop di Lync.

Per prenotarsi è sufficiente scrivere a info @ domusdotnet . org comunicando il proprio Microsoft Account.

Happy coding!

Effettuare query sul campo Tags in Visual Studio Online

Nel rilascio del 22 gennaio scorso (risultato del 59esimo sprint di sviluppo) il team di Visual Studio Online ha aggiunto un paio di interessanti funzionalità alla gestione della pianificazione del progetto.

Una di queste, da lunga tempo attesa, è la possibilità di effettuare query che coinvolgano il campo Tags.

Come sappiamo, nella definizione di un Work Item è possibile aggiungere uno o più Tag liberamente configurabili a livello di Team Project. I Tag sono particolarmente utili per raggruppare Work Item che afferiscono a domini logici omogenei. Possiamo ad esempio usare i Tag per identificare tutti i Product Backlog Item che riguardano la versione italiana di un sito web, o tutti i Task che prevedono di agire sullo strato di servizi di un’applicazione.

Fino ad oggi però, o meglio fino al mese scorso, non era possibile effettuare query per estrarre i soli Work Item associati ad un particolare Tag. La soluzione alternativa era esportare il Backlog in Excel ed utilizzare poi le funzioni di filtro integrate nel foglio di calcolo.

Vediamo come il nuovo supporto ci consente di operare nell’interfaccia web di Visual Studio Online.

Supponiamo di avere un Backlog composto da 3 elementi sui quali abbiamo definito una serie di Tag.

Spostiamoci sul tab Queries della sezione Work e creiamo una nuova query. Nell’Editor aggiungiamo una nuova condizione usando il link Add new clause e selezioniamo il valore Tags. Possiamo quindi scegliere tra due Operator: Contains (che restituirà ovviamente tutti e soli gli elementi che sono stati marcati con il Tag specificato) o Does Not Contains (che effettuerà invece un filtro esclusivo). Per finire possiamo indicare il Value sulla base del quale applicare la condizione: Visual Studio Online è in grado di supportarci in questa scelta fornendoci una lista dei diversi valori assegnati ai nostri Work Item.

L’esecuzione della query restituisce ovviamente i soli due requisiti a cui è associato il Tag D.

Come logico anche sulle condizioni basate sul campo Tags è possibile applicare raggruppamenti per ottenere, ad esempio, gli elementi che contengono il Tag D o quello E.

Che restituisce come prevedibile tutti e tre i requisiti.

Happy coding!

Sfruttare il Package Restore di NuGet per ridurre le dimensioni dei propri progetti su Visual Studio Online

Update 17/02: alla luce dei commenti di Ugo e Marco ho cercato di rendere più chiaro il fatto che la vecchia modalità di Package Restore va abbandonata in favore della nuova. Spero di aver reso il concetto più chiaro.

Capita spesso che, quando si comincia ad utilizzare un prodotto nelle prime fasi del suo sviluppo, ci si abitui ad un certo modo di risolvere i problemi e si perdano di vista successivi miglioramenti.

È quello che mi è capitato con la funzione Package Restore di NuGet che è stata aggiunta per risolvere un problema molto sentito in ambito source control: evitare di dover salvare sul repository (nel mio caso Team Foundation Server prima e Visual Studio Online successivamente) i package necessari al funzionamento del progetto.

Per impostazione predefinita NuGet scarica tali pacchetti nella cartella della solution e referenzia quindi nel progetto gli eseguibili (DLL) che si trovano nelle cartelle scaricate. Questo richiede (o meglio richiedeva) la necessità di caricare sul server TFS o VSO anche tutta la cartella packages quasi sempre molto onerosa in termini di spazio essendo tra l’altro i pacchetti spesso disponibili per piattaforme diverse (.NET 4 o 4.5, Windows Phone, ecc.) e comunque soggetti ad aggiornamento nel corso della vita del progetto.

Per risolvere questa problematica già da diverso tempo era disponibile su NuGet una modalità di Package Restore che sfruttava l’integrazione in MSBuild (con alcune limitazioni ad esempio sui progetti Web Site). Tale modalità, attivabile tuttora selezionando la voce Enable NuGet Package Restore dal menu contestuale della solution nel Solution Explorer, è da ritenersi obsoleta e da evitare se non volete causare sofferenza a migliaia di innocenti gattini.

A partire dalla versione 2.7 di NuGet è stata infatti aggiunta una nuova modalità automatica che, per tornare alla premessa di questo post, fino a qualche giorno fa ignoravo e che rende l’intera procedura assai più semplice e trasparente.

Partiamo da un nuovo progetto ASP.NET Web Application.

Specifichiamo il template Web API giusto per avere un po’ di pacchetti scaricati da NuGet.

Se esaminiamo il file packages.config vediamo che effettivamente il nostro progetto utilizza una serie di pacchetti NuGet.

I pacchetti come sappiamo sono stati scaricati nella cartella packages a livello di solution oppure in una cartella alternativa se, come abbiamo visto in questo post, abbiamo modificato il repositorypath nel file NuGet.config (nel mio caso in C:\Users\Giorgio\Documents\Visual Studio 2013\Packages).

Per verificare il funzionamento del Package Restore rinominiamo (o cancelliamo) la cartella, ad esempio in _Packages, in modo che non sia più riconosciuta da NuGet.

Torniamo ora sul Visual Studio e selezioniamo la voce Manage NuGet Packages… dal menu contestuale delle References del progetto.

NuGet si accorge della mancanza dei pacchetti e ci propone la possibilità di effettuare un restore manuale per ripristinare il funzionamento del progetto.

Invece di usare questa modalità, chiudiamo semplicemente la finestra e lanciamo una compilazione della solution. Anche in questo caso NuGet si accorge della mancanza dei pacchetti e provvede automaticamente a scaricarli.

La finestra di Output ci conferma l’operazione di ripristino dei pacchetti mancanti e il progetto viene compilato correttamente.

Entrambe le modalità (quella manuale via Manage NuGet Packages… e quella automatica in fase di build) possono essere disabilitate a propria scelta (tenendo conto che per impostazione predefinita sono abilitate).

Nelle opzioni di Visual Studio selezioniamo NuGet Package Manager > General e disabilitiamo l’opzione Automatically check for missing packages during build in Visual Studio (se vogliamo mantenere la possibilità di ripristinare i pacchetti mancanti con la procedura manuale) o l’opzione Allow NuGet to download missing packages (se vogliamo completamente impedire la possibilità di ripristino).

Happy coding!