La gestione del ciclo di sviluppo secondo Microsoft

Adriano Venturini - S.E.D. Centro di Calcolo
Ricerca e sviluppo

Articoli0002
30 giugno 2005

Microsoft segna un altro passo avanti nelle tecnologie per lo sviluppo di applicazioni tipicamente enterprise.
Visual Studio Team Systems è l'etichetta sotto la quale Microsoft propone agli sviluppatori una serie di tool integrati nell'ambiente di sviluppo per gestire i progetti, definire i modelli e i componenti con diagrammi Uml, pianificare il lavoro di sviluppo in team e gestire i requisiti hardware e software e le connessioni di rete.
Chi sviluppa applicazioni sa che queste devono essere prima di tutto pensate, poi correttamente progettate, sviluppate, testate ed infine distribuite mantenendo il tutto, possibilmente, coerentemente colllegato.
Al giorno d'oggi molti team di sviluppo, anche di piccole o medie dimensioni, si sono attrezzati con strumenti che aiutano il ciclo di sviluppo come, ad esempio: Project per la pianificazione e l'assegnazione delle varie attività; Uml per definire le classi; tool vari per workflow e flussi applicativi; Visio per le strutture dati e la topologia di rete; Visual Studio 6.0 o Visual Studio 2003 per lo sviluppo ed il debug; tool specifici per gestire i test; Excel per analizzare i dati dei test; performance monitor da utilizzare durante l'effettuazione dei test; word per le relazioni; ed altri ancora.
Microsoft propone ... Visual Studio Team System il cui obiettivo è quello di fornire, in un unico strumento integrato, il supporto per gestire l'intero ciclo di sviluppo software. L'edizione 2005 è in avanzata fase di sviluppo e sarà rilasciata, con Visual Studio 2005 e il Framework .Net 2.0, entro il 2005.

Sono previste tre edizioni distinte ma integrate: Team Architect per il software architect e la progettazione visuale di soluzioni service-oriented; Team Developer per lo sviluppatore, comprende strumenti quali Code Analyzer, Code Profiler, Code Coverage; Team Test per la creazione di Unit text, test manuale, Web test, stress test. Tutti e tre gli strumenti si appoggiano a Team Foundation che centralizza le informazioni sul progetto e facilita l'integrazione con Excel, Project, SharePoint.

Architect Edition.
Tool per realizzare Architetture: disegnare le applicazioni pensando alla distribuzione.

Disegnare le applicazioni perchè siano distribuite in un ambiente complesso e’ sempre stata una delle sfide più difficili. Archited Edition offre ai progettisti di soluzioni complesse una serie di designer per facilitare il disegno, lo sviluppo e il deploy secondo quanto stabilito da Microsoft nella Microsoft Dynamic System Initiative (Dsi). (vedi Dsi e WhiteHorse su Microsoft TechNet)

La funzionalità Acd - Application Connection Designer - aiuta a definire e configurare le componenti che formano l'applicazione. Tramite una serie di prototipi predefiniti è possibile disegnare Web Service, Web application, Windows application, database. I diagrammi possone essere costruiti semplicemente trascinando e collegando i vari prototipi sulla lavagna virtuale oppure con operazioni di reverse engineering su applicazioni esistenti.

La funzionalità Ldd - Logical Datacenter Designer - serve per definire il diagramma dei server e ottenere informazioni per la fase di deployment reale. Si possono specificare e configurare i vari server, le tipologie di comunicazione, i flussi e i tipi di servizi abilitabili su ognuno. Ldd è integrato in Visual Studio e quindi riutilizzabile da qualunque membro del team di sviluppo. E' prevista una serie di tipologie di server predefiniti che può essere estesa secondo le necessità. Una volta definito il modello logico è possibile associare policy, constraint e settaggi applicativi a ogni server o comunicazione. Tali settaggi saranno poi impostati fisicamente nella fase di deployment.

La funzionalità System Designer da la possibilità di comporre e configurare sistemi in base alle componenti definite in Acd. Un sistema è l'unità di deployment e può essere aggregato ad altri sistemi. Si possono definire varie aggregazioni di componenti applicativi suddividendo il sistema in vari sottosistemi e prevedere varie tipologie di installazione.
Con questo designer si definiscono le varie pacchettizzazioni dell'applicazione che verranno distribuite.

La funzionalità Deployment Designer, definisce il mapping fra un sistema ed il logical datacenter. Vengono associate le applicazioni di un sistema definito ai vari server logici. In questa fase vengono validate tutte le regole e i constraint definiti nei vari modelli; vengono verificati i constraint definiti con Aed rispetto al datacenter che dovrà ospitare l'applicazione, così come tutti i protocolli di comunicazione fra le componenti applicative.
... inizio

Developer Edition.
Tool per l'analisi del codice.

La Developer Edition è destinata agli sviluppatori. Fornisce una serie di strumenti per analizzare il codice eliminando la necessità di strumenti di terze parti spesso poco integrati con Visual Studio.
I tool si dividono in due categorie: Code Analysis e Performance Analysis. Entrambe facilitano l’individuazione di problemi durante la fase di scrittura del codice evitando perdite di tempo durante i test.
Due sono i tool per eseguire verifiche statiche sul codice: PreFast e FxCop. Il primo serve per prevenire alcuni problemi comuni nel codice C/C++ come buffer overrun, null pointer, resource leak, memory leak; il secondo analizza il codice managed e riporta informazioni su eventuali problemi di violazione delle regole definite a priori.
Altri strumenti particolarmente utili sono Code Coverage che, integrato con il modulo di testing, consente di verificare quali flussi di codice sono stati eseguiti e testati e quali sono rimasti non coperti dal test. Diversamente dai software sul mercato, che iniettano codice di test all’interno del codice reale, questo strumento è integrato con l’ambiente di sviluppo risultando così più aderente all’esecuzione reale nel caso di test di performance e carichi.
Code Profiler consente di profilare il codice analizzando cosa succede durante il runtime: call-stack, vista sulle funzioni, grafico su chiamante/chiamato, allocazione degli oggetti in memoria, vista sull’allocazione degli oggetti del Garbage Collector, thread in esecuzione e così via. Ancora una volta il tutto è integrato all’interno dell’ambiente.
Una serie di wizard consentono di definire test sulle performance durante il profiling e ottenere dati o grafici sui risultati. Per esempio al termine di una profilazione è possibile sapere quante volte sono stati richiamati una funzione, un costruttore, un set di una proprietà.
Con la Developer Edition possono anche essere definite una serie di regole per eseguire il check-in di un componente software. Per esempio è possibile forzare lo sviluppatore a eseguire uno unit test del componente prima di poter rilasciare una versione del componente stesso.
... inizio

Team Test Edition.
Tool per test.

Destinata a chi effettua test di funzionamento e carico delle applicazioni, questa edizione è pensata per creare Unit Test, analizzare Code Coverage e creare, gestire o analizzare stress test.
Si possono creare stress test partendo da Unit Test oppure definendo test completi da zero.
È anche possibile, come accade oggi con Application Center Test, simulare il carico di lavoro da più macchine client verso Web service, applicazioni asp.net oppure componenti invocati tramite remoting. Terminato il test, si possono analizzare i risultati sulla copertura del codice, sulla profilazione dell’esecuzione e sui counter del performance monitor delle varie macchine coinvolte.
... inizio

Team Foundation.
La piattaforma aperta.

L’obiettivo di Team Foundation è fornire una piattaforma aperta utilizzabile da Project, Excel, Visual Studio e prodotti stand-alone con tutte le informazioni sul progetto: dalle task alle assegnazioni ai vari membri del team, dai sorgenti sotto controllo alle regole per poter fare il check-in, dai test definiti ai rispettivi risultati.
Si parte creando un nuovo project site, che verrà esposto anche tramite Sharepoint, in base a un template. Si prosegue aggiungendo tutto quello che serve per il progetto: definizione delle fasi, work items, tasks, owner di ogni task, documentazione, requisiti, richieste.Questo repository può essere interrogato con Project dal project manager, con Excel per quanto riguarda task e reportistica, con Visual Studio per tutto ciò che riguarda le attività elencate.
Tutti i prodotti lavorano con la Foundation leggendo o memorizzando i dati all’interno di essa. Per esempio uno stress test effettuato con Team Test memorizza i dati all’interno della foundation; con Excel è possibile estrarre dei grafici sull’andamento dei bug risolti. La Foundation contiene anche le regole per i vari sviluppatori che verranno imposte ai vari membri del team per effettuare operazioni di check-in o verifica del codice.
Tutte le operazioni di check-in e check-out vengono effettuate tramite la foundation che quindi rappresenta anche il nuovo Visual SourceSafe. Team Foundation tiene traccia dei vari work item, esegue il controllo dei sorgenti, consente di eseguire build schedulate, è la base per le analisi Olap e fornisce il portale (tramite Sharepoint) per tutti i membri del team di progetto.

Per Microsoft, "Visual Studio Team Systems" è il nuovo ambiente per gestire l’intero ciclo di vita di un’applicazione con un unico strumento integrato. È uno strumento complesso che richiede un team mentalmente preparato a gestire il software ed un periodo di tempo non breve per essere completamente assimilato.

Riferimenti: Visual Studio Team System, Visual Studio 2005, Microsoft Dynamic System Initiative e le nuove tecnologie Microsoft, si trovano sul sito Microsoft Msdn e Microsoft TechNet. Per chi lo desidera, sempre sul sito Microsoft Msdn, sono disponibili le presentazioni "dal vivo" tenute da esperti di tecnologie Microsoft. Per coloro che non hanno avuto la possibilità di seguire una presentazione (un Webcast), nella stessa sezione troveranno le registrazioni e le presentazioni dei Webcast passati.
... inizio