Methods of preparing and recognizing software patterns using machine learning models
Authors: Shaker Alaa | |
Published in issue: #2(31)/2019 | |
DOI: 10.18698/2541-8009-2019-2-442 | |
Category: Informatics, Computer Engineering and Control | Chapter: System Analysis, Control, and Information Processing, Statistics |
|
Keywords: design, microstructure, pattern, design pattern recognition, machine learning, software, reverse engineering, software development |
|
Published: 15.02.2019 |
The paper is concerned that recognition of design patterns in the source code of the information system is an urgent task in the field of automatic analysis and software development. The authors use the machine learning methods to detect automatically design patterns. The proposed method allows you to prepare, simulate and recognize design patterns, consisting of an arbitrary number of classes. In the present paper, the authors described the experiments on the recognition of five design patterns (singleton, adapter, linker, decorator, factory method), and carried out a comparison of recognition results obtained using various machine learning models. At the same time, K nearest-neighbor algorithms, linear models, models of decision trees with gradient amplification were used.
References
[1] Fowler M. Refactoring: improving the design of existing code. Addison-Wesley Professional, 2018.
[2] Morozov A.A., Polupanov A.F., Antciperov V.E., et al. Development of concurrent object-oriented logic programming system to intelligent monitoring of anomalous human activities. Proc. 7th BIOSTEC, 2014. Angers, France, pp. 53–62.
[3] Mall R. Fundamentals of software engineering. PHI Learning Pvt. Ltd., 2018.
[4] Fontana F.A., Caracciolo A., Zanoni M. DPB: A benchmark for design pattern detection tools. Proc. 6th Europ. Conf. Software Maintenance and Reengineering, 2012, pp. 235–244. DOI: 10.1109/CSMR.2012.32 URL: https://ieeexplore.ieee.org/document/6178890
[5] Dwivedi A.K., Rath S.K., Satapathy S.M., et al. Applying reverse engineering techniques to analyze design patterns in source code. Proc. ICACCI, 2018, pp. 1398–1404. DOI: 10.1109/ICACCI.2018.8554519 URL: https://ieeexplore.ieee.org/document/8554519
[6] Devyatkov V.V., Alfimtsev A.N. Fuzzy finite state model of intelligent multimodal interface. Problemy upravleniya [Control Sciences], 2011, no. 2, pp. 69–77 (in Russ.).
[7] Mo R., Cai Ya., Kazman R., et al. Hotspot patterns: The formal definition and automatic detection of architecture smells. 12th Working IEEE/IFIP Conf. Software Architecture, 2015, pp. 51–60. DOI: 10.1109/WICSA.2015.12 URL: https://ieeexplore.ieee.org/document/7158503
[8] Sakulin S.A., Alfimtsev A.N. To the problem on practical application of fuzzy measures and Choquet integral. Inzhenernyy zhurnal: nauka i innovatsii [Engineering Journal: Science and Innovation], 2012, no. 1. DOI: 10.18698/2308-6033-2012-1-71 URL: http://engjournal.ru/catalog/it/hidden/71.html (in Russ.).
[9] Shalev-Shwartz Sh., Ben-David Sh. Understanding machine learning. From theory to algorithms. Cambridge University Press, 2014. (Russ. ed.: Idei mashinnogo obucheniya: ot teorii k algoritmam. Moscow, DMK Press Publ., 2019.)
[10] Alhusain S., Coupland S., John R., et al. Towards machine learning based design pattern recognition. UKCI, 2013, pp. 244–251. DOI: 10.1109/UKCI.2013.6651312 URL: https://ieeexplore.ieee.org/document/6651312
[11] Freeman E., Bates B., Sierra K., et al. Head first design patterns: a brain-friendly guide. O’Reilly Media, 2004. (Russ. ed.: Patterny proektirovaniya. Sankt-Petersburg, 2011.)
[12] Smith J.M.C., Stotts D. Elemental design patterns: a formal semantics for composition of OO software architecture. Proc. 27th Annual NASA Goddard/IEEE Software Engineering Workshop, 2002, pp. 183–190. DOI: 10.1109/SEW.2002.1199472 URL: https://ieeexplore.ieee.org/document/1199472