Facendo riferimento al post precedente, ecco un giro abbastanza completo su TFS e Scrum Master Workbench v2, su un progetto MSF for Agile 5.0 (il template di default di TFS 2010).
Il progetto demo è ThinkAhead.Pizza.MSF proprio per ricordare che il nostro fantomatico venditore di pizze ha un software scritto con MSF for Agile. L’idea è mostrare un giro abbastanza completo sul ciclo di vita di una User Story gestito da questi due strumenti.
Scrum Master Workbench si presenta con una grafica che ricorda le più classiche lavagne, ed è perfettamente integrato con TFS: alla partenza viene richiesto l’indirizzo dei servizi esposti da TFS e tutte le operazioni passano dai servizi in perfetto stile SOA.
Partendo dalla Task Board, si può creare una User Story (Calcolatore che sottrae): questa operazione invoca i servizi di TFS, esattamente come fa qualunque client per TFS (Team Explorer per primo) per aggiungere la User Story nel database dei Work Item del progetto.
Ripetuto il processo di creazione per una seconda User Story (calcolatore che moltiplica) si possono creare direttamente i Test Case dal pulsante “+” accandto alla User Story.
Abbiamo creato due Test Case, in fase di design per adesso; il primo assegnato a Andrea Provaglio che ha collaborato alla creazione dell’esempio e che collabora attivamente con noi nei progetti reali, il secondo assegnato a me.
I test case, in TFS verranno legati alla User Story relativa. Questa la visualizzazioene di Scrum Master Workbench.
Per vedere meglio l’interazione ci siamo spostati su Visual Studio Team Explorer e, analizzando i Test Case, abbiamo inserito due task molto semplici. Le prime due task nella figura seguente erano due test precedenti.
La creazione della classe è stata assegnata a me, mentre l’implementazione del metodo ad Andrea. Entrambe sono legate alla User Story numero 36 – Calcolatore che moltiplica
Tornando in Scrum Master Workbench è possibile recuperare le informazioni:
Visto che le due task sono state legate alla user story, appaiono come post-it accanto alla user story relativa e vengono segnate nella colonna Active e colorate di giallino. In alto invece possiamo notare una Task già chiusa di colore verde.
Lo sviluppatore, dall’elenco delle task della figura precedente, può vedere i lavori assegnati, oppure può prendere una task non assegnata a nessuno per iniziare il lavoro in perfetto stile Agile.
La prima task era destinata a me, quindi scrivo il codice seguente, in questo caso usando il metodo più classico: niente TTD o virtuosismi; aggiungo una classe al progetto Biz e la rendo pubblica.

Eseguo il check-in legando la task assegnata e indicando il suo completamento (vedremo i test e TTD più avanti):
La risoluzione della task fa si che in TFS la task passi allo stato di Completed in automatico. Posso verificare questo cambiamento anche in Scrum Master Workbench.
Adesso infatti la User Story 36 ha una task completata (Closed) e una aperta (Active) che Andrea dovrà implementare.
Andrea userà la metodologia TTD per implementare la classe. Partirà quindi dai Test Case da implementare visualizzandoli con Scrum Master Workbench oppure dal Team Explorer:
La descrizione delle Task, delle User Story e dei Test Case è volutamente breve per ragioni di spazio per questo post.
Andrea, inizia a creare il codice di test sfruttando il Test Framework di Visual Studio Ultimate:
Come si nota, l’intellisense di Visual Studio segnala che il metodo Multiply non è stato ancora implementato. Il test, come si nota, è stato Legato al WorkItem 37, che, come si può vedere dallo screenshot seguente è “Moltiplicare 3x2”: l’assegnazione è stata fatta in modo visuale dalla maschera delle proprietà.
Usando la funzionalità di Create Method Stub, Andrea ha creato il metodo, lo ha implementato e successivamente ha fatto check-in dopo varie prove sul Test.
Durante il check-in, è stato legato il Test Case in automatico
Visto che il Test Case è pronto per entrare in gioco nel progetto, dalla query “Test Case” del Team Explorer, Andreà marchera il test come “Ready”.
Lo Scrum Master Workbench visualizza esattamente la stessa informazione: il test case assegnato a me è ancora in Design, mentre il test implementato da Andrea è ready.
Facciamo girare il Test per verificare la sua funzionalità direttamnete da Test View.
Passato il test è il momento di fare un primo Check-in (si potrebbe fare uno Shelve per condividere il codice che ancora non abbiamo testato del tutto, ma visto che vogliamo tenere l’esempio semplice, passateci un check-in in questa fase).
Durante il check-in, è stata legata la task di implementazione del metodo di calcolatrice che giustamente viene marcata come Resolve.
Dovremmo ancora ripetere l’operazione di creazione del test e del relativo codice per l’altro Test Case, ma visto che i passi sono ripetitivi li omettiamo per semplicità.
Una volta terminato il codice dei due test case (corrispondendi alle due task nel nostro caso) possiamo marcare come Resolve, durante il check-in, anche la nostra User Story 36.
Il Scrum Master Workbench presenta la situazione finale: La user story è completata, e le due task interne sono state chiuse.
Andrea tiene regolarmente corsi di Agile Programming per le aziende più importanti nel panorama nazionale e internazionale ed è impegnato in numerose conferenze sull’argomento. Per chi non lo conosce, le informazioni sul suo profilo e sulle sue attività sono visibili sul suo sito www.andreaprovaglio.com.
Alla prossima
Rob
Nell’ultimo periodo sono stato impegnato nello studio e realizzazione di varie applicazioni per Windows Phone 7 con ThinkAhead, azienda del nostro gruppo che si occupa principalmente di User Interface, sviluppo mobile e Windows Azure.
Abbiamo avuto modo di sperimentare alcune metodologie nello sviluppo di queste applicazioni utilizzando alcuni strumenti ed estensioni di Visual Studio 2010 che mi ero ripromesso di inserire nel blog al termine dei lavori.
Eccoci quà, gli strumenti per Windows Phone 7 sono stati rilasciati, abbiamo completato alcune applicazioni e ieri abbiamo assistito all’evento di “pre-lancio” di Windows Phone 7, quindi è arrivato il momento di relativa calma dove tornare sull’idea originale.
A fine giugno è stato rilasciato Visual Studio Visualization & Modeling Feature Pack, disponibile per gli abbonati MSDN che consente di:
- Generate code from UML class diagrams.
- Create UML class diagrams from code.
- Import UML class, sequence, and use case elements from XMI 2.1 files.
- Create and view links from work items to model elements.
- Generate dependency graphs for ASP.NET Web, C, and C++ projects.
- Create and validate layer diagrams for C and C++ code.
- Write custom code to create, modify, and validate layer diagrams.
Per poter utilizzare questo componente occorre aver installato il relativo runtime: Visualization and Modeling Feature Pack Runtime.
Per la parte TFS, ad oggi sono disponibili vari template aggiuntivi
Microsoft Visual Studio Scrum 1.0
Prodotto direttamente da Microsoft per supportare la metodologia Scrum. E’ un process template di TFS che va installato su una macchina in grado di collegarsi a TFS e da cui effettuare l’upload del template.
Un secondo componente estende SharePoint per supportare alcune web part e feature all’interno del portale di progetto. In questo caso occorre copiare il .wsp sul portale SharePoint ed eseguire le semplici instruzioni presenti nel readme
Process Editor – TFS Power Tool September
Il sito riporta ancora (April 2010), ma da qualche giorno è disponibile l’aggiornamento di settembre. http://visualstudiogallery.msdn.microsoft.com/en-us/c255a1e4-04ba-4f68-8f4e-cd473d6b971f
Aggiunge il Process Template Editor, Alerts Explorer, Best Practices Analyzer, Customer Check-in Policy Pack, Team Members, PowerShell Cmdlets, Shell Extensions e Work Item Template, nonchè alcune aggiunte al Team Explorer.
Feature Builder Power Tool
Per semplificare la scrittura di estensioni per Visual Studio : http://visualstudiogallery.msdn.microsoft.com/en-us/396c5990-6356-41c0-aa20-af4c3e58c7ae
Productivity Power Tool
Una serie utilissima di strumenti per semplificare le classice operazioni che si compiono durante lo sviluppo di software.
http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef
Pex and Moles Unit Testing for .NET
Consente di generare test suite con copertura alta del codice (code coverage). Il componenete arriva direttamente da Microsoft Research ed è molto comodo in quanto integrato con il resto dell’ambiente.
http://research.microsoft.com/en-us/projects/pex/
Buon divertimento.
Volevo condividere due screenshot che dimostrano la pubblicazione automatica da Visual Studio 2010 verso Windows Azure.
E’ necessario effettuare prima l’upload di un certificato digitale che verrà poi utilizzato da Visual Studio durante il publish a garanzia dell’identità dell’utente. E’ sufficiente un certificato digitale personale (con estensione .cer) che è possibile, ad esempio, anche esportare da Internet Explorer o usando la Management Console.
Al posto di creare un Package e eseguire l’upload manualmente, è possibile utilizzare il dialog seguente dove indicare il certificato uploadato, l’ambiente in cui pubblicare (su Staging e Production) e il progetto Storage Account da utilizzare per appoggiare il package da cui viene poi eseguito il deploy.
Dopo l’ok si può verificare l’esito dell’operazione.
E’ possibile monitorare lo stato di avanzamento direttamente all’interno di Visual Studio
Si arriva anche al dettaglio dei vari ruoli e la rispettiva inizializzazione:
Dopo aver configurato il certificato si può anche accedere ai dati della parte computazione direttamente dal server explorer di Visual Studio:

Ho avuto solo oggi il tempo di passare due applicazioni reali rispettivamente dalla versione 1.4 e dalla versione 1.5 alla versione uscita ormai qualche giorno fa.
Entrambe le applicazioni erano impostate per un aggiornamento manuale: altre due applicazioni, la prima delle quali è in beta test e fornisce servizi ad una applicazione Windows Phone 7, sono invece state aggiornate in automatico la settimana scorsa.
Le info sulla nuova versione, principalmente fix, possono essere recuperate da quà: http://msdn.microsoft.com/en-us/library/ff962830.aspx