The understanding of the behavioral aspects of a software system is an essential enabler for many software engineering activities, such as adaptation. This involves collecting runtime data from the system so that it is possible to analyze the collected data to guide actions upon the system. Consequently, software monitoring imposes practical challenges because it is often done by intercepting the system execution and recording gathered information. Such monitoring may degrade the performance and disrupt the system execution to unacceptable levels. In this paper, we introduce a two-phase monitoring approach to support the monitoring step in adaptive systems. The first phase collects lightweight coarse-grained information and identifies relevant parts of the software that should be monitored in detail based on a provided domain-specific language. This language is informed by a systematic literature review. The second phase collects relevant and fine-grained information needed for deciding whether and how to adapt the managed system. Our approach is implemented as a framework, called Tigris, that can be seamlessly integrated into existing software systems to support monitoring-based activities. To validate our proposal, we instantiated Tigris to support an application-level caching approach, which adapts caching decisions of a software system at runtime to improve its performance.
翻译:了解软件系统的行为方面是许多软件工程活动(如适应)的重要推动因素,这涉及从系统收集运行时间数据,以便能够分析收集的数据,指导系统的行动。因此,软件监测带来实际挑战,因为通常通过拦截系统执行和记录收集的信息来进行,这种监测可能会降低性能,干扰系统执行到不可接受的程度。在本文件中,我们引入了支持适应系统监测步骤的两阶段监测方法。第一阶段收集了轻量的粗粗糙信息,并确定了应根据所提供的具体域语言进行详细监测的软件的相关部分。这一语言由系统文献审查提供信息。第二阶段收集了决定是否和如何调整管理系统所需的相关和精细的信息。我们的方法作为一个框架(称为Tigris)实施,这个框架可以与现有的软件系统紧密结合,以支持监测活动。为了验证我们的提议,我们即时将Tigris用于支持应用级的缓冲方法,该软件系统在运行时可以调整其性能。