Popis: |
Le tecniche di monitoraggio possono estrarre dati accurati sul comportamento dei sistemi software. Se utilizzati nel campo, possono rivelare come le applicazioni si comportano in contesti del mondo reale e come i programmi sono effettivamente esercitati dai loro utenti. Tuttavia, la raccolta, l'elaborazione e la distribuzione dei dati sul campo devono essere eseguiti senza interruzioni e in modo non invasivo mentre gli utenti interagiscono con le loro applicazioni. Per limitare l'intrusività del monitoraggio sul campo, un approccio comune consiste nel ridurre la quantità di dati raccolti (ad esempio, in pochi eventi e in crash dump), che tuttavia possono influire gravemente sull'efficacia delle tecniche che sfruttano i dati sul campo. Questa tesi di dottorato indaga il trade-off tra il monitoraggio sul campo e il degrado dell'esperienza utente nelle applicazioni interattive, cioè le applicazioni che richiedono input dell'utente per continuare le sue operazioni. In particolare, abbiamo identificato due grandi sfide: capire come l'utente percepisce il sovraccarico del monitoraggio e studiare come raccogliere dati in modo non intrusivo senza perdere troppe informazioni. In breve, forniamo tre contributi principali. In primo luogo, presentiamo uno studio empirico volto a quantificare se e in che misura il sovraccarico di monitoraggio introdotto in un'applicazione interattiva è percepito dagli utenti. I risultati riportati possono essere sfruttati per progettare attentamente le procedure di analisi in esecuzione sul campo. In particolare, abbiamo scoperto che gli utenti non percepivano differenze significative per un overhead dell'80% e raramente percepivano un overhead del 140%. In secondo luogo, introduciamo un framework di monitoraggio per ricavare dati a runtime completi senza influire sulla qualità dell'esperienza utente. La tecnica produce un automa a stati finiti che mostra i possibili usi dell'applicazione dagli eventi osservati sul campo. Dal modello, è anche possibile estrarre tracce accurate e complete che potrebbero essere utilizzate per supportare varie attività, come il debugging, la riproduzione e la profilazione di errori di campo. Infine, presentiamo una strategia per ridurre ulteriormente l'impatto del monitoraggio limitando l'attività svolta in parallelo con le operazioni degli utenti: la strategia ritarda il salvataggio di eventi da archiviare in fasi di inattività dell'applicazione per ridurre l'impatto sull'esperienza utente. L'approccio riduce considerevolmente l'impatto del monitoraggio sulle operazioni degli utenti producendo tracce estremamente accurate. I risultati ottenuti in questo dottorato la tesi può abilitare una serie di soluzioni di test e analisi che sfruttano in modo estensivo i dati sul campo. Monitoring techniques can extract accurate data about the behavior of software systems. When used in the field, they can reveal how applications behave in real-world contexts and how programs are actually exercised by their users. However, the collection, processing, and distribution of field data must be done seamlessly and unobtrusively while users interact with their applications. To limit the intrusiveness of field monitoring a common approach is to reduce the amount of collected data (e.g., to rare events and to crash dumps), which, however, may severely affect the effectiveness of the techniques that exploit field data. This Ph.D. thesis investigates the trade-off between field monitoring and the degradation of the user experience in interactive applications, that is, applications that require user inputs to continue its operations. In particular, we identified two big challenges: to understand how the user perceives monitoring overhead and, to study how to collect data in a non-intrusive way without losing too much information. In brief, we provide three main contributions. In the first place, we present an empirical study aimed at quantifying if and to what extent the monitoring overhead introduced in an interactive application is perceived by users. The reported results can be exploited to carefully design analysis procedures running in the field. In particular, we realized that users do not perceive significant differences for an overhead of 80\% and seldom perceived an overhead of 140\%. Secondly, we introduce a monitoring framework for deriving comprehensive runtime data without affecting the quality of the user experience. The technique produces a finite state automaton that shows possible usages of the application from the events observed in the field. From the model, it is also possible to extract accurate and comprehensive traces that could be used to support various tasks, such as debugging, field failures reproduction and profiling. Finally, we present a strategy to further reduce the impact of monitoring by limiting the activity performed in parallel with users' operations: the strategy delays the saving of events to file to idle phases of the application to reduce the impact on the user experience. The approach considerably decreases the impact of monitoring on user operations producing highly accurate traces. The results obtained in this Ph.D. thesis can enable a range of testing and analysis solutions that extensively exploit field data. |