Исследование применимости метрик программного обеспечения для поиска ошибок.

Оригинал: 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).

  1. (CBO) - количество классов, с которыми взаимодействует данный.
  2. (RFC) - суммарное количество методов класса и унаследованных методов
  3. (LCOM) - для каждого поля класса доля методов, использующих это поле
  4. (DIT) - максимальная глубина наследования
  5. (NOC) - количество непосредственных наследников в иерархии классов
  6. (SLOC) - количество строк кода.

Исследование направлено на то, чтобы дать ответ на следующие вопросы:

  1. Какие из рассматриваемых метрик имеют отношение к FP?
  2. Какие методы использовались для валидации метрик и какие из них лучше?
  3. Насколько глубоко исследованы метрики?(имеются ввиду различные языки, настройки)
  4. Насколько релевантны исследования?
  5. существуют ли универсальные метрики для нахождения ошибок?

Были рассмотрены результаты за период с января 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. Ниже приведена диаграмма, на которой отражены количества работ, в которых соответствующие метрики показали себя полезными и/или бесполезными.

Из приведенных данных очевидно, что не существует универсальных метрик для поиска ошибок.

Главными результатами обзора являются следующие утверждения:

  • SLOC, CBO, RFC, WMC сильно связаны с FP, они же рассматриваются в большинстве работ.
  • Было рассмотрено 29 опытных исследований, 6 из них были посвящены студенческим проектам, 23 не студенческим
  • В основном в подобных исследованиях изучаются приложения, написанные на C++ или Java.
  • В основном в качестве модели для предсказания ошибок используется логистическая регрессия.
  • Почти все исследования связаны с не выпущенным продуктом, только одно описывало процесс поддержки.
  • Практически, ни одно исследование не повторялось. Однако, многие авторы используют данные из предыдущих работ.

На основе полученных результатов можно сформулировать следующие рекомендации

  1. Для предсказания FP имеет смысл использовать CK и SLOC. Более того, наиболее продуктивным является использование логистической регрессии
  2. Для обеспечения высокого качества программного обеспечения следует обращать внимание на вышеупомянутые метрики.
  3. Для оценки качества, оценки обязаны базироваться исключительно на опытных данных.
  4. Необходимо больше исследований для языков программирования отличных от C++ и Java.
  5. При внесении изменений в объектно-ориентированные системы, метрики могут использоваться для предсказания эффекта от изменений.

Разработчики должны постоянно использовать метрики для оценки выявления узких мест в своих системах, требующих повышенного внимания.

  1. 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
  2. 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,
  3. 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.
  4. 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.
  5. 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.
  6. 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
  7. 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.
  8. 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.
  9. Janes, A. et al.(2006): Identification of defect-prone classes in telecommunication software systems using design metrics. International Journal of Information Sciences.
  10. 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.
  11. 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.
  12. 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.
  13. Boehm, B., Basili, V.(2004): Software Defect Reduction Top 10 Lists. IEEE Computer 34(1), 135–137, 2001
  14. Myers, G., Badgett, T., Thomas, T., Sandler, C.(2004): The Art of Software Testing, second ed. John Wiley& Sons, Inc., Hoboken, NJ.
  15. Kanmani et al (2007): Object-oriented software fault prediction using neural networks, Information and software technology 49, 483-492.
  16. Chidamber, S., Kemerer, C.F.(1994): A metrics suite for object oriented design. IEEE Trans. Softw. Eng. Vol. 20, No. 6, pp. 476–493.
  17. 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.
  18. Fenton, N., Neil, M.(1999): Software metrics: successes, failures, and new directions. Journal of Systems and Software vol. 47, pp. 149-157.
  19. 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.
  20. Fenton, N., Ohlsson, N.(2000): Quantitative analysis of faults and failures in a complex software system. IEEE Transactions on Software Engineering, to appear.
  21. 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
  22. 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.
  23. 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.
  24. 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
  25. 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.
  26. 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.
  27. 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.
  28. 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.
  29. 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.
  30. 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.
  31. Goel, B. and Singh, Y.(2008): Empirical Investigation of Metrics for Fault Prediction on ObjectOriented Software. Computer and Information Science, pp. 255-265.
  32. 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
  33. 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.
  34. 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.
  35. Al-Dallal, J.(2011): Transitive-based object-oriented lack-of-cohesion metric. Procedia Computer Science, pp. 1581-1587.
  36. 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.
  37. 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
  38. 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.
  39. Creswell, J.W.(2013): Research Design: Qualitative, Quantitative, and Mixed Methods Approaches, 4th Edition, ISBN-13: 978-1452226101
  40. Saxena, P. and Saini, M.(2011): Empirical Studies to Predict Fault Proneness: A Review. International Journal of Computer Applications, Vol 22, ISBN: 0975 – 8887
  41. 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.
  42. 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.
  43. 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