[ca] El monitoratge consisteix en la tècnica d'observació i control dels sistemes software amb l'objectiu de garantir la seva fiabilitat, la qualitat del servei (Quality of Service, QoS), la seguretat i altres característiques dels sistemes software pròpies de la seva execució en temps real. El monitoratge proporciona, entre d'altres resultats, la informació que permet a un sistema software autoadaptable modificar la seva execució davant la violació d'uns certs valors sobre aquestes característiques, tals com per exemple un increment elevat del temps de resposta d'un sistema o la detecció d'un nombre elevat d'errors per unitat de temps. De la mateixa manera, els sistemes de monitoratge (com a sistemes software que són) requereixen també poder adaptar la seva execució per satisfer la seva fiabilitat. En aquest context, com podem dotar a un sistema de monitoratge de capacitats autoadaptables? En base a aquesta premisa, aquest Treball de Final de Grau consisteix en el disseny i implementació d'un sistema de monitoratge autoadaptable, heterogeni i distribuït que integra un conjunt de monitors de naturalesa diversa i permet, mitjançant la gestió i adaptació de diagrames UML, la seva reconfiguració de forma automàtica. La proposta i el desenvolupament plantejats en aquest projecte es validen mitjançant casos d'ús reals i, en especial èmfasi, amb la seva integració dins el marc de SUPERSEDE, un projecte del programa Horizon 2020 enfocat a la gestió del cicle de vida dels serveis software i les aplicacions, amb l'objectiu de millorar l'experiència final de l'usuari en l'ús d'aquests sistemes.

[en] Software monitoring is the technique of controlling and observing real time behavior of software systems. Its main purpose is to achieve and to guarantee features such as reliability, Quality of Service (QoS), security and other characteristics related with the activity execution of this applications or software components. Monitoring produces and manages the information necessary to allow a self-adaptive software system to automatically adapt when there is a violation of some expected values on those characteristics. These include, i.e., an unusual increase of a software system response time, or exceeding a number of errors per time unit. However, for a monitoring system to be reliable, it has to be self-adaptive as well. In this case, how can we provide self-adaptive capabilities to a monitoring system? This project consists on the design and the implementation of a self-adaptive heterogeneous and distributed monitoring system that integrates different monitors of different nature and provides the functionality to automatically reconfigure them according to some criteria. This automatic adaptation will be performed by managing and supplying UML models describing the current monitoring system status and other possible configurations to be reconfigured with. The development presented in this project will be validated through real use cases, with special emphasis on the SUPERSEDE project, a research project of the Horizon 2020 program. This project is addressed to the management of the software services and applications life cycle, with the main purpose of improving the final user experience in the use of these systems.