Come Microsoft contribuisce al successo dello sviluppo di applicazioni software

Microsoft è particolarmente interessata a contribuire al successo dei team di sviluppatori. Questo documento offre una panoramica dell'ampia gamma di strumenti Microsoft, ambienti di sviluppo, framework, esempi di codice e indicazioni su tutti gli aspetti relativi al ciclo di vita dello sviluppo software; e contribuisce alla progettazione, creazione e distribuzione di software di qualità, anche da parte di team.

Nella Figura 1 viene illustrato il ciclo di vita dello sviluppo software, dalla raccolta iniziale dei requisiti dei clienti alla release del software e il suo sviluppo iterativo continuato, manutenzione e modifica post distribuzione. 

ciclo di vita dello sviluppo software

Figura 1. Il ciclo di vita dello sviluppo software

Le sezioni seguenti si concentrano su ciascuna delle aree primarie del ciclo di vita dello sviluppo software e aiutano a comprendere le tecnologie e gli strumenti Microsoft a disposizione e come questi ultimi possono essere di aiuto in ciascuna fase del processo di progettazione e sviluppo.

Pianificazione e analisi dei requisiti

Mentre questa è tipicamente un'attività relativa all'architettura, i team di sviluppo avranno la responsabilità di convertire i requisiti dei clienti in una progettazione pratica che possa essere implementata all'interno dei vincoli di costi e di tempo e funzionerà bene nell'hardware e nell'infrastruttura disponibili.

La raccolta e l'analisi dei requisiti costituisce la prima fase e generalmente questa implica strumenti e applicazioni come i programmi di Microsoft Office: Word, Excel, Visio, Project. I requisiti possono essere forniti sotto forma di documenti, diagrammi, schemi, modelli e descrizioni dell'ambiente di runtime. Microsoft Project e Microsoft Excel sono strumenti ideali per la progettazione di scale cronologiche e per la determinazione dei costi di progetti di sviluppo in questa fase iniziale. Nella Figura 2 viene illustrato un esempio della progettazione di un progetto mediante Microsoft Project.

Strumenti di pianificazione progetti e determinazione costi 

Figura 2. Strumenti Microsoft di pianificazione progetti e determinazione costi

Architettura, progettazione e modellazione

 Quando si tratta di progettazione più dettagliata, Microsoft Visual Studio comprende una gamma di strumenti che semplificano notevolmente la progettazione dell'architettura di un'applicazione e la creazione di dipendenze di distribuzione e del modello. Può essere utilizzato per modellare la progettazione generale e la distribuzione dei componenti, quindi sovrapporla su un modello dell'infrastruttura hardware per convalidare la praticità della progettazione. Può anche essere utilizzato per generare dipendenza del componente e diagrammi di interconnessione e per modellare schemi di database quali parte del piano dettagliato. Nella Figura 3 viene illustrato il model designer (progettazione del modello) di Visual Studio 2010.

Strumenti per l'architettura e la modellazione in Visual Studio 

Figura 3. Strumenti per l'architettura e la modellazione in Visual Studio

Microsoft fornisce inoltre indicazioni che aiutano nella fase di progettazione. Questo include indicazioni generali sulla pratica di architett,ura, informazioni sulle progettazioni comuni per tipi diversi di applicazioni e una guida alla valutazione dei compromessi necessari per garantire che il software soddisfi i requisiti. Ad esempio, nella Figura 4 viene illustrata una tipica architettura di applicazioni. Non tutte le applicazioni conterranno tutte queste funzionalità.

Una tipica architettura delle applicazioni a più livelli

Figura 4. Una tipica architettura delle applicazioni a più livelli

Sono inoltre disponibili indicazioni più dettagliate sulla progettazione di applicazioni per utilizzare tecnologie specifiche, che vanno da consigli sui requisiti di infrastruttura e di rete a informazioni più specifiche su fattori di distribuzione e di amministrazione che possono influire sulla progettazione. Ad esempio, la documentazione per i sistemi operativi Windows include indicazioni su layout di rete, posizionamento del server, requisiti di sistema e indicazioni sulla distribuzione per applicazioni da eseguire sul server. Tutte queste indicazioni sono importanti durante la progettazione di applicazioni software da eseguire sulla piattaforma Microsoft.

Tecnologie, strumenti e linguaggi di sviluppo

Microsoft fornisce una gamma di strumenti e ambienti di sviluppo progettati per rendere più semplice e più efficiente la scrittura del codice per diverse tecnologie e tipi di applicazioni. La scelta dell'ambiente di sviluppo dipende dal tipo di applicazione creata e dai linguaggi del codice utilizzati. Nella Figura 5 vengono illustrati alcuni degli strumenti e degli ambienti di sviluppo, di tecnologie e di linguaggi di sviluppo disponibili da Microsoft, e il tipo di applicazioni a cui sono destinati.

Alcune delle tecnologie, degli strumenti e dei linguaggi disponibili per gli sviluppatori 

Figura 5. Alcune delle tecnologie, degli strumenti e dei linguaggi disponibili utilizzati durante lo sviluppo

Sebbene esistano molte diverse combinazioni di tecnologie e linguaggi, la maggior parte delle applicazioni sono create per essere eseguite su Microsoft .NET Framework. Microsoft .NET Framework è un livello sopra il sistema operativo e l'hardware che fornisce una piattaforma unificata per il codice. Indifferentemente dal linguaggio del codice .NET utilizzato (quali, ad esempio, C# o Visual Basic), il codice compila un formato standard denominato Microsoft Intermediate Language (MSIL) eseguito dai componenti di runtime del .NET Framework. Nella Figura 6 viene illustrata l'architettura e il processo.

Compilazione del codice ed esecuzione su .NET Framework.

Figura 6. Compilazione del codice ed esecuzione su .NET Framework

Questa standardizzazione del framework di runtime e di sviluppo facilita la scrittura del codice perché nasconde molta della complessità dei sistemi sottostanti. Inoltre semplifica lavorare in linguaggi diversi dato che tutti utilizzano lo stesso set standard di librerie di codici, oggetti e interfacce di programmazione.

Scrittura, compilazione e verifica del codice

In termini di sviluppo, Microsoft Visual Studio è lo strumento principale. È disponibile in una vasta gamma di versioni, comprese le edizioni gratuite di Express per tipi specifici di applicazioni. Visual Studio fornisce un ambiente di sviluppo integrato (IDE) che può essere utilizzato per creare progetti e soluzioni, scrivere codici, compilare ed eseguire il codice, eseguire il debug e risolvere gli errori. Visual Studio contiene modelli per molti tipi di applicazioni tipiche e tipi supplementari sono supportati da modelli scaricabili e framework. Nella Figura 7 vengono illustrate alcune di questi tipi di applicazioni.

Selezione di un tipo di progetto applicazione in Visual Studio 2010 

Figura 7. Selezione di un tipo di progetto in Visual Studio 2010

Scrittura di codice in Visual Studio

Visual Studio comprende molte funzionalità che aiutano il processo di sviluppo. Queste comprendono elenchi popup di oggetti, classi e membri di classi; funzionalità di guida integrate e documentazione; procedure guidate per azioni comuni; e supporto completo per la personalizzazione e il collegamento di strumenti supplementari. Visual Studio è in grado di soddisfare tutte le attività di sviluppo principali, aggiungendo specifici plug-in preferiti per migliorare ulteriormente la produttività durante la creazione di applicazioni. Nella Figura 8 viene illustrato l'ambiente di sviluppo integrato (IDE) per la creazione di applicazioni Silverlight in Visual Studio.

Sviluppo di un'applicazione Silverlight in Visual Studio 2010 

Figura 8. Sviluppo di un'applicazione Silverlight in Visual Studio 2010

I tipi di applicazioni disponibili in Visual Studio comprendono molto più delle comuni applicazioni per il Web, per il desktop, per la cloud e per i telefoni. Ad esempio, Visual Studio può essere utilizzato per sviluppare librerie di classi, framework, componenti e estensioni per applicazione Office, applicazioni basate sul flusso di lavoro e applicazioni SharePoint. Nella Figura 9 viene illustrato l'ambiente di sviluppo per applicazioni SharePoint.

Sviluppo di un'applicazione SharePoint in Visual Studio 2010 

Figura 9. Sviluppo di un'applicazione SharePoint in Visual Studio 2010

La maggior parte delle applicazioni aziendali utilizzano un database come fonte di informazioni, e Visual Studio comprende strumenti che semplificano la creazione di database, progettano gli schemi per le tabelle, creano relazioni e persino popolano le tabelle con dati campione per i test. Può collegarsi alla maggior parte dei server database, compresa la gamma completa delle edizioni di Microsoft SQL Server Database Edition. Nella Figura 10 viene illustrato il modo in cui Visual Studio consente di scrivere stored procedure per un database.

Utilizzo di un database in Visual Studio 2010 

Figura 10. Utilizzo di un database in Visual Studio 2010

Quando si sviluppa, si deve spesso interfacciarsi con componenti e framework scritti da altri team di sviluppatori o acquisiti da fornitori terzi. Comprendere le interfacce ed essere capaci di investigare la struttura oggetti di questi componenti e framework è utile. Visual Studio include funzionalità per esplorare classi, oggetti, componenti e framework; comprese le classi che formano la libreria di classi .NET. Nella Figura 11 viene illustrato Visual Studio.

Visualizzatore oggetti di Visual Studio 2010 

Figura 11. Visualizzatore oggetti in Visual Studio 2010

Debug, traccia e test in Visual Studio

A seconda della versione, Visual Studio comprende inoltre strumenti per eseguire gli unit test, eseguire l'analisi del codice per massimizzare l'efficienza di runtime, visualizzare il modo in cui il codice viene eseguito nell'hardware sottostante, ad esempio, nella Figura 12 vengono illustrate le funzioni di analisi del codice di runtime di Visual Studio in azione.

Visual Studio 2010 mostra l'analisi del codice durante l'esecuzione 

Figura 12. Microsoft Visual Studio 2010 mostra l'analisi del codice durante l'esecuzione

Visual Studio consente inoltre di scoprire e correggere gli errori nel codice che si verificano durante la compilazione del codice e in fase di esecuzione. Il compilatore genera dettagli relativi agli avvisi e ai messaggi di errore che consentono di evitare tipi comuni di errori e aggiornare il codice per risolvere gli errori. Il meccanismo di rilevamento è potente e configurabile, in modo da poter scegliere quali tipi di avvisi vengono notificati. Nella Figura 13 viene illustrato l'elenco errori che Visual Studio visualizza durante la compilazione di un'applicazione.

L'elenco errori del compilatore di Microsoft Visual Studio 2010 

Figura 13. L'elenco errori del compilatore di Microsoft Visual Studio 2010

Una delle attività più difficili quando si effettua il debug di un'applicazione è trovare dove si verifica un errore. Oltre alla comune modalità di esecuzione riga per riga che consente di navigare nel codice durante l'esecuzione, Visual Studio 2010 comprende la funzionalità IntelliTrace che consente di raccogliere molte informazioni riguardo al processo di esecuzione e di ripetere le circostanze che hanno causato l'errore. Nella Figura 14 viene illustrata la funzionalità IntelliTrace di Visual Studio.

IntelliTrace di Visual Studio in azione 

Figura 14. IntelliTrace di Visual Studio in azione

Distribuzione di applicazioni con Visual Studio

Visual Studio contiene una gamma di strumenti e funzionalità che consentono di creare pacchetti di installazione e di distribuzione, e distribuiscono applicazioni direttamente. La compilazione per il rilascio comprende funzionalità per specificare tutte le informazioni richieste per gli assembly e le risorse; e può offuscare il codice per rendere più difficile la sua decodificazione, creare pacchetti Microsoft Installer (MSI), creare file della guida e creare molti altri tipi di pacchetti di distribuzione. Per applicazioni che vengono distribuite direttamente a un host runtime, quali ad esempio applicazioni Web, Visual Studio comprende gli strumenti di distribuzione Web, mostrati nella Figura 15.

Opzioni di distribuzione Web in Visual Studio 2010 

Figura 15. Opzioni di distribuzione Web in Visual Studio 2010

Altri strumenti di sviluppo del codice

Altri strumenti di sviluppo e ambienti sono disponibili per attività più specifiche, tipi di applicazione o scenari di sviluppo specifici. Ad esempio, Microsoft WebMatrix (mostrato nella Figura 16) è uno strumento gratuito per creare applicazioni Web e siti Web mediante la tecnologia pagine Web ASP.NET. WebMatrix può scrivere applicazioni in C#, Visual Basic o altri linguaggi di terze parti, tra cui PHP. Fornisce inoltre un ambiente integrato che comprende funzionalità per lavorare con database e per distribuire l'applicazione a un provider di hosting Web.

Ambiente di sviluppo WebMatrix per applicazioni Web e siti Web. 

Figura 16. Ambiente di sviluppo WebMatrix per applicazioni Web e siti Web.

Per lo sviluppo di applicazioni eseguite su Windows Phone, è possibile utilizzare gli strumenti di sviluppo gratuiti di Windows Phone. Questi comprendono una versione adattata specificatamente di Visual Studio e altri strumenti quali un ambiente di sviluppo XNA per la programmazione di giochi, Expression Blend per la creazione di interfacce interattive, utilità per la distribuzione di applicazioni al telefono e modelli che si integrano con le versioni complete di Visual Studio. Nella Figura 17 viene illustrata un'applicazione Silverlight per Windows Phone in fase di sviluppo.

Sviluppo di un'applicazione Silverlight per Windows Phone 

Figura 17. Sviluppo di un'applicazione Silverlight per Windows Phone

Expression Blend è uno di una famiglia di strumenti mirato ai progettisti di grafica e interfacce di applicazioni, ma questi strumenti vengono comunemente utilizzati anche per le attività di sviluppo. Ad esempio, Expression Blend fornisce un ottimo ambiente di sviluppo per applicazioni Silverlight per il desktop, Web e per i telefoni e comprend transizioni e altri effetti di movimento e composizionali grafici. Nella Figura 18 viene illustrato lo sviluppo di un'applicazione Windows Phone in Expression Blend.

Creazione di un'interfaccia per un'applicazione Silverlight per Windows Phone in Expression Blend 

Figura 18. Creazione di un'interfaccia per un'applicazione Silverlight per Windows Phone in Expression Blend

Tra i molti altri strumenti di sviluppo ci sono quelli per controllare la validità di un codice, per eseguire analisi runtime e diagnostica, e creare pacchetti di distribuzione e documentazione. Persino applicazioni quali Internet Explorer contengono strumenti di sviluppo che possono essere utili durante il debug e il test di applicazioni Web e codice script sul lato client.   

Infine, Microsoft fornisce una gamma completa di documentazione e istruzioni su tutti gli strumenti di sviluppo, tecnologie e linguaggi. Microsoft Developer Network (MSDN) è la fonte primaria di informazioni per chi effettua attività di sviluppo. E’ documentazione teorica per facilitare la comprensione delle tecnologie e istruzioni focalizzate sull'utilizzo degli strumenti e dei linguaggi. Tutti i Developer Center comprendono video, guide dettagliate, codice campione e implementazioni di riferimento che semplificano l'apprendimento e consentono agli sviluppatori di iniziare rapidamente.

Recensioni, gestione di progetti e codice e reporting

Quando si lavora come parte di un team, le persone devono condividere e agire in base alle informazioni. Microsoft fornisce gli strumenti e le istruzioni per aiutare le persone ad avere successo in un ambiente di team, velocizzare lo sviluppo e gestire il ciclo di vita dello sviluppo. Gli strumenti principali per questo sono Team Foundation Server (TFS) e SharePoint Server. Entrambi gli strumenti sono archivi che possono gestire il controllo delle versioni, fornire accesso tra le diverse reti e aiutare a rispettare i tempi stabiliti per completare un progetto.

Team Foundation Server ha principalmente lo scopo di attività di sviluppo e di gestione di progetti. Contiene tantissime funzioni per creare archivi del codice con controllo completo delle versioni, funzionalità di archiviazione ed estrazione, e fork del codice e collegamenti per attivare le build regolari dell'intera applicazione. Fornisce inoltre elementi di lavoro basati su modelli configurabili, flusso di lavoro, reporting e molte altre funzioni correlate. Costituisce un ambiente ideale per applicazioni di grosse dimensioni e complesse durante lo sviluppo, ma funziona anche altrettanto bene per team e progetti più piccoli.

I membri del team si collegano a TFS da Visual Studio o altri strumenti compatibili, che gestiscono automaticamente l'archiviazione e l'esportazione di file, l'accesso di sola lettura ai file e la funzionalità di creare e connettersi a snapshot dell'archivio (come illustrato nella Figura 19).

Collegamento a Team Foundation Server da Visual Studio 2010 

Figura 19. Collegamento a Team Foundation Server da Visual Studio 2010

Durante la fase iniziale di progettazione dell'applicazione e in tutto il ciclo di vita dello sviluppo, vari membri del team creano e mantengono archivi in TFS che descrivono le attività, il feedback, i piani e altre informazioni utili relative al progetto. E’ possibile visualizzare timing e informazioni sul completamento delle attività in modo che sia i singoli membri del team che i manager possano vedere immediatamente lo stato del ciclo di sviluppo del progetto. Nella Figura 20 è illustrata la panoramica sui casi per un progetto in TFS.

Utilizzo di casi in TFS per monitorare e gestire il ciclo di sviluppo 

Figura 20. Utilizzo di TFS per monitorare e gestire il ciclo di sviluppo

TFS può fornire inoltre moltissime informazioni sul progresso generale, sullo stato del build e sui bug nel software tramite una serie di portali. Risulta particolarmente utile per monitorare la qualità del software a livello di test e debug in qualsiasi fase del processo di sviluppo. Nella Figura 21 vengono illustrati alcuni dei report grafici che TFS può generare.

Utilizzo di TFS per monitorare la qualità del software in fase di sviluppo 

Figura 21. Utilizzo di TFS per monitorare la qualità del software in fase di sviluppo

SharePoint è il secondo tipo di archivio di Microsoft. Si tratta principalmente di un archivio di documenti e informazioni, ed è più adatto a gestire documentazione per progetti. Offre funzionalità di integrazione con molte applicazioni Microsoft Office, rendendolo un archivio ideale per architetti, progettisti e responsabili di progetto da utilizzare lungo tutto il ciclo di vita dello sviluppo del software. Fornisce inoltre moltissimi modelli di archivi incorporati e scaricabili, funzionalità complete per la personalizzazione, e disponibilità lungo le reti e Internet per un ampio accesso dai team dislocati in diverse aree geografiche. Nella Figura 22 viene illustrato SharePoint utilizzato come un archivio di documentazione.

SharePoint utilizzato come un archivio di documentazione e informazioni 

Figura 22. SharePoint utilizzato come un archivio di documentazione e informazioni

Microsoft fornisce un'ampia gamma di software e strumenti per il supporto della progettazione del software, lo sviluppo e i processi di distribuzione. Per architetti e progettisti, sono disponibili strumenti per modellare applicazioni e ambienti runtime, gestire la documentazione e interagire con le parti interessate.

Per le attività di sviluppo, strumenti di sviluppo integrati e autonomi per esperti forniscono il livello più alto di supporto, facilità di utilizzo e estensibilità per semplificare tutte le fasi del processo quanto più possibile. Esistono strumenti disponibili per la scrittura del codice e il lavoro con database; e per la compilazione, il test, l’analisi e il debugging.

Altri strumenti e ambienti per l'utilizzo lungo il processo di sviluppo comprendono archivi di codice e documenti, strumenti di gestione dei progetti e strumenti di reporting. Inoltre, Microsoft fornisce una vasta gamma di documentazione e di risorse per l'architettura, lo sviluppo, l'amministrazione e il test, per aiutare gli sviluppatori a progettare, creare e eseguire un software migliore.