Аннотация
В данной работе приводится обзор наиболее интересных, с точки зрения авторов работ, опубликованных в журнале Journal of Systems and Software за 2012–2014 годы. Для анализа были выбраны работы по тестированию и разработке программного обеспечения, которые условно можно разделить на несколько групп: 1) работы по локализации ошибок; 2) работы по генерации тестов; 3) работы по построению моделей программ
и дальнейшего их численного анализа. В результате выполненного обзора работ можно сделать вывод: методы локализации ошибок основаны в основном на данных, полученных от результатов выполнения тестов и математической модели, построенной методом «среза пучка» или аналогами, позволяют достаточно точно определить содержащий ошибку оператор. В основе методов генерации тестов лежат различные модели, охватывающие программу полностью или частично, на основе которых составляется список тестов и тестовых данных. Также в данной статье рассмотрен ряд работ, посвященных статистическому анализу исходного кода программного обеспечения. Причем в нескольких работах в качестве эталона принимается рейтинг ответов на таких ресурсах, как StackOverflow.com, в других – анализ журналов с описанием ошибок. Также проанализирован ряд работ, в которых строится модель программы с целью получения каких-либо численных характеристик.
Ключевые слова: программное обеспечение, тестирование, формальная верификация, динамическая верификация, верификация, проверка моделей, модели программного обеспечения, графы, тотальная корректность программ, генерация тестов, локализации ошибок
Список литературы
1. Hoyos J.R., García-Molina J., Botía J.A. A domain-specific language for context modeling in context-aware systems // Journal of systems and software. – 2013. – Vol. 86, iss. 11. – P. 2890–2905. – doi: 10.1016/j.jss.2013.07.008.
2. A design rule language for aspect-oriented programming / A.C. Neto, R. Boni-fácio, M. Ribeiro, C.E. Pontual, P. Borba, F. Castor // Journal of systems and software. – 2013. – Vol. 86, iss. 9. – P. 2333–2356. – doi: 10.1016/j.jss.2013.03.104.
3. Perez A., Abreu R., Riboira A. A dynamic code coverage approach to maximize fault localization efficiency // Journal of systems and software. – 2014. – Vol. 90. – Р. 18–28. – doi: 10.1016/j.jss.2013.12.036.
4. Diaz J., Arroyo D., Rodriguez F.B. A formal methodology for integral security design and verification of network protocols // Journal of systems and software. – 2014. – Vol. 89. – Р. 87–98. – doi: 10.1016/j.jss.2013.09.020.
5. Frantz R.Z., Corchuelo R., Molina-Jiménez C. A proposal to detect errors in Enterprise Application Integration solutions // Journal of systems and software. – 2012. – Vol. 85, iss. 3. – Р. 480–497. – doi: 10.1016/j.jss.2011.10.048.
6. Burgstaller B., Scholz B., Blieberger J. A symbolic analysis framework for static analysis of imperative programming languages // Journal of systems and software. – 2012. – Vol. 85, iss. 6. – Р. 1418–1439. – doi: 10.1016/j.jss.2011.11.1039.
7. InRob: An approach for testing interoperability and robustness of real-time embedded software / F. Mattiello-Francisco, E. Martins, A.R. Cavalli, E.T. Yano // Journal of systems and software. – 2012. – Vol. 85, iss. 1. – Р. 3–15. – doi: 10.1016/j.jss.2011.02.034.
8. An approach to testing commercial embedded systems / T. Yu, A. Sung,
W. Srisaan, G. Rothermel // Journal of systems and software. – 2014. – Vol. 88. –
Р. 207–230. – doi: 10.1016/j.jss.2013.10.041.
9. Sinha S., Harrold M.J., Rothermel G. Interprocedural control dependence // ACM Transactions on software engineering and methodology. – 2001. – Vol. 10, iss. 2. – P. 209–254. – doi: 10.1145/367008.367022.
10. Pachauri A., Srivastava G. Automated test data generation for branch testing using genetic algorithm: an improved approach using branch ordering, memory and elitism // Journal of systems and software. – 2013. – Vol. 86, iss. 5. – Р. 1191–1208. – doi: 10.1016/j.jss.2012.11.045.
11. Automatic testing environment for multi-core embedded software – ATEMES / C. Koong, C. Shih, P. Hsiung, H. Lai, C. Chang, W.C. Chu, N. Hsueh, C. Yang // Journal of systems and software. – 2012. – Vol. 85, iss. 1. – Р. 43–60. – doi: 10.1016/j.jss.2011.08.030.
12. Coding-error based defects in enterprise resource planning software: Prevention, discovery, elimination and mitigation / I. Woungang, F.O. Akinladejo, D.W. White, M.S. Obaidat // Journal of systems and software. – 2012. – Vol. 85, iss. 7. – Р. 1682–1698. – doi: 10.1016/j.jss.2012.02.034.
13. Coherent clusters in source code / S. Islam, J. Krinke, D. Binkley, M. Harman // Journal of systems and software. – 2014. – Vol. 88. – Р. 1–24. – doi: 10.1016/j.jss.2013.07.040.
14. Horwitz S., Reps T., Binkley D. Interprocedural slicing using dependence graphs // ACM Transactions on Programming Languages and Systems (TOPLAS). – 1990. – Vol. 12, iss. 1. – P. 26–60. – doi: 10.1145/77606.77608.
15. Ferrante J., Ottenstein K.J., Warren J.D. The program dependence graph and its use in optimization // ACM Transactions on Programming Languages and Systems (TOPLAS). – 1987. – Vol. 9, iss. 3. – P. 319–349. – doi: 10.1145/24039.24041.
16. Debroy V., Wong W. Combining mutation and fault localization for automated program debugging // Journal of systems and software. – 2014. – Vol. 90. – Р. 45–60. – doi: 10.1016/j.jss.2013.10.042.
17. Kolomvatsos K., Valkanas G., Hadjiefthymiades S. Debugging applications created by a domain specific language: the IPAC case // Journal of systems and software. – 2012. – Vol. 85, iss. 4. – Р. 932–943. – doi: 10.1016/j.jss.2011.11.1009.
18. HSFal: Effective fault localization using hybrid spectrum of full slices and execution slices / X. Ju, S. Jiang, X. Chen, X. Wang, Y. Zhang, H. Cao // Journal of systems and software. – 2014. – Vol. 90. – Р. 3–17. – doi: 10.1016/j.jss.2013.11.1109.
19. Kaminski G., Ammann P., Offutt J. Improving logic-based testing // Journal of systems and software. – 2013. – Vol. 86, iss. 8. – Р. 2002–2012. – doi: 10.1016/j.jss.2012.08.024.
20. Balsamo S., Harrison P.G., Marin A. Methodological construction of product-form stochastic Petri nets for performance evaluation // Journal of systems and software. – 2012. – Vol. 85, iss. 7. – Р. 1520–1539. – doi: 10.1016/j.jss.2011.11.1042.
21. On the relationship between comment update practices and software bugs / W.M. Ibrahim, N. Bettenburg, B. Adams, A.E. Hassan // Journal of systems and software. – 2012. – Vol. 85, iss. 10. – Р. 2293–2304. – doi: 10.1016/j.jss.2011.09.019.
22. Petri net based techniques for constructing reliable service composition /
G. Fan, H. Yu, L. Chen, D. Liu // Journal of systems and software. – 2013. – Vol. 86, iss. 4. – Р. 1089–1106. – doi: 10.1016/j.jss.2012.11.037.
23. Alama O., Adams B., Hassan A.E. Controversy Corner: Preserving knowledge in software projects // Journal of systems and software. – 2012. – Vol. 85, iss. 10. – Р. 2318–2330. – doi: 10.1016/j.jss.2012.03.028
24. Recovering test-to-code traceability using slicing and textual analysis /
A. Qusef, G. Bavota, R. Oliveto, A. De Lucia, D. Binkley // Journal of systems and software. – 2014. – Vol. 88. – Р. 147–168. – doi: 10.1016/j.jss.2013.10.019.
25. Slice-based statistical fault localization / X. Mao, Y. Lei, Z. Dai, Y. Qi,
C. Wang // Journal of systems and software. – 2014. – Vol. 89. – Р. 51–62. – doi: 10.1016/j.jss.2013.08.031.
26. Keivanloo I., Rilling J. Software trustworthiness 2.0 – A semantic web enabled global source code analysis approach // Journal of systems and software. – 2014. – Vol. 89. – Р. 33–50. – doi: 10.1016/j.jss.2013.08.030.
27. Towards automated debugging in software evolution: evaluating delta debugging on real regression bugs from the developers’ perspectives / K. Yu,
M. Lin, J. Chen, X. Zhang // Journal of systems and software. – 2012. – Vol. 85,
iss. 10. – Р. 2305–2317. – doi: 10.1016/j.jss.2011.10.016.