in questo articolo sono illustrate le caratteristiche di Microsoft Visual Studio Team System, con particolare attenzione per il supporto offerto per il processo di sviluppo software (25 pagine stampate).
.gif)
In questa pagina
Introduzione
Visual Studio Team Edition for Software Architects
Team Edition for Software Developers
Team Edition for Software Testers
Visual Studio Team Foundation Server
Estensibilità e personalizzazione di Team System
Conclusioni
Introduzione
È fuori dubbio che, oggi come oggi, realizzare prodotti software di qualità rispettando tempi e budget è molto difficile. Perché? Iniziamo con il riconoscere che lo sviluppo software non riguarda esclusivamente gli sviluppatori. Anzi, in genere nei progetti software sono coinvolte molte altre figure e il successo del progetto dipende proprio dalla loro interazione. Normalmente i team di progetto sono costituiti da project manager, analisti aziendali, progettisti di applicazioni, sviluppatori e tester. Sfortunatamente, troppo spesso queste diverse figure si trovano in difficoltà a coordinare al meglio il loro lavoro, non disponendo di strumenti in grado di favorire la collaborazione. Non sarebbe utile poter utilizzare strumenti che non solo consentono ai diversi membri del team di essere più produttivi e accurati e di svolgere un lavoro più affidabile, ma anche di condividere informazioni e collaborare più prontamente nell'ambito del ciclo di sviluppo software prestabilito? La soluzione esiste: Microsoft Visual Studio Team System.
Visual Studio Team System è il nuovo prodotto della famiglia Microsoft Visual Studio 2005. Si tratta di una release estremamente significativa dal momento che, per la prima volta, Microsoft ha realizzato un prodotto pensato espressamente per la gestione dell'intero ciclo di sviluppo del software. Basato sulle funzionalità di Microsoft Visual Studio 2005, Team System offre caratteristiche aggiuntive per progettisti, sviluppatori, tester e project manager. Nella figura 1 sono rappresentate le tre versioni, basate sui ruoli degli individui all’interno del gruppo di sviluppo, di Team System: Software Architects, Software Developers e Software Testers, oltre a Team Foundation Server, in grado di ottimizzare le attività di collaborazione e condivisione dei processi di sviluppo.
.gif)
Figura 1. Microsoft Visual Studio Team System
Team System fornisce un nuovo set di strumenti che consente di considerare il processo di sviluppo software da una prospettiva più ampia, fornendo inoltre una piattaforma per personalizzarlo in base agli specifici processi adottati, estenderlo ai nuovi e integrarlo con gli strumenti e i processi esistenti. Nel resto di questo articolo verranno illustrate le funzionalità di Team System in grado di agevolare il lavoro dei gruppi di sviluppo e di ottimizzare i processi.
Visual Studio Team Edition for Software Architects
Le funzionalità di Team Edition for Software Architects sono state le prime a essere rilasciate pubblicamente sotto forma di beta, con il nome in codice originario di "Whitehorse". Questi strumenti di progettazione di sistemi distribuiti integrano le capacità di modellazione direttamente in Visual Studio, non consentendo soltanto di creare utili diagrammi, ma anche di valutare la progettazione di applicazioni e sistemi per il deployment prima di scrivere il codice. Ad esempio, i progettisti di applicazioni possono progettare e valutare applicazioni e sistemi di applicazioni orientati ai servizi per il deployment, i progettisti di infrastrutture possono progettare rappresentazioni logiche dei centri dati in cui saranno implementate queste applicazioni ed entrambi possono lavorare a stretto contatto per fare in modo che le progettazioni delle applicazioni e del centro dati siano compatibili. Il codice scritto per implementare le applicazioni viene mantenuto sincronizzato con la progettazione dell'applicazione. Alcuni degli elementi che è possibile modellare in Team Edition for Software Architects rientrano nell'ambito dell'iniziativa Microsoft Dynamic Systems Initiative (DSI). Per ulteriori informazioni sull'iniziativa DSI, vedi Dynamic Systems Initiative.
Tutti gli strumenti di progettazione di sistemi distribuiti dell'edizione for Software Architects si basano sul modello SDM (System Definition Model), un formato basato su XML per l'archiviazione della definizione del modello. SDM fornisce un linguaggio comune per la descrizione dei sistemi di applicazioni e dell'infrastruttura del centro dati, che agevola la comunicazione tra gli esperti dei diversi settori e permette la convalida di un'applicazione, in modo da determinare se possa essere implementata ed eseguita con successo in un ambiente di centro dati di destinazione. Nelle sezioni seguenti sono descritti i quattro strumenti di progettazione di sistemi distribuiti che è possibile utilizzare in Team Edition for Software Architects.
Logical Datacenter Designer
L'infrastruttura fisica di un centro dati in genere non riveste particolare importanza per uno sviluppatore che ha bisogno di comprendere quali sono gli ambienti per l'hosting delle applicazioni presenti e in che modo sono configurati, vincolati e connessi. Lo strumento Logical Datacenter Designer consente di creare un diagramma centro dati logico, che non rappresenta i computer fisici né i tipi di computer in un centro dati ma viene utilizzato per definire o documentare le configurazioni specifiche del software server applicazioni, come Microsoft Internet Information Server, Microsoft SQL Server o Microsoft BizTalk Server, e per illustrare l'interconnessione tra le rappresentazioni logiche configurate dei server (applicazioni). I server logici possono essere raggruppati all'interno di zone che definiscono i confini di comunicazione logici e che possono essere configurate per vincolare i tipi di server logici che possono contenere, nonché la direzione e i tipi di comunicazioni in entrata e in uscita dal centro dati. Nella tabella 1 sono elencati gli elementi che possono essere modellati con questo strumento di progettazione, mentre la figura 2 fornisce un semplice esempio di un diagramma centro dati logico.
| Tabella 1. Elementi di Logical Datacenter Designer |
|
Server logici
|
Descrizione
|
|
WindowsClient
|
Ambiente per l'hosting di applicazioni Windows fornito dal sistema operativo Windows. Può essere configurato per l'hosting di un'applicazione WindowsApplication, GenericApplication e OfficeApplication.
|
|
IISWebServer
|
Rappresenta una configurazione di Internet Information Server. È possibile specificare l'hosting di applicazioni Web Microsoft ASP.NET, Web service o altre applicazioni generiche.
|
|
DatabaseServer
|
Rappresenta un server di database generico per l'hosting di un database.
|
|
GenericServer
|
Rappresenta un ambiente per l'hosting di applicazioni non descritte al meglio da uno dei server logici predefiniti, generalmente utilizzato per supportare l'hosting di applicazioni generiche.
|
|
Zona
|
Raggruppamento di server logici.
|
|
Endpoint
|
Gli endpoint rappresentano punti di comunicazione in server logici o zone. I server logici sono in grado di supportare endpoint client che consentono la comunicazione dal server ed endpoint server che permettono la comunicazione con il server. Gli endpoint di tipo zona possono essere considerati un "portale" attraverso il quale passano le comunicazioni con i server o le zone all'interno della zona e possono consentire comunicazioni in ingresso, in uscita o bidirezionali, nonché limitare i tipi di comunicazione consentiti. Oltre agli endpoint di tipo zona, sono supportate anche le forme client e server dei seguenti endpoint: di database, HTTP, per i siti Web e generici.
|
|
Commenti
|
Consentono di aggiungere una descrizione degli elementi di progettazione all'area del modello.
|
.gif)
Figura 2. Diagramma centro dati logico
Dopo avere personalizzato e aggiunto le proprietà desiderate ai server logici e alle zone del diagramma, è possibile scegliere di aggiungere queste forme alla casella degli strumenti per riutilizzarle successivamente, selezionando una o più zone o server, facendo clic con il pulsante destro del mouse e scegliendo Add to Toolbox.
Per ogni server logico o zona inserita nel diagramma, è anche possibile specificare una serie di vincoli e impostazioni scegliendo Other Windows dal menu View, quindi Settings and Constraints. In questa finestra è possibile specificare un criterio basato sulle caratteristiche operative di ciascun server che deve essere soddisfatto dalle applicazioni che verranno implementate su tale server. Ad esempio, nella figura 3 è rappresentata la finestra Settings and Constraints Editor relativa a un server che consente solo l'autenticazione basata su form e Windows come meccanismi di autenticazione validi. Dall'elenco di voci selezionate relative ai vincoli è possibile vedere che su questo server può essere eseguito praticamente qualsiasi tipo di servizio, dalle applicazioni Web ASP.NET ai Web service BizTalk o alle applicazioni generiche. Si tratta di un aspetto particolarmente importante per quel che riguarda lo strumento Deployment Designer, che verrà illustrato più avanti in questo articolo. Questo strumento consente inoltre di importare da un server esistente la configurazione completa di IIS, inclusi gli endpoint per i siti Web, facendo clic con il pulsante destro del mouse sul server logico e scegliendo Import Settings.
.gif)
Figura 3. Settings and Constraints Editor
Application Designer
Quando si progetta una nuova soluzione, in genere per prima cosa si cerca di visualizzarla su una lavagna, per poi continuare a mettere a punto il modello finché non è possibile passare a una progettazione più dettagliata, a una scomposizione funzionale e infine alla fase di realizzazione vera e propria. Application Designer riveste un ruolo particolarmente significativo in questo processo, permettendo di progettare e configurare applicazioni tramite uno strumento pensato espressamente per questa operazione. Utilizzando il diagramma applicazioni, è infatti possibile scomporre la soluzione in applicazioni, ovvero unità di codice implementabili in modo discreto, come un Web service, uno smart client o un sito Web. Nella tabella 2 sono descritti alcuni degli elementi che è possibile utilizzare per progettare le applicazioni nel diagramma applicazioni, mentre nella figura 4 è riportato un diagramma applicazioni di esempio.
| Tabella 2. Elementi di Application Designer |
|
Elemento di progettazione
|
Descrizione
|
|
Applicazione Windows
|
Applicazione Microsoft Windows Form o di tipo console.
|
|
Applicazione Web ASP.NET
|
Applicazione Web ASP.NET che può disporre di endpoint per i Web service e/o di endpoint per il contenuto Web. Vengono forniti due elementi della casella degli strumenti per la creazione di un'applicazione ASP.NET con un endpoint per il contenuto Web predefinito.
|
|
Applicazione Office
|
Applicazione che si integra con un'applicazione Microsoft Office come Microsoft Word o Microsoft Excel.
|
|
Web service esterno
|
Web service utilizzato da un'applicazione e posizionato all'esterno della soluzione. È necessario specificare l'URL del Web service rappresentato.
|
|
Database esterno
|
Database utilizzato da un'applicazione della soluzione. È possibile fornire la stringa di connessione per il database rappresentato.
|
|
Web service BizTalk
|
Web service considerato un Web service BizTalk. È necessario specificare l'URL del Web service rappresentato.
|
|
Applicazione generica
|
Qualsiasi altro tipo di applicazione che interagisce con la soluzione ma che non dispone di un elemento di progettazione associato. Ad esempio, è possibile utilizzare un elemento di progettazione di tipo applicazione generica per modellare un'applicazione legacy.
|
|
Endpoint per i Web service
|
Punto di ingresso per i Web service in un'applicazione.
|
|
Endpoint per il contenuto Web
|
Punto di ingresso per il contenuto Web in un elemento di progettazione di un'applicazione Web ASP.NET.
|
|
Endpoint generico
|
Endpoint generico utilizzato per rappresentare un punto di connessione in un tipo di applicazione non modellato in modo specifico. È possibile aggiungere endpoint generici a qualsiasi tipo di applicazione.
|
|
Commenti
|
Contrassegno che permette di aggiungere una descrizione degli elementi di progettazione all'area del diagramma.
|
.gif)
Figura 4. Diagramma applicazioni
Come con Logical Datacenter Designer, è possibile aggiungere ulteriori vincoli e proprietà alle definizioni e agli endpoint per l'applicazione utilizzando Settings and Constraints Editor. Tali vincoli consentono di specificare i requisiti dell'applicazione per il deployment e limitano i tipi di server logici in cui è possibile distribuirla. Con Application Designer, è anche possibile definire i processi operativi per i Web service. Ad esempio, è possibile selezionare un endpoint per un provider di Web service in un'applicazione Web ASP.NET e utilizzare la finestra Web Service Details per definire i metodi e i parametri che definiscono l'interfaccia del Web service.
La maggior parte dei tipi di applicazioni forniti supporta l'implementazione e la sincronizzazione con il codice. Quando si fa clic con il pulsante destro del mouse su un'applicazione, ad esempio un'applicazione Windows o un'applicazione Web ASP.NET, oppure si fa clic con il pulsante destro del mouse sul diagramma applicazioni e si sceglie Implement Application o Implement All Applications, in Visual Studio vengono creati i progetti per le applicazioni selezionate in base ai tipi e al linguaggio specificato, ad esempio Microsoft Visual Basic, Microsoft Visual C# o Microsoft Visual J#. Se le applicazioni sono state connesse all'interno del diagramma, verranno inoltre collegate, creando riferimenti Web e completando le voci di configurazione richieste. Se la soluzione è già esistente o se si preferisce definire tutte le applicazioni direttamente nel codice, la semplice aggiunta di un diagramma applicazioni a una soluzione comporterà il reverse-engineering del diagramma dal progetto, dal codice e dai file di configurazione. Una volta inserito un diagramma applicazioni in una soluzione con progetti e codice, Visual Studio garantisce la sincronizzazione automatica e continuativa in background del diagramma e dei modelli SDM con il progetto, il codice e i file di configurazione in caso di modifiche ai diagrammi o al codice.
System Designer
È possibile utilizzare System Designer per progettare sistemi di applicazioni, vale a dire "unità di deployment" costituite da applicazioni definite nel diagramma applicazioni o da sistemi definiti in altri diagrammi di sistema, come illustrato nella figura 5. Dal momento che un sistema è una configurazione personalizzata delle applicazioni, è possibile eseguire l'override dei valori predefiniti delle singole applicazioni o includere in un sistema uno o più utilizzi della stessa definizione dell'applicazione o del sistema. Come illustrato nella figura 5, ogni applicazione può essere connessa e configurata in modo differente dalla definizione e in maniera appropriata per la modalità di deployment scelta. Ad esempio, è possibile eseguire l'override delle impostazioni di un'applicazione progettate come sottoponibili a override nella relativa definizione. In realtà, è possibile creare più definizioni di sistema nella stessa soluzione, dove ogni sistema rappresenta una singola configurazione di deployment o del centro dati. Questa funzionalità si rivela particolarmente utile per il supporto di più clienti, ognuno con un centro dati differente, che eseguono la stessa soluzione. Per creare un sistema, è possibile selezionare le applicazioni desiderate nel diagramma applicazioni, fare clic su di esso con il pulsante destro del mouse e scegliere Design Application System.
.gif)
Figura 5. Diagramma di sistema
Deployment Designer
Deployment Designer consente di associare le progettazioni dei sistemi a un diagramma centro dati logico creato con Logical Datacenter Designer, in modo da descrivere i deployment logici per questi sistemi. Deployment Designer garantisce inoltre l'associazione tra il giusto tipo di applicazione al tipo di server logico corretto, rispettando gli eventuali vincoli di hosting impostati per il server logico nel diagramma centro dati logico. Una volta associate tutte le applicazioni nel sistema, è possibile eseguire un'ulteriore convalida del diagramma, in cui tutti i vincoli e le impostazioni configurati in Application Designer o System Designer vengono verificati sulla base della progettazione del centro dati logico, in modo da individuare eventuali problemi di configurazione ancora prima di scrivere il codice. Gli errori di convalida vengono visualizzati in Visual Studio in modo analogo a quelli di compilazione o agli avvisi. Quando si fa doppio clic su uno di questi errori, vengono visualizzati il diagramma applicazioni o il diagramma centro dati logico con evidenziata l'applicazione o il server logico che ha causato l'errore e la relativa impostazione di configurazione. Dopo avere implementato l'applicazione e modificato un'impostazione, la modifica implementata viene estesa immediatamente al file di configurazione, in modo che durante la convalida vengano fornite direttamente le informazioni appropriate al processo di sviluppo.
Si tratta di una caratteristica estremamente utile. È infatti possibile utilizzare questa convalida del modello per fare in modo che l'applicazione soddisfi sempre i criteri del centro dati e per comprendere l'impatto della modifica, sia dalla prospettiva del centro dati che da quella dell'architettura dell'applicazione, per tutto il ciclo di vita della soluzione.
Team Edition for Software Developers
Visual Studio è di per sé uno strumento straordinario per la scrittura del codice e l'edizione Team Edition for Software Developers rappresenta un'ulteriore ottimizzazione, offrendo agli sviluppatori strumenti aggiuntivi per scrivere codice di qualità superiore ed eseguire l'analisi del codice sulla base di codice disponibile, l'analisi dinamica sulla base degli eseguibili in esecuzione, allo scopo di raccogliere informazioni di code coverage e creazione di profili per le prestazioni, nonché un'infrastruttura di unit test completamente integrata.
Analisi del codice
Basati su strumenti testati nel tempo come FxCop e PreFast, gli strumenti per l'analisi del codice disponibili in Visual Studio Team System consentono di analizzare il codice durante la creazione in base a specifici parametri di difetto corrispondenti alle regole specificate dall'utente. Per consentire l'analisi del codice per il codice gestito (scritto in qualsiasi linguaggio .NET), è possibile visualizzare la finestra di dialogo Properties di un progetto di codice gestito, scegliere la scheda Code Analysis e selezionare la casella di controllo Enable Code Analysis, come illustrato nella figura 6.
.gif)
Figura 6. Attivazione dell'analisi del codice
Come è possibile vedere, è disponibile un'ampia gamma di regole predefinite e attivabili automaticamente, da quelle per la verifica delle indicazioni per la progettazione e la generazione del codice a quelle per i problemi di protezione. È possibile scegliere di disattivare le regole non applicabili al progetto in corso, nonché crearne di proprie che soddisfino gli specifici modelli di codice. Se viene individuato un problema all'interno del codice, viene visualizzato un avviso o un errore, a seconda della modalità di configurazione della regola.
Gli strumenti di analisi del codice possono essere utilizzati anche per migliorare la qualità del codice Microsoft C++ nativo, ad esempio per identificare i buffer overrun, la memoria non inizializzata e la risoluzione del riferimento dei puntatori null, che vengono visualizzati nello stesso modo degli avvisi di compilazione e possono essere disattivati utilizzando la direttiva del compilatore #pragma.
Analisi dinamica
Il set di strumenti per l'analisi dinamica del codice include un profiler del codice per misurare le prestazioni delle applicazioni in fase di esecuzione. Sono disponibili due modalità di profiling: campionamento e strumentazione.
La prima prevede il campionamento periodico delle prestazioni dell'applicazione a scopo di valutazione. Con questa forma di analisi è meno probabile che l'operazione di profiling influisca sulle prestazioni dell'applicazione, dal momento che l'esecuzione è limitata nel tempo. A causa della natura statistica dell'approccio, tuttavia, non garantisce una rappresentazione esatta dei tempi dell'applicazione.
La strumentazione, d'altro canto, fornisce un resoconto accurato delle attività dell'applicazione poiché, prima della sua esecuzione, il profiler instrumenterà il codice aggiuntivo nelle singole chiamate ai metodi e alle procedure, consentendo di monitorare esattamente quale metodo è stato chiamato e quanto tempo è servito per la sua esecuzione. Il profiling basato sulla strumentazione comporta un rallentamento delle prestazioni dell'applicazione, semplicemente perché vi sono più righe di codice da eseguire e più dati da raccogliere, come illustrato nella figura 7.
.gif)
Figura 7. Risultati del profiling basato sulla strumentazione
Unit test
Da sempre gli unit test costituiscono una parte importante del processo di sviluppo software. Si tratta di uno specifico tipo di test per la convalida di un aspetto del sistema: una funzione o una procedura specifica, un componente o addirittura uno scenario di utilizzo. Team System fornisce un'infrastruttura per la scrittura e l'esecuzione di unit test sia nell'edizione Team Edition for Software Developers che Team Edition for Software Testers e garantisce la massima integrazione nell'ambiente IDE (Integrated Development Environment) di sviluppo. Come riportato nell'esempio di codice 1, gli unit test sono funzioni di test con attributi che consentono di verificare il comportamento di una funzione o procedura corrispondente nel prodotto testato. Una volta aggiunto l'attributo [TestMethod] al codice di test, Visual Studio lo riconoscerà come unit test e visualizzerà la funzione nella finestra Test Manager, come illustrato nella figura 8.
[TestMethod()]
public void AdditionTest()
{
Math target = new Math();
int x = 5;
int y = 5;
int expected = 10;
int actual;
actual = target.Addition(x, y);
Assert.AreEqual(expected, actual,
"Math.Addition did not return the expected value.");
Esempio di codice 1. Unit test semplice
.gif)
Figura 8. Gestione dei test in Visual Studio
Con Test Manager è possibile selezionare ed eseguire unit test, nonché raggrupparli, filtrarli e organizzarli in un elenco. Ogni test gestito tramite Test Manager può avere una serie di elementi di lavoro associati, nonché altri metadati tra cui priorità, proprietario e nome classe.
Code coverage
Non sarebbe utile poter disporre di indicazioni chiare sulla quantità di codice effettivamente esercitato durante l'esecuzione di uno unit test? Questo tipo di analisi è definita code coverage. Le edizioni Team Edition for Software Developers e Team Edition for Software Testers consentono di eseguire gli unit test e di verificare le righe di codice eseguite durante i test. I risultati indicano gli altri unit test che potrebbero essere richiesti per garantire la verifica di tutte le righe di codice, oltre che per attestare la completezza delle procedure di testing. Nelle figure 9 e 10 sono riepilogati i risultati dell'analisi code coverage. Nella figura 9 le righe di codice evidenziate in verde rappresentano quelle eseguite durante lo unit test, mentre le righe in rosso indicano il codice che non è stato eseguito.
.gif)
Figura 9. Risultati dell'analisi code coverage nella finestra del codice
.gif)
Figura 10. Statistiche dell'analisi code coverage
Team Edition for Software Testers
Per far fronte alle sfide imposte dalla necessità di realizzare soluzioni di business in modo sempre più rapido, spesso prevale la tentazione di saltare il passaggio del controllo qualità del software. Inoltre, le organizzazioni che implementano una fase di testing per i progetti di sviluppo software spesso non dispongono di una vasta scelta di strumenti integrati a supporto delle esigenze di testing, finendo con l'essere obbligate ad acquistare soluzioni di testing software molto costose e non perfettamente integrate. Per rispondere a queste necessità, Microsoft ha messo a punto una serie di strumenti di testing integrati per sviluppatori e tester.
Abbiamo già visto in che modo gli sviluppatori possono accedere a un'infrastruttura di unit test integrata. L'edizione Team Edition for Software Testers rappresenta un ulteriore passo avanti, offrendo capacità di testing aggiuntive e una console di gestione per l'amministrazione, l'esecuzione e la verifica dei test. Nella tabella 3 sono elencati i test che è possibile creare, gestire ed eseguire con l'edizione for Software Testers.
| Tabella 3. Tipi di test di Team System |
|
Tipo di test
|
Descrizione
|
|
Unit test
|
Gli unit test sono parti di codice che consentono di testare le funzioni e i metodi dell'applicazione e vengono utilizzati per il testing di codice sorgente esistente, oltre a svolgere un ruolo essenziale per lo sviluppo orientato al testing.
|
|
Test Web
|
I test Web permettono di registrare l'attività relativa a una determinata pagina Web. Una volta effettuata la registrazione, è possibile modificare il test Web, convertirlo in codice e aggiungere regole di convalida ed estrazione ai risultati restituiti per ciascuna richiesta.
|
|
Test ordinati
|
I test ordinati consentono di raggruppare e ordinare in sequenza un numero qualsiasi di altri unit test o test Web.
|
|
Test di carico
|
Con i test di carico è possibile riprodurre in continuazione qualsiasi combinazione di test Web e unit test, in base a un modello di carico definito dall'utente. È anche possibile specificare caratteristiche di carico quali il numero di utenti simultanei, il tipo di browser e le caratteristiche della linea di comunicazione.
|
|
Test manuali
|
I test manuali definiscono una serie di operazioni manuali che devono essere eseguite da un tester per convalidare alcune funzionalità di un'applicazione. Team System offre un meccanismo per la definizione dei test manuali (in formato Word o di testo). Inoltre, questi test possono essere gestiti ed eseguiti insieme ad altri tipi di test.
|
|
Test generici
|
Un test generico è un programma esistente progettato per essere utilizzato come test in Visual Studio.
|
Visual Studio Team Foundation Server
Team Foundation Server offre il set di funzionalità più significativo fornito da Team System e consente di agevolare il lavoro dell'intero team garantendo un nuovo sistema di controllo del codice sorgente, capacità di gestione degli elementi di lavoro, automazione delle build, analisi e reporting integrati e un sito di progetto integrato per la collaborazione, oltre a fornire funzionalità per la gestione dei progetti perfettamente integrate con Microsoft Project e Microsoft Excel 2003.
Gestione del controllo del codice sorgente
Microsoft Visual SourceSafe (VSS) è uno dei sistemi più comuni per il controllo del codice sorgente pensato espressamente per gli sviluppatori Microsoft e, nel corso degli anni, ha ricoperto un ruolo sempre più importante per gli sviluppatori software. VSS, tuttavia, non era un prodotto noto per la sua scalabilità, stabilità, affidabilità o capacità di funzionare al meglio su Internet e con fusi orari diversi. Con Visual Studio Team Foundation Server è ora disponibile un innovativo motore per il controllo del codice sorgente che consente di risolvere tutti questi problemi. I componenti server per il controllo del codice sorgente di Team Foundation si basano su Microsoft SQL Server 2005 e garantiscono una soluzione scalabile e ben congegnata che può essere utilizzata al meglio con HTTP e HTTPS e che supporta altre funzionalità, come il supporto per i fusi orari, pensate espressamente per agevolare il lavoro di team di sviluppo eterogenei dislocati in diversi paesi. La soluzione per il controllo del codice sorgente offerta da Team Foundation riveste inoltre un ruolo particolarmente importante nel processo di sviluppo software, supportando i criteri di archiviazione, vale a dire le regole che disciplinano il processo di archiviazione. Ad esempio, è possibile richiedere agli sviluppatori di associare un'operazione di archiviazione ad almeno un elemento di lavoro prima del processo di archiviazione, contribuendo in tal modo a stabilire la tracciabilità tra gli elementi di lavoro e l'effettivo progetto di sviluppo completato. È anche possibile creare criteri di archiviazione che richiedono l'esecuzione dell'analisi del codice o addirittura l'esecuzione di tutti gli unit test prima dell'operazione di archiviazione. Se uno sviluppatore deve eseguire l'override di questi criteri, può essere automaticamente inviato un messaggio e-mail di notifica ai membri del team, per spiegare l'eccezione. Nelle figure 11 e 12 viene illustrato in che modo le note e i criteri di archiviazione possono essere controllati dagli amministratori del progetto.
.gif)
Figura 11. Aggiunta di criteri di archiviazione
.gif)
Figura 12. Aggiunta di note di archiviazione
Un'altra importante caratteristica del controllo del codice sorgente di Team Foundation è la sospensione, che permette di memorizzare il codice estratto in un'"area di sospensione" sul server, dove potrà essere mantenuto finché non è necessario utilizzarlo. Essenzialmente, in questo modo è possibile archiviare il codice in corso di progettazione direttamente sul server, senza sovrascrivere o danneggiare il codice esistente nella struttura attiva. Si tratta di una funzionalità particolarmente utile se è necessario utilizzare più computer, trasferire parzialmente un lavoro completato a un altro sviluppatore o diventare immediatamente operativi su un progetto ad alta priorità con l'esigenza di trasferire rapidamente le modifiche.
Gestione degli elementi di lavoro
Come descritto in precedenza, un elemento di lavoro è un'"operazione" che può essere assegnata e completata da un membro del team. Al livello più semplice, potrebbe essere una semplice operazione con una normale transizione dello stato, come "aperto" e "chiuso". Tuttavia, alla maggior parte dei progetti sono associati diversi tipi di elementi di lavoro, ognuno con caratteristiche proprie e specifici stati e transizioni del flusso di lavoro. Altri esempi di elementi di lavoro potrebbero includere errori, problemi, rischi o addirittura funzionalità. Tutti gli elementi di lavoro, indipendentemente dal tipo, sono archiviati in Team System. Quando si crea un nuovo progetto, la definizione determinerà anche il numero e il tipo di elementi di lavoro che sarà possibile creare. Ogni tipo di elemento di lavoro può avere transizioni e stati specifici e, in linea generale, ogni elemento di lavoro può essere assegnato a un utente, fornendo informazioni quali l'iterazione della destinazione o la release, la priorità e così via. Gli elementi di lavoro possono inoltre essere collegati ad altri elementi di lavoro, file del sistema per il controllo del codice sorgente e addirittura un insieme di modifiche all'interno del sistema di controllo. La possibilità di collegare gli elementi di lavoro, creando un collegamento anche tra diversi elementi come file e codice sorgente, garantisce la tracciabilità necessaria per quasi tutti i progetti di sviluppo software. Si tratta in ogni caso di un modello estremamente estensibile ed è possibile apportare tutte le modifiche richieste per supportare le specifiche esigenze del progetto.
.gif)
Figura 13. Esempio dell'utilizzo degli elementi di lavoro per la tracciabilità
Team System offre un'ampia gamma di elementi di lavoro con cui è possibile interagire utilizzando molti strumenti differenti, da Microsoft Project, Microsoft Excel e Visual Studio a Team Explorer, come illustrato nelle figure 14 e 15.
.gif)
Figura 14. Definizione di elementi di lavoro in Visual Studio
.gif)
Figura 15. Elementi di lavoro in Excel
Automazione delle build
L'automazione delle build è una best practice estremamente importante per i team di sviluppo software. Le funzionalità di automazione di Team System sono disponibili in Team Foundation Build, che ottimizza MSBuild, può eseguire unit test e analisi del codice associati, rilasciare build su un file server e pubblicare report di generazione per il resto del team. I risultati e i log di Team Foundation Build possono essere propagati al data warehouse di Team System per il reporting e l'analisi. Inoltre, Team Foundation Build si integra perfettamente con altri strumenti di Team System come il sistema per il controllo del codice sorgente e la gestione degli elementi di lavoro.
Con Team System, è possibile disporre di molti tipi di generazione diversi definibili e personalizzabili in base alle specifiche esigenze. A tale scopo, in Team System è disponibile un'apposita procedura guidata, come illustrato nella figura 16.
.gif)
Figura 16. Definizione di un nuovo tipo di generazione
I risultati di tutte le generazioni sono gestiti e possono essere visualizzati direttamente da Visual Studio o attraverso report di generazione. È di fondamentale importanza notare che è possibile configurare molti computer di generazione per eseguire il processo di generazione, nonché avviare il processo di generazione tramite l'interfaccia grafica o la riga di comando. È inoltre possibile configurare Team System in modo da notificare i risultati delle operazioni di generazione via e-mail, come illustrato nella figura 17.
.gif)
Figura 17. Configurazione di avvisi per gli eventi di generazione
Reporting
Non sarebbe utile poter generare automaticamente un report che dimostra la rapidità con cui il team opera di settimana in settimana, sulla base delle attività effettivamente svolte? Potrebbe sembrare impossibile, ma con le funzionalità di reporting di Team Foundation è possibile farlo. Basato su SQL Server 2005, Team Foundation consente infatti di memorizzare tutti i dettagli richiesti su elementi di lavoro, attributi di qualità, risultati di testing e risultati di generazione. Tutte queste informazioni vengono aggregate con SQL Server Analysis Services e sono strettamente correlate alle funzionalità di reporting di Team System. In realtà, i report forniti da Team System sono creati con SQL 2005 Reporting Services, vale a dire che è possibile modificare i report esistenti e crearne di nuovi in base alle specifiche esigenze.
Con Team System sono disponibili decine di report (di cui viene riportato un esempio nella figura 18) che fanno parte dei modelli di progetto di Team System utilizzati durante la creazione dei nuovi progetti. Per la personalizzazione dei modelli di progetto di Team System per creare tipi di elementi di lavoro personalizzati o modificare le definizioni degli elementi di lavoro esistenti, è consigliabile personalizzare i report predefiniti.
.gif)
Figura 18. Report di esempio
Sito del progetto
Quando si crea un nuovo progetto di Team System, viene chiesto di creare un nuovo sito Microsoft Windows SharePoint per ottimizzare la collaborazione per il progetto. Microsoft Windows SharePoint Services offre funzionalità per l'archiviazione e la gestione della documentazione creata dal team per uno specifico progetto. Quando si definisce il modello di progetto di Team System, vengono definiti anche la struttura e il contenuto del sito SharePoint, fino al livello di dettaglio della struttura della raccolta di documenti e dei modelli di documento. In realtà, è possibile configurare Team System per creare un sito del portale del progetto contenente tutti gli elementi da compilare nell'ambito del progetto, garantendo in tal modo che vengano resi disponibili gli elementi giusti nel momento giusto.
Il sito Windows SharePoint include inoltre una serie di Web part che permettono di visualizzare i report direttamente all'interno del sito. Si tratta di una funzionalità molto importante, dal momento che in questo modo i responsabili di progetto che non si occupano di sviluppo e non dispongono di Visual Studio possono visualizzare tutti i dettagli di cui hanno bisogno sullo stato e i diversi aspetti del progetto direttamente dal browser.
.gif)
Figura 19. Sito del progetto
Gestione di progetti
In genere, i project manager utilizzano Microsoft Project o Microsoft Excel per gestire le operazioni da svolgere. Se si sceglie di utilizzare Team System, questo vuol dire essere in grado di gestire gli elementi di lavori di diverso tipo all'interno del team. Visual Studio Team System fornisce infatti un'interfaccia incorporata che consente ai project manager di interagire con gli elementi di lavoro. Tuttavia, in molti casi, è molto più naturale che i project manager utilizzino gli strumenti di uso quotidiano per svolgere il proprio lavoro. Proprio per questo motivo, Team System consente di sincronizzare gli elementi di lavoro con Microsoft Excel e Microsoft Project, due strumenti in cui i project manager sono liberi di assegnare e monitorare tutti gli elementi di lavoro (indipendentemente dal tipo) in modo naturale e produttivo.
Anche i report sono particolarmente importanti per i project manager. Con Team System, sarà possibile utilizzare decine di report predefiniti disponibili con il prodotto, oltre a strumenti di analisi come Microsoft Excel per connettersi al data warehouse di Team System per analizzare i dati di progetto. I project manager possono inoltre utilizzare le funzionalità del sito Windows SharePoint create per i diversi progetti di Team System per agevolare la comunicazione e gestire tutti gli elementi e i documenti relativi ai progetti.
Estensibilità e personalizzazione di Team System
Come descritto in precedenza, Team System non è soltanto un set di strumenti, ma una vera e propria piattaforma. In questo documento non verrà discusso in dettaglio l'argomento dell'estensibilità, ma ci limiteremo a riepilogare le aree in cui è possibile estendere Team System. Nella seguente tabella viene riportata una panoramica di queste opzioni.
| Tabella 4. Riepilogo delle caratteristiche di estensibilità di Team System |
|
Area di personalizzazione
|
Descrizione
|
|
Modelli di progetto
|
Durante la creazione di un nuovo progetto di Team System viene utilizzato un modello di progetto che definisce tutti gli aspetti, inclusi report, definizioni degli elementi di lavoro, criteri per il controllo del codice sorgente, struttura e contenuto di Windows SharePoint Services, guida ai processi e autorizzazioni. È possibile definire modelli di progetto personalizzati in base alle specifiche esigenze organizzative o di progetto. In Team System non sono disponibili strumenti per la personalizzazione di questi modelli, che pertanto devono essere modificati tramite l'editor XML comunemente utilizzato.
|
|
Elementi di lavoro
|
È possibile definire elementi di lavoro personalizzati o modificare quelli esistenti utilizzando un normale editor XML.
|
|
Controllo del codice sorgente
|
Per ogni progetto di Team System, è possibile definire criteri per il controllo del codice sorgente e campi per le note di archiviazione.
|
|
Tipi di generazione
|
In Visual Studio Team System possono essere definiti tipi di generazione personalizzati.
|
|
Sito Windows SharePoint Services
|
I documenti contenuti nel sito Windows SharePoint possono essere modificati. È inoltre possibile ottimizzare le funzionalità di personalizzazione di Windows SharePoint Services per incrementare la collaborazione all'interno del team.
|
|
Report
|
È possibile modificare i report esistenti o crearne di nuovi utilizzando SQL 2005 Reporting Services, che permette di ottimizzare le informazioni archiviate nel data warehouse di Team System.
|
|
Toolkit per l'estensibilità
|
Per informazioni dettagliate sulle opzioni di estensibilità, è possibile scaricare il relativo toolkit per Visual Studio Team System, in cui viene spiegato come creare tipi di test personalizzati ed esplorare il modello di oggetti di Team System per opzioni di personalizzazione ancora più estese.
|
Conclusioni
Team System è innegabilmente un prodotto innovativo, che offre un'ampia gamma di strumenti diversi per supportare tutti gli aspetti del ciclo di sviluppo software. Quello che potrebbe non risultare ovvio è come adottare Team System all'interno dell'organizzazione. Quel che è certo è che la semplice implementazione di un set di strumenti non risolverà necessariamente tutti i problemi dell'azienda. Le funzionalità offerte da Team System dovrebbero rientrare in una visione molto più ampia dei processi di sviluppo software nell'ambito dello specifico ambiente esistente. Team System dovrebbe essere utilizzato in modo da soddisfare al meglio le specifiche esigenze dell'organizzazione, e non viceversa.
Lo scopo di questo articolo non era approfondire una particolare funzionalità del prodotto, ma offrire una panoramica dettagliata dell'interazione tra i diversi componenti di Team System. Vi incoraggiamo ad approfondire personalmente la conoscenza delle aree del prodotto di maggiore interesse e di iniziare a valutare in che modo questa suite di strumenti integrata ed estensibile può contribuire alla produttività e all'affidabilità dei team di sviluppo software.