Predicting Aging-Related Bugs using Software Complexity Metrics (original) (raw)
Abstract
Long-running software systems tend to show degraded performance and an increased failure occurrence rate. This problem, known as Software Aging, which is typically related to the runtime accumulation of error conditions, is caused by the activation of the so-called Aging-Related Bugs (ARBs). This paper aims to predict the location of Aging-Related Bugs in complex software systems, so as to aid their identification during testing. First, we carried out a bug data analysis on three large software projects in order to collect data about ARBs. Then, a set of software complexity metrics were selected and extracted from the three projects. Finally, by using such metrics as predictor variables and machine learning algorithms, we built fault prediction models that can be used to predict which source code files are more prone to Aging-Related Bugs. software fault injection, dependability assessment techniques, and field-based measurements techniques. Domenico Cotroneo has served as Program Committee member in a number of scientific conferences on dependability topics, including DSN, EDCC, ISSRE, SRDS, and LADC, and he is involved in several national and European projects in the context of dependable systems.
Figures (15)
Software projects considered in this study. Table 1 both at JVM and OS level; results pointed out the relationship between workload parameters and aging trends (e.g., object allocation frequency for the JVM, number of context switch for the OS). In [13], we also analyzed the impact of application- level workload parameters on aging, such as intensity of requests and size of processed data, and confirmed the presence of aging in Apache, James Mail Server, and in CARDAMOM, a middleware for air traffic control systems.
Inspected Bug reports from the Linux and MySQL projects. Table 2
Datasets used in this study. Table 3 Table 4
Aging-related bugs. in the considered projects, which is not used at all in the case of the Linux kernel [40]. Both “numerical” ARBs caused the overflow of an integer variable. Appendix describes some examples of ARBs.
Table 5 represent the number of times a pointer variable is dereferenced in an expression, respectively to read or write the pointed variable. The UniqueDerefSet and UniqueDerefUse metrics have a similar meaning as DerefSet and DerefUse; however, each pointer variable is counted only one time per file. These metrics can potentially be expanded to consider system-specific features (e.g., files and network connections), although we only consider metrics related to memory usage due to the predominance of memory-related ARBs and to their portability across projects.
Comparison between classifiers. Table 6 Wilcoxon signed-rank test [47]. This procedure tests the null hypothesis that the differences Z; between repeated measure. rom two classifiers have null median (e.g., when comparing the PD of the NB and Logistic classifiers, Z) = PDygji - Diogistic,is 1 = 1...N). The procedure computes a test statistic based on the magnitude and the sign of the difference 7;. Under the null hypothesis, the distribution of the test statistic tends towards the normal distribution since the numbe of samples is large (in our case, N = 100). The null hypothesis is rejected (i.e., there is a statistically significant differenc yetween classifiers) if the p-value (i.e., the probability that the test statistic is equal to or greater than the actual value o he test statistic, under the null hypothesis and the normal approximation) is equal to or lower than a significance level a This test assumes that the differences Z; are independent and that their distribution is symmetric; however, the samples ar lot required to be normally distributed, and the test is robust when the underlying distributions are non-normal. For eacl column of Table 6, we highlight in bold the best results according to the Wilcoxon signed-rank test, with a significance leve of « = 0.05. For some datasets and performance indicators, more than one classifier may result to be the best one.
are considered. It can be observed that there is no individual metric that can be used alone for classification, but the best performance is obtained when considering several metrics and letting the classifier ascertain how to combine these metrics.
Classification performance without and with Aging-Related Metrics (ARMs).
Cross-component classification in Linux.
Cross-component classification in CARDAMOM.
Cross-component classification in MySQL.
Cross-project classification. Table 11 indicators are comparable to the previous ones, i.e, PD > 60% and PF < 40% (see Table 7). Exceptions are Linux/IPv4 and MySQL/Optimizer (PF > 50%), and CARDAMOM /Foundation (PD = 0%), which represents an extreme case of a skewed dataset since there is only one ARB in that component. Although ARB data from the component under analysis should be the preferred choice, cross-component classification seems to be a viable approach when no such data is available.
Examples of ARBs.
Examples of ARBs of different types. Table A.13
Bug IDs of ARBs. Table A.14 The first two bugs are examples of memory-related ARBs, being directly related to memory leaks. The last three bugs in the Table are examples of other logical resources involved in the manifestation of the ARB. In particular, the first one leads to an increasing number of sockets made unavailable, the second one is about the query cache not being flushed, whereas the last one reports that open connections are not cleaned up, causing degraded performance and eventually the failure.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.
References (55)
- M. Grottke, L. Li, K. Vaidyanathan, K.S. Trivedi, Analysis of software aging in a web server, IEEE Transactions on Reliability 55 (3) (2006) 411-420.
- M. Grottke, R. Matias, K. Trivedi, The fundamentals of software aging, in: Proc. 1st IEEE Intl. Workshop on Software Aging and Rejuvenation, 2008, pp. 1-6.
- M. Grottke, K. Trivedi, Fighting bugs: remove, retry, replicate, and rejuvenate, IEEE Computer 40 (2) (2007) 107-109.
- M. Grottke, A. Nikora, K. Trivedi, An empirical investigation of fault types in space mission system software, in: Proc. IEEE/IFIP Intl. Conf. on Dependable Systems and Networks, 2010, pp. 447-456.
- Y. Huang, C. Kintala, N. Kolettis, N. Fulton, Software rejuvenation: analysis, module and applications, in: Proc. 25th Intl. Symp. on Fault-Tolerant Computing, 1995, pp. 381-390.
- V. Basili, S. Green, O. Laitenberger, F. Lanubile, F. Shull, S. Sørumgård, M. Zelkowitz, The empirical investigation of perspective-based reading, Empirical Software Engineering 1 (2) (1996) 133-164.
- O. Laitenberger, K. El Emam, T. Harbich, An internally replicated quasi-experimental comparison of checklist and perspective based reading of code documents, IEEE Transactions on Software Engineering 27 (5) (2001) 387-421.
- G. Carrozza, D. Cotroneo, R. Natella, A. Pecchia, S. Russo, Memory leak analysis of mission-critical middleware, Journal of Systems and Software 83 (9) (2010) 1556-1567.
- R. Matias, K. Trivedi, P. Maciel, Using accelerated life tests to estimate time to software aging failure, in: Proc. IEEE 21st Intl. Symp. on Software Reliability Engineering, 2010, pp. 211-219.
- K. Gui, S. Kothari, A 2-phase method for validation of matching pair property with case studies of operating systems, in: Proc. IEEE 21st Intl. Symp. on Software Reliability Engineering, 2010, pp. 151-160.
- M. Balakrishnan, A. Puliafito, K. Trivedi, I. Viniotisz, Buffer losses vs. deadline violations for ABR traffic in an ATM switch: a computational approach, Telecommunication Systems 7 (1) (1997) 105-123.
- E. Marshall, Fatal error: how patriot overlooked a scud, Science 255 (5050) (1992) 1347.
- A. Bovenzi, D. Cotroneo, R. Pietrantuono, S. Russo, Workload characterization for software aging analysis, in: Proc. IEEE Intl. Symp. on Software Reliability Engineering, 2011, pp. 240-249.
- D. Cotroneo, S. Orlando, S. Russo, Characterizing aging phenomena of the java virtual machine, in: Proc. of the 26th IEEE Intl. Symp. on Reliable Distributed Systems, 2007, pp. 127-136.
- D. Cotroneo, S. Orlando, R. Pietrantuono, S. Russo, A measurement-based ageing analysis of the JVM, Software Testing, Verification and Reliability, 2011. http://dx.doi.org/10.1002/stvr.467.
- D. Cotroneo, R. Natella, R. Pietrantuono, S. Russo, Software aging analysis of the Linux operating system, in: Proc. IEEE 21st Intl. Symp. on Software Reliability Engineering, 2010, pp. 71-80.
- M. Grottke, K. Trivedi, Software faults, software aging and software rejuvenation, Journal of the Reliability Engineering Association of Japan 27 (7) (2005) 425-438.
- S. Garg, A. Puliafito, K.S. Trivedi, Analysis of software rejuvenation using Markov regenerative stochastic Petri Net, in: Proc. 6th Intl. Symp. on Software Reliability Engineering, 1995, pp. 180-187.
- Y. Bao, X. Sun, K.S. Trivedi, A workload-based analysis of software aging, and rejuvenation, IEEE Transactions on Reliability 54 (3) (2005) 541-548.
- K. Vaidyanathan, K.S. Trivedi, A comprehensive model for software rejuvenation, IEEE Transactions on Dependable and Secure Computing 2 (2) (2005) 124-137.
- K.J. Cassidy, K.C. Gross, A. Malekpour, Advanced pattern recognition for detection of complex software aging phenomena in online transaction processing servers, in: Proc. IEEE/IFIP Intl. Conf. on Dependable Systems and Networks, 2002, pp. 478-482.
- K. Vaidyanathan, K.S. Trivedi, A measurement-based model for estimation of resource exhaustion in operational software systems, in: Proc. 10th Intl. Symp. on Software Reliability Engineering, 1999, pp. 84-93.
- S. Garg, A. Van Moorsel, K. Vaidyanathan, K.S. Trivedi, A methodology for detection and estimation of software aging, in: Proc. 9th Intl. Symp. on Software Reliability Engineering, 1998, pp. 283-292.
- R. Matias, P.J. Freitas Filho, An experimental study on software aging and rejuvenation in web servers, in: Proc. 30th Annual Intl. Computer Software and Applications Conf., 2006, pp. 189-196.
- L. Silva, H. Madeira, J.G. Silva, Software aging and rejuvenation in a SOAP-based server, in: Proc. 5th IEEE Intl. Symp. on Network Computing and Applications, 2006, pp. 56-65.
- D. Cotroneo, R. Natella, R. Pietrantuono, Is software aging related to software metrics?, in: Proc. 2nd IEEE Intl. Workshop on Software Aging and Rejuvenation, 2010, pp. 1-6.
- S. Gokhale, M. Lyu, Regression tree modeling for the prediction of software quality, in: Proc. Intl. Conf. on Reliability and Quality in Design, 1997, pp. 31-36.
- N. Nagappan, T. Ball, A. Zeller, Mining metrics to predict component failures, in: Proc. 28th Intl. Conf. on Software Engineering, 2006, pp. 452-461.
- G. Denaro, S. Morasca, M. Pezzè, Deriving models of software fault-proneness, in: Proc. 14th Intl. Conf. on Software Engineering and Knowledge Engineering, 2002, pp. 361-368.
- G. Denaro, M. Pezzè, An empirical evaluation of fault-proneness models, in: Proc. 24th Intl. Conf. on Software Engineering, 2002, pp. 241-251.
- A. Binkley, S. Schach, Validation of the coupling dependency metric as a predictor of run-time failures and maintenance measures, in: Proc. 20th Intl. Conf. on Software Engineering, 1998, pp. 452-455.
- N. Ohlsson, H. Alberg, Predicting fault-prone software modules in telephone switches, IEEE Transactions on Software Engineering 22 (12) (1996) 886-894.
- T. Ostrand, E. Weyuker, R. Bell, Predicting the location and number of faults in large software systems, IEEE Transactions on Software Engineering 31 (4) (2005) 340-355.
- T. Menzies, J. Greenwald, A. Frank, Data mining static code attributes to learn defect predictors, IEEE Transactions on Software Engineering 33 (1) (2007) 2-13.
- N. Seliya, T. Khoshgoftaar, J. Van Hulse, Predicting faults in high assurance software, in: Proc. IEEE 12th Intl. Symp. on High Assurance Systems Engineering, 2010, pp. 26-34.
- T. Zimmermann, N. Nagappan, H. Gall, E. Giger, B. Murphy, Cross-project defect prediction-a large scale experiment on data vs. domain vs. process, in: Proc. 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, 2009, pp. 91-100.
- Oracle Corp., MySQL Market Share. URL http://www.mysql.com/why-mysql/marketshare/.
- S. Anand, V. Kulkarni, Linux system development on an embedded device. URL http://www-128.ibm.com/developerworks/library/l-embdev.html.
- D. Lyons, Linux rules supercomputers. URL http://www.forbes.com/2005/03/15/cz\_dl\_0315linux.html.
- R. Love, Linux Kernel Development, third ed., Addison-Wesley, 2010.
- A. Mockus, N. Nagappan, T. Dinh-Trong, Test coverage and post-verification defects: a multiple case study, in: Proc. 3rd Intl. Symp. on Empirical Software Engineering and Measurement, IEEE Computer Society, 2009, pp. 291-301.
- N.E. Fenton, M. Neil, A critique of software defect prediction models, IEEE Transactions on Software Engineering 25 (5) (1999) 675-689.
- I. Witten, E. Frank, M. Hall, Data Mining: Practical Machine Learning Tools and Techniques, third ed., Elsevier, 2011.
- P. Domingos, M. Pazzani, On the optimality of the simple Bayesian classifier under zero-one loss, Machine Learning 29 (2-3) (1997) 103-130.
- T. Menzies, A. Dekhtyar, J. Distefano, J. Greenwald, Problems with precision: a response to comments on 'data mining static code attributes to learn defect predictors', IEEE Transactions on Software Engineering 33 (9) (2007) 637-640.
- B. Efron, R. Tibshirani, An Introduction to the Bootstrap, first ed., Chapman & Hall/CRC, 1994.
- D.J. Sheskin, Handbook of Parametric and Nonparametric Statistical Procedures, fourth ed., Chapman & Hall/CRC, 2007.
- M. Hall, G. Holmes, Benchmarking attribute selection techniques for discrete class data mining, IEEE Transactions on Knowledge and Data Engineering 15 (6) (2003) 1437-1447.
- Y. Yang, J.O. Pedersen, A comparative study on feature selection in text categorization, in: Proc. 14th Intl. Conf. on Machine Learning, Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1997, pp. 412-420.
- B. Turhan, T. Menzies, A. Bener, J. Di Stefano, On the relative value of cross-company and within-company data for defect prediction, Empirical Software Engineering 14 (5) (2009) 540-578.
- T. Menzies, A. Butcher, A. Marcus, T. Zimmermann, D. Cok, Local vs. global models for effort estimation and defect prediction, in: Proc. Intl. Conf. on Automated Software Engineering, 2011, pp. 343-351.
- J. Yang, P. Twohey, D. Engler, M. Musuvathi, Using model checking to find serious file system errors, ACM Transactions on Computer Systems 24 (4) (2006) 393-423.
- G. Holzmann, The model checker SPIN, IEEE Transactions on Software Engineering 23 (5) (1997) 279-295.
- J. Clause, A. Orso, Leakpoint: pinpointing the causes of memory leaks, in: Proc. 32nd ACM/IEEE Intl. Conf. on Software Engineering, 2010, pp. 515-524.
- N. Nethercote, J. Seward, How to shadow every byte of memory used by a program, in: Proc. 3rd Intl. Conf. on Virtual Execution Environments, 2007, pp. 65-74.