Condividi tramite


Analisi applicazione: informazioni che ogni sviluppatore deve conoscere

Sebastian Holst è responsabile della strategia di mercato e dei prodotti presso PreEmptive Solutions, società impegnata in soluzioni sulla sicurezza e sull'analisi dei dati per le applicazioni. Oltre al suo lavoro dedito alla compilazione di software, Holst ha lavorato attivamente presso enti preposti alla definizione di standard di settore e del computing come membro del Comitato consultivo W3C, dei comitati MMA su Privacy e Analytics, nonché come cofondatore del Compliance Consortium. Sebastian ha anche un blog, Applications are people too, in cui scrive le sue considerazioni sulle affinità e sulle manie delle persone, dei programmi e della cultura. Nel tempo libero sviluppa applicazioni mobili e collabora con studenti del liceo aiutandoli a svolgere la stessa attività.

Luglio 2012

Sebastian Holst illustra gli obiettivi e i vantaggi dell'analisi dei dati per le applicazioni.

Si applica a

Application Lifecycle Management, Visual Studio 2013, Team Foundation Server

Objectives

Requirements

Restrictions

Visual Studio 2012 and Application Analytics

Si provi a immaginare quanto più efficienti sarebbero gli sviluppatori se non dovessero indovinare le funzionalità necessarie e quelle che invece potrebbero essere tranquillamente deprecate. Quale sarebbe l'impatto sulla soddisfazione degli utenti se i dati dell'eccezione comprendenti il contesto di utilizzo venissero forniti prima che gli utenti avessero la possibilità di protestare? Come migliorerebbe la qualità del software se i piani di test venissero allineati ai modelli di utilizzo e alle preferenze utente effettive in fase di produzione? L'analisi dei dati dell'applicazione è il ramo appositamente studiato per trasformare questi scenari in realtà e soddisfare gli interessi specifici delle parti interessate dell'applicazione, ad esempio lo sviluppo, il test, i proprietari del prodotto, le operazioni e così via.

Diagramma dei cicli di Application Analytics

Figura 1: l'analisi dei dati per le applicazioni migliora sia lo sviluppo sia le operazioni offrendo una visione approfondita dell'utilizzo dell'applicazione e del comportamento degli utenti in piattaforme operative e di sviluppo consolidate.

Con l'analisi dei dati per le applicazioni è possibile integrare i dati sull'utilizzo dell'applicazione, il software per l'analisi dei dati basato sull'applicazione e l'euristica integrati nello sviluppo e nelle operazioni.

La gamma di soluzioni di analisi dei dati odierne è, come deve essere, basata sul cliente. Ad esempio, gli elementi essenziali del principale cliente Web Analytics sono il marketing e le vendite, di conseguenza l'attenzione viene posta sulla visualizzazione delle pagine, sui collegamenti selezionabili e sulle conversioni. Le soluzioni Web Analytics presentano aspetti comuni illustrati qui di seguito.

  • Obiettivi: monetizzazione delle proprietà del Web.

  • Requisiti: analisi dei visitatori, delle impressioni, dei collegamenti selezionabili e delle conversioni.

  • Restrizioni: adempimento degli obblighi in termini di privacy e prestazioni.

Nel gergo Agile, l'analisi dei dati per le applicazioni include soluzioni di analisi dei dati in cui il cliente principale è rappresentato da una o più "persone" dedite allo sviluppo di applicazioni che condividono obiettivi, requisiti e restrizioni comuni.

Obiettivi

Sviluppo basato sui feedback

Nel Manifesto Agile si afferma che, in termini di sviluppo, la massima priorità è soddisfare il cliente rilasciando software di valore, fin da subito e in maniera continua. In questo contesto, la riuscita dello sviluppo può essere misurata con precisione solo laddove gli utenti e le relative applicazioni trovano un punto di convergenza. L'analisi dei dati per le applicazioni offre un'esperienza empirica dell'utilizzo dell'applicazione e del comportamento dell'utente finale che, una volta integrata correttamente in un processo di sviluppo, è in grado di garantire:

  • Informazioni dettagliate sui requisiti degli utenti

  • Convalida delle priorità per lo sviluppo e

  • Misura obiettiva di correttezza e di completezza del piano di test.

Gli esempi includono:

  • Il programma Analisi utilizzo software di Microsoftè stato creato per garantire a tutti i clienti la possibilità di collaborare alla progettazione e allo sviluppo di prodotti Microsoft. Grazie a questo programma vengono raccolte informazioni sull'utilizzo dei programmi Microsoft nel cosiddetto ambiente controllato.

Qualità DevOps

Nel Manifesto Agile si afferma inoltre che il software funzionante è il principale metro di misura del progresso. L'obiettivo delle operazioni è quello di sfruttare al meglio le applicazioni odierne. Non è possibile risolvere immediatamente problemi relativi alla stabilità, alle prestazioni, all'esperienza utente o alla sicurezza con le future iterazioni delle applicazioni. L'analisi dei dati per le applicazioni, una volta integrata correttamente con operazioni e supporto tecnico, garantisce:

  1. Metrica di utilizzo e adozione dell'applicazione in un framework di operazioni specifico

  2. Avvisi di interventi imprevisti di produzione da parte delle eccezioni dell'applicazione

  3. Adozione organizzativa e analisi della produttività collegando gli investimenti ROI a quelli della società.

Gli esempi includono:

  • PreEmptive Analytics Community Edition che offre agli sviluppatori, tramite Microsoft Visual Studio 2012 Professional, la possibilità di creare un proprio programma Analisi utilizzo software permettendo allo sviluppo e alle operazioni di identificare e rispondere rapidamente alle eccezioni di applicazione che si verificano in fase di produzione.

Requisiti

Con questi obiettivi, il valore dell'analisi dei dati per le applicazioni sembra ovvio, ma i dettagli lo possono rendere difficile. La raccolta, l'analisi e l'esecuzione dei dati di runtime dell'applicazione pongono sfide uniche sia in termini di tipi di dati da raccogliere sia per la metrica con cui misurare la fattibilità.

Le implementazioni di analisi dei dati per le applicazioni effettive devono adattarsi alla gamma di applicazioni odierne e all'emergenza di piattaforme cloud di calcolo distribuito e mobile. I requisiti di analisi dei dati per le applicazioni seguenti rendono esplicito il motivo per cui tecnologie di analisi dei dati più limitate non riescono mai a soddisfare appieno gli obiettivi di sviluppo.

Telemetria in fase di esecuzione

I dati di runtime trasmessi da un'applicazione sono in genere molto più complessi ed eterogenei di quelli trasmessi da portali o pagine Web.

Tipi di dati

Telemetria in fase di esecuzione: varietà, semantica e percorso dei dati di runtime dell'applicazione

Funzionalità

Una funzionalità dell'applicazione non è una semplice operazione eseguita con il mouse. Può interessare uno o più metodi, includere più componenti, essere eseguita in diverse superfici di runtime e persino essere implementata più volte in linguaggi diversi, ad esempio Windows Presentation Foundation (WPF), Microsoft Silverlight e HTML5. La misurazione dell'utilizzo e delle prestazioni di un ambito definito in modo arbitrario è necessaria per il monitoraggio in dispositivi e piattaforme.

Dati applicazione

Molte delle applicazioni moderne sono basate sui dati in cui il comportamento effettivo stesso è codificato nei dati. Conoscere quali modelli, flussi di lavoro e altro contenuto "moderno" verranno elaborati può essere più importante che sapere con quale flusso di lavoro o motore di rendering sono stati elaborati i dati in questione.

Sessione

Le informazioni sulla sessione possono essere definite in modo diverso in un server applicazione, vale a dire una sessione mobile presente all'interno di un browser o distribuita in tutti gli elementi sopra indicati, utilizzata da un servizio basato sul cloud.

Evento

Le eccezioni non gestite, quelle rilevate e generate, le prestazioni impreviste o un comportamento utente sospetto sono tutti possibili esempi di ciò che viene definito "evento di produzione".

Applicazione

Le applicazioni sono spesso costituite da più componenti, alcuni locali, altri basati sui servizi. Per queste applicazioni, e per i relativi componenti, vengono utilizzate versioni a cadenze impreviste. Il calcolo del flusso di lavoro in applicazioni distribuite e, successivamente, la riconciliazione di questa attività nel tempo e nelle versioni è un requisito di analisi dei dati per le applicazioni.

Stack

Mentre molte applicazioni vengono eseguite in una "sandbox", ad esempio dispositivi mobili, Windows Runtime, Microsoft Azure, molte altre hanno accesso completo al sistema operativo sottostante e agli elementi hardware. La gestione della risoluzione dello schermo, dei produttori di chip e della disponibilità hardware è spesso essenziale per comprendere l'esperienza utente e il comportamento dell'applicazione.

Identità

L'identità degli utenti può essere definita e rilevata dall'ID del dispositivo, dall'indirizzo IP, dalle credenziali utente, dalla licenza software e così via. Le soluzioni di analisi dei dati per le applicazioni devono essere dotate di funzionalità in grado di applicare i criteri di privacy e sicurezza sia a livello client sia a livello di aggregazione. La possibilità di garantire un controllo effettivo dei dati consente di analizzare in modo efficiente i dati di runtime risultanti.

Architetture e tecnologie runtime

Data la complessità, la varietà e la distribuzione delle odierne piattaforme di produzione, non è più possibile simulare la produzione. L'analisi dei dati per le applicazioni può colmare questo divario solo se è disponibile un supporto completo per le attuali piattaforme di calcolo.

Categorie

Architetture e tecnologie runtime: linguaggi e piattaforme esistenti ed emergenti

Architetture e superfici

Le applicazioni sono molto più di un semplice livello di presentazione e una sequenza di azioni utente. La strumentazione deve essere estesa a server client, servizi cloud (pubblici e privati), piattaforme mobili e servlet Web, architetture e superfici.

Linguaggi e runtime

Nelle applicazioni odierne sono inclusi componenti gestiti, nativi e basati su script, tra cui Microsoft .NET Framework, C++, Java e JavaScript.

Integrazione di IDE e ALM

Affinché l'analisi dei dati per le applicazioni si riveli utile, è necessario fornire le informazioni corrette ai ruoli appropriati al momento giusto e nel contesto adatto. Ciò prevede l'integrazione dell'attività della strumentazione all'interno del processo di sviluppo e di compilazione e la replica dell'analisi dei dati per le applicazioni nelle fasi di sviluppo, test, distribuzione e gestione.

Diagramma di flusso che mostra cinque fasi in sequenza

Figura 2: cinque fasi funzionali di implementazione dell'analisi dei dati per le applicazioni.

Fase DevOps

Integrazione di IDE e ALM (Application Lifecycle Management): scenari basati sui ruoli e sui casi di utilizzo

1. Strumentazione

La strumentazione è la logica che risiede all'interno di un'applicazione con cui vengono creati i dati di runtime da analizzare. Può essere codificata tramite un'API (obbligatorio per le applicazioni native e basate su script) o inserita in fase di post-compilazione in assembly gestiti.

2. Compilazione e distribuzione

Le applicazioni possono essere compilate manualmente, come parte di un processo di compilazione continuo, e automatizzate per supportare le piattaforme cloud. Il supporto per i vari processi di creazione e per i formati di payload è necessario per garantire distribuzioni efficienti e scalabili.

3. Gestione dei dati di runtime

Per la gestione dei dati di runtime sono necessari una scala, un controllo e i controlli di sicurezza. I requisiti di gestione dei dati di runtime dell'applicazione variano in modo significativo in base al settore, ai casi di utilizzo e ai limiti giurisdizionali.

4. Pubblicazione dei dati di runtime

Le diverse parti interessate necessitano di presentazioni e analisi distinte. Gli sviluppatori, i progettisti, i proprietari del prodotto e la gestione line-of-business hanno prospettive e priorità diverse nei confronti degli stessi dati di runtime sottostanti. I rapporti, i dashboard, l'esportazione e l'accesso a livello di codice sono tutti elementi in genere necessari quando i casi di utilizzo interessano la pianificazione dello sprint, il supporto tecnico e il monitoraggio delle prestazioni aziendali.

5. Integrazione

L'integrazione dell'analisi dei dati per le applicazioni nelle piattaforme di sviluppo, ad esempio Visual Studio e TFS, nelle operazioni, ad esempio quelle relative a responsabili di attività operative, e nella gestione delle relazioni con i clienti, ad esempio Microsoft Dynamics tramite i rapporti e la pianificazione degli eventi, rappresenta l'"ultimo miglio" della produttività dell'analisi dei dati per le applicazioni.

Restrizioni

La soluzione non può essere peggiore del problema. Nel caso dell'analisi dei dati per le applicazioni, ciò significa che l'inserimento di questo tipo di analisi nell'attività di sviluppo e nelle operazioni non può determinare rischi in termini di produttività, prestazioni, sicurezza o esperienza utente maggiori di quelli che dovrebbe attenuare. Considerando le diverse forme e i numerosi ruoli che possono caratterizzare le odierne applicazioni, si tratta di un'attività di dimensioni per nulla contenute.

Gestione dei rischi

Restrizioni: prestazioni, stabilità, privacy e complessità

Prestazioni e stabilità

Raccolta, memorizzazione nella cache e trasmissione dei dati di runtime in modo efficiente tra i dispositivi senza ripercussioni sulle prestazioni (se eseguite correttamente) e senza incidere, nel contempo, sulla stabilità dell'applicazione o dell'esperienza utente qualora o quando uno o più aspetti della soluzione di analisi dovesse avere esito negativo. Ciò può risultare particolarmente impegnativo se si prendono in considerazione particolari dipendenze quali la durata della batteria, i piani dati, le caratteristiche della rete e così via.

Sicurezza e privacy

I consumer, le soluzioni business-to-business e le applicazioni line-of-business vengono forniti con obblighi in termini di sicurezza e di privacy propri. Questi obblighi vengono ulteriormente frammentati in base al settore e alla giurisdizione. La strumentazione dell'analisi dei dati per le applicazioni, il trasporto e la gestione dei contenuti devono essere flessibili e in grado di applicare questi requisiti in base alle singole applicazioni.

Complessità

La complessità può comportare uno spreco di risorse, rischi e, infine, di resistenza all'adozione. L'integrazione nelle piattaforme esistenti, nei processi e nelle metodologie è un requisito fondamentale per le implementazioni di analisi dei dati per le applicazioni effettive.

Visual Studio 2012 e analisi dei dati per le applicazioni

Analisi dei dati delle eccezioni con Visual Studio 2012 PreEmptive Analytics CE

In Visual Studio 2012 è incluso PreEmptive Analytics per TFS Community Edition (PA per TFS CE), una soluzione di analisi dei dati per le applicazioni con cui vengono monitorate le eccezioni e vengono creati o aggiornati gli elementi di lavoro di Team Foundation Server (TFS) in base a soglie definite dall'utente.

PA per TFS CE è progettato per rilevare le eccezioni non gestite in applicazioni in esecuzione in .NET Framework e Java Runtime. Di seguito è riportato il supporto per le cinque fasi di analisi dei dati per le applicazioni:

Fase DevOps

PreEmptive Analytics per TFS Community Edition

1. Strumentazione

La strumentazione viene eseguita con Dotfuscator Community Edition. Il monitoraggio delle eccezioni non gestite con feedback utente e consenso esplicito facoltativi è supportato per le applicazioni .NET Framework, Silverlight, Microsoft Windows Phone e XNA. È inoltre disponibile un'API per le applicazioni Java con download gratuito in cui è incluso il supporto per Android. Il supporto per il codice nativo, per JavaScript e Java viene fornito da PreEmptive Solutions.

2. Compilazione e distribuzione

Dotfuscator Community Edition è un'applicazione interattiva. L'interfaccia della riga di comando e il supporto MSBuild sono disponibili con Dotfuscator Professional di PreEmptive Solutions.

3. Gestione dei dati di runtime

Un agente di raccolta dati lato server è incluso in Visual Studio Team Foundation Server 2012. All'endpoint dell'agente di raccolta viene fatto riferimento tramite un URL incorporato nell'applicazione monitorata come parte della fase di strumentazione sopra indicata. L'agente di raccolta può trovarsi accanto al server TFS, in un server completamente diverso e persino in Microsoft Azure.

4. Pubblicazione dei dati di runtime

In TFS in Visual Studio 2012 è incluso un servizio dell'aggregatore tramite cui viene eseguito il polling dell'agente di raccolta. Quando le soglie definite dall'utente vengono soddisfatte, tramite l'aggregatore viene creato, o aggiornato, un elemento di lavoro relativo a un intervento imprevisto di produzione in TFS in Visual Studio 2012.

5. Integrazione

In Visual Studio 2012, gli elementi di lavoro TFS creati da PA per TFS CE vengono rilevati, assegnati, classificati in ordine di priorità e segnalati come qualsiasi altro tipo di elemento di lavoro di prima classe.

Schermata della posizione nel menu Strumenti

Figura 3: ricerca di PreEmptive Analytics in Visual Studio 2012 dal menu degli strumenti

Schermata di Dotfuscator CE

Figura 4: strumentazione. In Dotfuscator CE, con l'aggiunta dell'attributo di installazione viene identificato l'endpoint dell'agente di raccolta dei dati di runtime. L'endpoint può trovarsi in locale accanto a un server TFS o essere ospitato in Microsoft Azure in modalità remota.

Schermata di Visual Studio che mostra l'integrazione

Figura 5: integrazione di Visual Studio 2012. Gli elementi di lavoro relativi a un intervento imprevisto di produzione vengono replicati automaticamente in Visual Studio quando vengono soddisfatte le soglie del volume. Nella query che include tutti gli elementi è possibile visualizzare il tipo di eccezione, il numero di eccezioni di questo tipo rilevate e il numero di computer in cui si verifica. È possibile visualizzare ulteriori dettagli sull'elemento di lavoro riportato di seguito, tra cui una traccia di stack, nonché l'assegnazione, la classificazione in ordine di priorità e la classificazione dell'elemento di lavoro.

Schermata del grafico di riepilogo di esempio

Figura 6: creazione dei rapporti. Un esempio di grafici di riepilogo inclusi in PA per TFS CE mostra lo stato di tutti gli imprevisti aperti.

PreEmptive Analytics Professional Edition

Oltre alle opzioni avanzate di integrazione e di strumentazione TFS, in Professional Edition di PreEmptive Analytics sono incluse analisi dei dati dell'utente, sessioni e funzionalità progettate per misurare le tendenze, i modelli di utilizzo e le preferenze utente per tutta la durata di un'applicazione di produzione.

Casi di utilizzo principali per le versioni Edition e Professional di PreEmptive Analytics Community

Caso di utilizzo

Community Edition

Professional

Rilevamento delle eccezioni non gestite in applicazioni .NET Framework e Java

Creazione e aggiornamento automatici degli elementi di lavoro TFS in Visual Studio 2012

Disponibilità di opzioni per il feedback utente e consenso esplicito in fase di esecuzione

Supporto per Visual Studio 2010

Rilevamento di eccezioni rilevate e generate

Supporto per dati personalizzati, regole estendibili e definizioni di elementi di lavoro

Supporto per JavaScript e monitoraggio dell'applicazione nativa

Misurazione delle funzionalità e dell'utilizzo della sessione

  • Lo sviluppo è caratterizzato da richieste specifiche che né il Web, né le soluzioni di Business Intelligence né altre soluzioni di analisi dei dati non basate sullo sviluppo sono in grado di soddisfare.

  • L'analisi dei dati per le applicazioni offre funzionalità specifiche progettate per soddisfare esigenze operative e di sviluppo.

  • Visual Studio 2012 offre un'analisi dei dati per le applicazioni integrata e predefinita con la possibilità di estendere queste funzionalità tramite l'integrazione e le opzioni di partner.

Per altre informazioni, visitare i siti seguenti:

  1. http://www.preemptive.com/pa

  2. https://www.microsoft.com/visualstudio/11/it-it/products/alm

  3. https://blogs.msdn.com/b/bharry/archive/2012/04/11/preemptive-analytics-in-visual-studio-and-tfs-11.aspx