Abstract:
L'analisi quantitativa di sistemi software viene riconosciuta come un aspetto importante nel processo di sviluppo del software. L'analisi quantitativa può aiutare a valutarne le prestazioni a partire dai primi passi del ciclo di sviluppo, ad esempio consentendo di confrontare differenti alternative o individuare colli di bottiglia nel sistema. L'individuazione precoce di problemi legati a scarse prestazioni è desiderabile, poiché il costo di cambiare il disegno del software cresce col progredire delle fasi di sviluppo. Questa tesi affronta il problema dell'analisi delle prestazioni di sistemi software descritti ad alto livello. Viene adottato un approccio basato su modelli: a partire da un modello del sistema software, viene descritto un modello di prestazione che è poi valutato. Un approccio di questo tipo ha il vantaggio di poter essere applicato fin dalle prime fasi del ciclo di sviluppo del software; al contrario, non possono essere applicati durante le fasi iniziali gli approcci basati sulle misurazioni, perché consistono nell'identificare problemi tramite misura diretta su un sistema in esecuzione. Vengono considerate descrizioni di sistemi software espresse come un insieme di diagrammi UML annotati UML è una notazione ampiamente utilizzata per la descrizione e la specifica di artefatti software, e recentemente é stata considerata anche nella valutatone di prestazioni. Definiremo un modello di prestazioni in termini di un modello di simulazione orientato a processi. La simulazione è una tecnica molto espressiva con la quale è possibile rappresentare modelli generali e senza vincoli, tali da poter rappresentare più accuratamente il modello del software. Verrà descritto un algoritmo per la traduzione di specifiche UML annotate nel modello di simulazione. La tecnica proposta definisce un insieme di annotazioni di specifiche UML per aggiungere informazioni quantitative orientate alle prestazioni. Il profilo è basato sul " UML profile for Schedulability, Performance and Time Specification". Il sistema viene descritto in termini di diagrammi di caso d'uso, di attivitaàe di deployment. I diagrammi di caso d'uso corrispondono ai carichi di lavoro applicati al sistema. I diagrammi di attività forniscono una descrizione ad alto livello dei passi di computazione effettuati dal sistema, e i diagrammi di deployment descrivono le risorse fisiche su cui le computazioni avvengono. A partire dalle specifiche annotate viene derivato un modello di simulazione orientato a processi. L'esecuzione del programma di simulazione fornisce risultati di prestazioni che possono essere direttamente interpretati a livello di specifica UML. L'algoritmo proposto è stato implementato in un prototipo chiamato UML-PSI (UML Performance Slmulator), che verrà applicato ad un caso di studio per mostrare la validità' dell'approccio. UML-PSI e' scritto in C++ ed e' basato su una libreria di simulazione generica orientata a processi. UML-PSI legge modelli UML annotati, costruisce automaticamente il corrispondente modello di simulazione e lo esegue. Le misure di prestazione sono inserite nel modello UML originale come tagged values, allo scopo di fornire un riscontro all'utente.
Quantitative analysis of software systems is being recognized as an important issue in the software development process. Performance analysis can help to address quantitative system analysis from the early stages of the software development life cycle, e.g, to compare design alternatives or to identify system bottlenecks. Early identification of performance problems is desirable as the cost of design change increases with the later phases in the software development cycle. This thesis addresses the problem of performance analysis of software systems described at a high level of detail. We adopt a model-based approach: starting from a software model, we derive a performance model which is then evaluated. This kind of approach has the advantage of being applicable since the early software development phases; in contrast, a measurement-based approach consisting on identifying problems by direct measurements on a running system can not. We consider software descriptions as a set of annotated UML diagrams. UML is a widely used notation for describing and specifying software artifacts, and recently it is being also considered for performance evaluation purposes. We define the performance model as a process-oriented simulation model. Simulation is a powerful modeling technique which can represent general and unconstrained system models, so that the software model can be more accurately represented. An algorithm for translating UML software specifications into simulation models is described. The proposed technique defines a set of annotation of UML specifications to add quantitative, performance-oriented informations. The profile is based on the UML profile for Schedulability, Performance and Time specification. The system is described in term of Use Case, Activity and Deployment diagrams. Use Case diagrams correspond to workloads applied to the system Activity diagrams provide a high-level description of the computation steps performed by the system, and Deployment diagrams describe the physical resources on which the computations take place. A process-oriented simulation model can then be automatically derived from the annotated specification. Execution of the simulation program provides performance results that can be directly interpreted at the UML software specification level. The described algorithm has been implemented in a prototype tool called UML-PSI (UML Performance Simulator), which is demonstrated on a case study to show the validity of the approach. The UML-PSI tool is written in C++ and is based on a general-purpose process-oriented simulation library. It parses annotated UML models, automatically builds the corresponding simulation model and executes it. Performance results are inserted into the original UML model as tagged
values, in order to give feedback to the user.