====== Исследование применимости метрик программного обеспечения для поиска ошибок. ====== Оригинал: Bassey Isong, Obeten Ekabua State-of-the-art in empirical validation of software metrics for fault proneness prediction: systematic review. International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015 4 ==== Введение ===== При современных размере и сложности программных систем, а также ограничениях навязанных при разработке, становится неизбежным тот факт, что продукт не дойдет до пользователя без ошибок. Но несмотря на это, раннее обнаружение дефектов снижает цену и повышает качество конечного продукта. Для этого применяются в том числе метрики программного обеспечения. Из существующих метрик выделяют традиционные и OO-метрики. Принято считать, что в объектно-ориентированных системах большая часть ошибок сконцентрирована в малом количестве классов, и метрики помогают акцентировать на них внимание на ранних стадиях разработки. А также сконцентрировать усилия при тестировании и верификации на подобных классах. Однако, для того метрики могли быть использованы для поиска ошибок, они должны быть исследованы опытным путем. То есть должно быть установлено наличие корелляции с важными внешними атрибутами класса - такими как частота появления ошибок(FP). ==== Изученные метрики ==== Исследованы метрики из набора CK и одна из метрик размера(SLOC). - (CBO) - количество классов, с которыми взаимодействует данный. - (RFC) - суммарное количество методов класса и унаследованных методов - (LCOM) - для каждого поля класса доля методов, использующих это поле - (DIT) - максимальная глубина наследования - (NOC) - количество непосредственных наследников в иерархии классов - (SLOC) - количество строк кода. ==== Методология исследований ==== Исследование направлено на то, чтобы дать ответ на следующие вопросы: - Какие из рассматриваемых метрик имеют отношение к FP? - Какие методы использовались для валидации метрик и какие из них лучше? - Насколько глубоко исследованы метрики?(имеются ввиду различные языки, настройки) - Насколько релевантны исследования? - существуют ли универсальные метрики для нахождения ошибок? Были рассмотрены результаты за период с января 1995 до декабря 2012. Также, каждая работа проверялась дважды, и все результаты проверялись дополнительно. При этом, авторы строго придерживались принципов обзора литературы, сформулированных в ([26],[39]). ==== Результаты исследований ==== ''​Вопрос 1: какие из рассматриваемых метрик имеют отношение к FP?''​ Работы [10],[40],[17],[1],[22],[6],[25], [23],[3],[4],[8],[2],[24],[27], [11],[29],[12],[31],[32], [35],[36],[37] подтверждают связь WMC и FP. Работы [10],[19],[21],[17],[1],[22],[6],[25],[23], [3],[4],[2],[24],[27], [11],[29],[12],[9], [30],[31],[32],[36],[37] подтвердили важность парных метрик(CBO, RFC). Мера сцепления признана связанной с FP в 14 работах: [19],[21],[17],[25],[23],[3],[4],[24], [27],[11],[9],[32],[35],[34],[37]. Меры наследования(DIT, NOC) признаны связанными с наличием дефектов в относительно малом количестве работ([19],[22],[6],[25],[5],[2],[27],[9],[37],[17]), что позволяет сделать вывод о слабой корелляции с FP. SLOC же по результатам исследований даже более сильно связана с наличием ошибок чем все рассмотренные OO-метрики, что подтверждают [17],[1],[22],[25],[3],[4],[2],[24],[27], [28],[11],[29],[30],[31],[32],[33],[36]. ''​Вопрос 2: какие методы использовались для валидации метрик и какие из них лучше?''​ Во всех выбранных работах используются свои методы и почти все из них используют машинное обучение. В 76% работ используется логистическая регрессия. Также, все исследователи подчеркивают, что метод сбора данных сильнее всего влияет на точность модели. ''​Вопрос 3: насколько глубоко исследованы метрики?''​ Исследование показало, что более исследована коммерческая разработка(47% работ), чуть менее исследованы открытые проекты(33%) и наименее популярная категория -- студенческие проекты(20%). При этом, наиболее популярные языки это Java и C++(97% работ). ''​Вопрос 4: насколько релевантны исследования?''​ Во всех работах было упомянуто что опытные данные критически важны для применения метрик при поиске ошибок. Также, часто упоминается что метрики влияют на сложность системы, которая уже и связана с подверженностью ошибкам. Однако, большая часть работ имеют проблемы с повторяемостью результатов(79%). ''​Вопрос 5: существуют ли универсальные метрики для нахождения нахождения ошибок?''​ В данном обзоре, было показано что метрики из набора CK и SLOC влияют на FP. Ниже приведена диаграмма, на которой отражены количества работ, в которых соответствующие метрики показали себя полезными и/или бесполезными. {{:mdd:metrics_validation_1.png}} Из приведенных данных очевидно, что не существует универсальных метрик для поиска ошибок. ==== Заключение ==== Главными результатами обзора являются следующие утверждения: * SLOC, CBO, RFC, WMC сильно связаны с FP, они же рассматриваются в большинстве работ. * Было рассмотрено 29 опытных исследований, 6 из них были посвящены студенческим проектам, 23 не студенческим * В основном в подобных исследованиях изучаются приложения, написанные на C++ или Java. * В основном в качестве модели для предсказания ошибок используется логистическая регрессия. * Почти все исследования связаны с не выпущенным продуктом, только одно описывало процесс поддержки. * Практически, ни одно исследование не повторялось. Однако, многие авторы используют данные из предыдущих работ. На основе полученных результатов можно сформулировать следующие рекомендации - Для предсказания FP имеет смысл использовать CK и SLOC. Более того, наиболее продуктивным является использование логистической регрессии - Для обеспечения высокого качества программного обеспечения следует обращать внимание на вышеупомянутые метрики. - Для оценки качества, оценки обязаны базироваться исключительно на опытных данных. - Необходимо больше исследований для языков программирования отличных от C++ и Java. - При внесении изменений в объектно-ориентированные системы, метрики могут использоваться для предсказания эффекта от изменений. Разработчики должны постоянно использовать метрики для оценки выявления узких мест в своих системах, требующих повышенного внимания. ==== Ссылки ==== - Xu, J., Ho, D. and Capretz, L.F (2008): An Empirical Validation of Object-Oriented Design Metrics for Fault Prediction. Journal of Computer Science No.4, Vol 7, pp. 571-577. ISSN 1549-3636 - Subramanyam, R. and Krishnan, M.S.(2003): Empirical Analysis of CK Metrics for Object- Oriented Design Complexity: Implications for Software Defects. IEEE Trans. Software Eng. No.29, pp. 297-310, - Zhou, Y., & Leung, H.(2006): Empirical analysis of object oriented design metrics for predicting high and low severity faults. IEEE Transactions on Software Engineering, 32(10), pp. 771–784. - Singh, Y. Kaur, A. and Malhotra, R.(2010): Empirical validation of object-oriented metrics for predicting FP models. Software Quality Journal, vol.18 pp. 3–35. - Succi, G., Pedrycz, W., Stefanovic, M., Miller, J.(2003): Practical assessment of the models for identification of defect-prone classes in object-oriented commercial systems using design metrics. Journal of Systems and Software 65, pp. 1-12. - Basili, V., Briand, L., & Melo, W.(1996): A validation of object oriented design metrics as quality indicators. IEEE Transactions on Software Engineering, No.22, Vol. 10, pp.751–761 - Chidamber, S., Darcy, D., Kemerer, C.(1998): Managerial use of metrics for object oriented software: an exploratory analysis. IEEE Trans. Softw. Eng. Vol. 24, No. 8, pp. 629–639. - Tang, M. H., Kao, M. H., & Chen, M. H. (1999): An empirical study on object-oriented metrics. In Proceedings of 6th IEEE International Symposium on Software Metrics. pp.242–249. - Janes, A. et al.(2006): Identification of defect-prone classes in telecommunication software systems using design metrics. International Journal of Information Sciences. - Emam, K.E., Melo, W.L., Machado, J.C.(2001): The prediction of faulty classes using object-oriented design metrics. Journal of Systems and Software No. 56, pp. 63-75. - Malhotra, R., Kaur, A. and Singh, Y.(2010): Empirical validation of object-oriented metrics for predicting FP at different severity levels using support vector machines. International Journal System Assurrance Engineering Management. No.1, vol. 3, pp. 269–281. - Shatnawi, R. and Li, W.(2008): The effectiveness of software metrics in identifying error-prone classes in post-release software evolution process. The Journal of Systems and Software no. 81, pp.1868–1882. - Boehm, B., Basili, V.(2004): Software Defect Reduction Top 10 Lists. IEEE Computer 34(1), 135–137, 2001 - Myers, G., Badgett, T., Thomas, T., Sandler, C.(2004): The Art of Software Testing, second ed. John Wiley& Sons, Inc., Hoboken, NJ. - Kanmani et al (2007): Object-oriented software fault prediction using neural networks, Information and software technology 49, 483-492. - Chidamber, S., Kemerer, C.F.(1994): A metrics suite for object oriented design. IEEE Trans. Softw. Eng. Vol. 20, No. 6, pp. 476–493. - Yu, P., Systa, T., & Muller, H.(2002): Predicting FP using OO metrics: An industrial case study. In Proceedings of Sixth European Conference on Software Maintenance and Reengineering, Budapest, Hungary, pp.99–107. - Fenton, N., Neil, M.(1999): Software metrics: successes, failures, and new directions. Journal of Systems and Software vol. 47, pp. 149-157. - Briand, L., Daly, J., Porter, V., & Wust, J.(1998): A comprehensive empirical validation of design measures for Object Oriented Systems. Proceeding METRICS '98 Proceedings of the 5th International Symposium on Software Metrics IEEE Computer Society, Washington, DC, USA. - Fenton, N., Ohlsson, N.(2000): Quantitative analysis of faults and failures in a complex software system. IEEE Transactions on Software Engineering, to appear. - Emam, K.E., Benlarbi, S., Goel, N., Rai, S.N.(2001): The Confounding Effect of Class Size on the Validity of Object-Oriented Metrics. IEEE Trans. Software Eng. 27, 630—650. International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015 17 - Briand, L.C., Wüst, J., Daly, J.W., Porter, D.V.(2000): Exploring the relationships between design measures and software quality in object-oriented systems. Journal of Systems and Software No. 51, pp. 245—273. - Olague, H.M., Etzkorn, L.H., Gholston, S., Quattlebaum, S.(2007): Empirical Validation of Three Software Metrics Suites to Predict FP of Object-Oriented Classes Developed Using Highly Iterative or Agile Software Development Processes. IEEE Trans. Software Eng. No.33, pp.402—419. - Aggarwal, K. K., Singh, Y., Kaur, A. and Malhotra, R. Empirical Analysis for Investigating the Effect of Object-Oriented Metrics on FP: A Replicated Case Study. Software Process Improvement and Practice, po.14, pp. 39–62, 2009 - Gyimóthy, T., Ferenc, R., Siket, I.(2005): Empirical Validation of Object-Oriented Metrics on Open Source Software for Fault Prediction. IEEE Trans. Software Eng. No.31, pp.897—910. - Kitchenham, B. and Charters, S.(2007): Guidelines for performing Systematic Literature Reviews in Software Engineering, Keele University and Durham University Joint Report, Tech. Rep. EBSE 2007-001. - Briand, L.C., J. Wust and H. Lounis.(2001): Replicated case studies for investigating quality factors in object-oriented designs. Empirical Software Engineering. No.6, pp. 11-58. - Olague, H.M., Etzkorn, L.H., Messimer, S.L. and Delugach, H.S.(2008): An empirical validation of object-oriented class complexity metrics and their ability to predict error-prone classes in highly iterative, or agile, software: a case study. Journal of Software Maintenance. No. 20, pp.171-197. - Rathore, S.S. and Gupta, A.(2012) Validating the Effectiveness of Object-Oriented Metrics over Multiple Releases for Predicting FP. Proceedings of 19th Asia-Pacific Software Engineering Conference, IEEE. pp.350-355. - English, M., Exton, C., Rigon, I. and Cleary, B.(2009): Fault Detection and Prediction in an OpenSource Software Project. In: 5th International Conference on Predictor Models in Software Engineering. - Goel, B. and Singh, Y.(2008): Empirical Investigation of Metrics for Fault Prediction on ObjectOriented Software. Computer and Information Science, pp. 255-265. - Shaik, A. et al.(2011): Investigate the Result of Object Oriented Design Software Metrics on FP in Object Oriented Systems: A Case Study. Journal of Emerging Trends in Computing and Information Sciences, Vol. 2 No.4, ISSN 2079-8407 - Zhou, Y., Xu, B. and Leung, H.(2010): On the ability of complexity metrics to predict fault-prone classes in object-oriented systems. The Journal of Systems and Software No. 83, pp. 660–674. - Al-Dallal, J. and Briand, L.C.(2010): An object-oriented high-level design-based class cohesion metric. Information & Software Technology No. 52, pp.1346-1361. - Al-Dallal, J.(2011): Transitive-based object-oriented lack-of-cohesion metric. Procedia Computer Science, pp. 1581-1587. - Pai, G.J., Dugan, J.B.(2007): Empirical Analysis of Software Fault Content and FP Using Bayesian Methods. IEEE Trans. Software Eng. No. 33, pp.675-686. - Johari, K. and Kaur, A.(2012):Validation of Object Oriented Metrics Using Open Source Software System: An Empirical Study. ACM SIGSOFT Software Engineering Note, Vol. 37, No.1, pp.1.DOI: 10.1145/2088883.2088893 - Briand, L., Wuest, J., Ikonomovski, S. and Lounis, H.(1999): Investigating quality factors in objectoriented designs: an industrial case study. In: Proceedings of the International Conference on Software Engineering. - Creswell, J.W.(2013): Research Design: Qualitative, Quantitative, and Mixed Methods Approaches, 4th Edition, ISBN-13: 978-1452226101 - Saxena, P. and Saini, M.(2011): Empirical Studies to Predict Fault Proneness: A Review. International Journal of Computer Applications, Vol 22, ISBN: 0975 – 8887 - Khan, Y. A., Elish, M.O. and El-Attar, M.(2012): A Systematic Review on the Impact of CK Metrics on the Functional Correctness of Object-Oriented Classes. Springer, pp. 258–273. - Briand et al.(2002):Assessing the Applicability of Fault-Proneness Models Across Object-Oriented Software Projects. IEEE Transactions of Software Engineering. Vol. 28, No. 7. - Isong, B.E. and Ekabua, O.O. (2013) “A Systematic Review of the Empirical Validation of objectoriented Metrics towards Fault-proneness Prediction”. International Journal of Software Engineering and Knowledge Engineering (IJSEKE) WSPC. Vol. 23, No. 10. pp. 1513–1540 DOI: 10.1142/S0218194013500484. ISSN: 0218-1940 International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015