[en] Large scale distributed software systems are complex systems that need to be able to adapt to a highly dynamic environment and changing user needs. In this context, the main objective of this project is the development of new selfadaptive strategies, along with the methodologies and tools required for their analysis and design. In this work, we design and implement a self-adaptive architecture inspired by IBM's Monitor-Analyze-Plan-Act over a Knowledge base architecture, and we develop new self-adaptive strategies specific for wireless sensor networks following a methodology borrowed from control engineering. More in detail, we start this work by designing in UML a software library for the development of self-adaptive capabilities, which will be implemented as a Java package. After that, we model two distributed software systems using an actor oriented approach in Ptolemy II. Next, we develop the self-adaptive strategies based on fuzzy inference systems and introduce them in the models as new actors. Finally, we are able to execute a simulation of the system, which allows us to perform an automatic optimization of the parameters of the sytem with the cross-entropy method and to test the suitability of the designed strategies. Based on the simulation results, we have assessed the good results yielded by the strategies and the potential of the modeling tool for the design and simulation of distributed software systems. But more importantly, this work demonstrates the usefulness of a control engineering approach to solve problems related to the dynamic behavior of software systems.

[es] Los sistemas distribuidos a gran escala son sistemas complejos que necesitan adaptarse a un entorno altamente dinámico y a las distintas necesidades del usuario. En este contexto, el objetivo principal de este proyecto es el desarrollo de nuevas estrategias de auto-adaptación, a la vez que las metodologías y herramientas necesarias para su análisis y diseño. En este trabajo, diseñamos e implementamos una arquitectura para capacidades autoadaptativas en sistemas software insipirada en la arquitectura Monitor- Analyze-Plan-Act over a Knowledge base de IBM, y desarrollamos nuevas estrategias de auto-adaptación específicas para redes de sensores inhalámbricas siguiendo una metodología tomada de la ingeniería de control. Más concretamente, comenzamos este trabajo diseñando en UML una librería software para el desarrollo de capacidades auto-adaptativas, que luego implementamos como un paquete Java. A continuación, modelamos dos sistemas distribuidos usando un enfoque orientado a actores en Ptolemy II. Posteriormente, desarrollamos estrategias auto-adaptativas basadas en sistemas de inferencia difusa y las insertamos en los modelos como nuevos actores. Finalmente, ejecutamos varias simulaciones del sistema, lo cual nos permite realizar una optimización automática de los parámetros del sistema mediante el uso del método de entropía cruzada y, además, probar el desempeño de las estrategias diseñadas. Basándonos en los resultados de estas simulaciones, hemos podido comprobar los buenos resultados que ofrecen las estrategias de auto-adaptación implementadas y el potencial de la herramienta de modelado para el diseño y la simulación de sistemas distribuidos. Pero lo más importante es que este trabajo demuestra la utilidad de enfocar desde la ingeniería de control la resolución de problemas relacionados con el comportamiento dinámico de sistemas software.