# Quality Properties of Execution Tracing, an Empirical Study
## 1 Introduction  
In this paper, the terms execution tracing and logging are used interchangeably. In a strict sense, execution tracing refers to a mechanism which primarily collects information for software developers, software maintainers to locate the sources of errors in software systems, while logging refers to a mechanism to collect information for system administrators or operators to support the normal operation of the same system. Thus, execution tracing dumps data about the internal state changes and threads of execution in the application. Both logging and execution tracing require that the application be operational and be executed, through which they belong to the dynamic analysis techniques; moreover, they form integral part of the software maintenance [1, 2, 3]. The increasing size, the distributed nature of software systems implicate increasing complexity, which make localising errors in the application code more difficult. The quality of logging, including whether log entries stem from the key places in the application code, has a drastic impact on the time spent on error analysis [4]. The popular integrated development environments and debuggers do not offer adequate solution in case (1) performance issues need to be analysed in deployment, (2) errors in real-time, embedded systems need to be localised, where the reproduction can cause serious damages or injuries, (3) the issues are concurrency-related or (4) the systems are distributed and actions have to be matched in each application part [4, 5, 6, 7, 8]. In addition, the mechanism of execution tracing can be localized in separate modules and does not need to be tightly coupled to the application code [9, 10, 11, 6]. [PERSON] and [PERSON] identified understanding the program logic as the primary source of impediments while assessing the difficulties with regard to the maintainability of object-oriented applications [12]. Logging contributes to understanding the program logic to a great extent [3; 4]. It indicates that the quality of logging has an essential impact on the analysability property of software systems, through which it has a direct impact on the development and maintenance costs. Thus, assessing the quality of a software product needs to include the assessment of its analysability with regard to the quality of logging. [PERSON] et al. investigated five large software systems with their 250 randomly selected failure reports and the relating source code [13]. They found that failure analysis based of existing log data caused problems in 57 % of the cases. Moreover, [PERSON] et al. conducted a different research about four large, open-source, C++ projects to understand how pervasive logging is and how it influences failure diagnosis time [14]. The study found that log messages can speed up the failure diagnosis on average by 2.2 times; moreover, each 30 lines of source code includes a log statement which establishes a rate to state logging is pervasive [14]. [PERSON] and [PERSON] replicated the previous study to examine whether its statements also hold for Java [15]. While their research yielded similar results about pervasiveness of logging, they found that error reports with logs were resolved slower than those without logs [15]. Nevertheless, [PERSON] and [PERSON] states that further research is required to elicit the impact of logging on error resolution time, which also considers whether the error can be reproduced by the developers or logs are necessary to identify them [15]. In addition, several publications state that no industrial standard and very limited or no guidelines are available to support developers to create logging in an application [16; 17; 18; 19; 20]. If concrete guidelines existed with regard to each aspect of quality including internal, external and quality-in-use [21; 22], then it would make possible to compare the properties of an existing logging mechanism and output to a desired target, which would facilitate quality assessment. However, such guidelines are not available.