Меню
Публикации
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
2001
Главный редактор
НИКИФОРОВ
Владимир Олегович
д.т.н., профессор
Партнеры
doi: 10.17586/2226-1494-2021-21-5-738-747
УДК 004.438
Модели реструктуризации программного обеспечения для языка объектно-ориентированного программирования с использованием алгоритма нечеткой кластеризации
Читать статью полностью
Язык статьи - английский
Ссылка для цитирования:
Аннотация
Ссылка для цитирования:
Бобде С., Пхальникар Р. Модели реструктуризации программного обеспечения для языка объектно-ориентированного программирования с использованием алгоритма нечеткой кластеризации // Научно-технический вестник информационных технологий, механики и оптики. 2021. Т. 21, № 5. С. 738–747 (на англ. яз.). doi: 10.17586/2226-1494-2021-21-5-738-747
Аннотация
Достижения в области программных технологий открывают путь для широкого использования объектно-ориентированных программ. Существует необходимость в разработке зарекомендовавшей себя системы программного обеспечения, которая снизит затраты на обслуживание и повысит удобство использования компонента. При проектировании программной системы ее внутренняя структура ухудшается из-за продолжительных или отложенных работ по техническому обслуживанию. В таких ситуациях реструктуризация программного обеспечения — лучший подход для улучшения структуры без изменения внешнего поведения системы. Один из подходов к реструктуризации — использование рефакторинга применяемого исходного кода для улучшения внутренней структуры кода. Рефакторинг кода — эффективный метод разработки программного обеспечения, который улучшает внутреннюю структуру программного обеспечения без изменения его внешнего поведения. Цель рефакторинга — улучшение связности используемого кода и минимизация связи в модуле программной системы. Кластеризация — один из эффективных подходов к увеличению сплоченности системы. В работе предложено извлечение функций-членов и переменных-членов и выполнение поиска их сходства с помощью подхода «Шаблон частого использования». Алгоритм нечеткой кластеризации дает эффективный рефакторинг кода. Предлагаемый метод использует несколько методов рефакторинга для повышения связности компонента без какого-либо изменения смысла программной системы. Представленная система рекомендует автоматическую поддержку для изменения функций с низким уровнем сцепления на функции с высоким уровнем сцепления. Предложенная модель экспериментально протестирована с объектно-ориентированными программами.
Ключевые слова: рефакторинг, связность, кластеризация, функция членства, переменная, часто используемый паттерн, нечеткая кластеризация методом с-средних, k-ближайший сосед
Список литературы
Список литературы
1. Keshta I.M. Software refactoring approaches: A survey // International Journal of Advanced Computer Science and Applications. 2017. V. 8. N 11. P. 542–547.
2. Alkhalid A., Alshayeb M., Mahmoud S.A. Software refactoring at the class level using clustering techniques // Journal of Research and Practice in Information Technology. 2011. V. 43. N 4. P. 285–306.
3. Srinivas C., Radhakrishna V., Rao C.V.G. Clustering software components for program restructuring and component reuse using hybrid XNOR similarity function // Procedia Technology. 2014. V. 12. P. 246–254. https://doi.org/10.1016/j.protcy.2013.12.482
4. Fokaefs M., Tsantalis N., Chatzigeorgiou A., Sander J. Decomposing object-oriented class modules using an agglomerative clustering technique // Proc. IEEE International Conference on Software Maintenance (ICSM). 2009. P. 93–101. https://doi.org/10.1109/ICSM.2009.5306332
5. Lung C.H., Xu X., Zaman M., Srinivasan A. Program restructuring using clustering techniques // Journal of Systems and Software. 2006. V. 79. N 9. P. 1261–1279. https://doi.org/10.1016/j.jss.2006.02.037
6. Srinivas C., Rao C.V.G. A feature vector based approach for software component clustering and reuse using k-means // Proc. International Conference on Engineering and MIS (ICEMIS). 2015. P. 1–5. https://doi.org/10.1145/2832987.2833080
7. Naseem R., Maqbool O., Muhammad S. Improved similarity measures for software clustering // Proc. 15th European Conference on Software Maintenance and Reengineering. 2011. P. 45–54. https://doi.org/10.1109/CSMR.2011.9
8. Bavota G., Gethers M., Oliveto R., Poshyvanyk D., De Lucia A. Improving software modularization via automated analysis of latent topics and dependencies // ACM Transactions on Software Engineering and Methodology. 2014. V. 23. N 1. P. 2559935. https://doi.org/10.1145/2559935
9. Al Dallal J. Constructing models for predicting extract subclass refactoring opportunities using object-oriented quality metrics // Information and Software Technology. 2012. V. 54. N 10. P. 1125–1141. https://doi.org/10.1016/j.infsof.2012.04.004
10. Singh S., Kaur S. A systematic literature review: Refactoring for disclosing code smells in object oriented software // Ain Shams Engineering Journal. 2018. V. 9. N 4. P. 2129–2151. https://doi.org/10.1016/j.asej.2017.03.002
11. Wang Y., Yu H., Zhu Z., Zhang W., Zhao Y. Automatic software refactoring via weighted clustering in method-level networks // IEEE Transactions on Software Engineering. 2018. V. 44. N 3. P. 202–236. https://doi.org/10.1109/TSE.2017.2679752
12. Hegedűs P., Kádár I., Ferenc R., Gyimóthy T. Empirical evaluation of software maintainability based on a manually validated refactoring dataset // Information and Software Technology. 2018. V. 95. P. 313–327. https://doi.org/10.1016/j.infsof.2017.11.012
13. Kebir S., Borne I., Meslati D. A genetic algorithm-based approach for automated refactoring of component-based software // Information and Software Technology. 2017. V. 88. P. 17–36. https://doi.org/10.1016/j.infsof.2017.03.009
14. Han A.-R., Bae D.-H., Cha S. An efficient approach to identify multiple and independent Move Method refactoring candidates // Information and Software Technology. 2015. V. 59. P. 53–66. https://doi.org/10.1016/j.infsof.2014.10.007
15. Rathee A., Chhabra J.K. Restructuring of object-oriented software through cohesion improvement using frequent usage patterns // ACM SIGSOFT Software Engineering Notes. 2017. V. 42. N 3. P. 1–8. https://doi.org/10.1145/3127360.3127370
16. Alkhalid A., Alshayeb M., Mahmoud S. Software refactoring at the function level using new Adaptive K-Nearest Neighbor algorithm // Advances in Engineering Software. 2010. V. 41. N 10–11. P. 1160–1178. https://doi.org/10.1016/j.advengsoft.2010.08.002
17. Rao A.A., Reddy K.N. Identifying clusters of concepts in a low cohesive class for extract class refactoring using metrics supplemented agglomerative clustering technique // International Journal of Computer Science Issues. 2011. V. 8. Issue 5. N 2. P. 185–194.
18. Wang Y., Yu H., Zhu Z., Zhang W., Zhao Y. Automatic software refactoring via weighted clustering in method-level networks // IEEE Transactions on Software Engineering. 2017. V. 44. N 3. P. 202–236. https://doi.org/10.1109/TSE.2017.2679752
19. Rathee A., Chhabra J.K. Clustering for software remodularization by using structural, conceptual and evolutionary features // Journal of Universal Computer Science. 2018. V. 24. N 12. P. 1731–1757.
20. Alizadeh V., Kessentini M. Reducing interactive refactoring effort via clustering-based multi-objective search // ASE 2018 – Proc. of the 33rd ACM/IEEE International Conference on Automated Software Engineering. 2018. P. 464–474. https://doi.org/10.1145/3238147.3238217
21. Bobde S., Phalnikar R. Restructuring of object-oriented software system using clustering techniques // Proceeding of International Conference on Computational Science and Applications. Springer, 2020. P. 419–425. https://doi.org/10.1007/978-981-15-0790-8_41
22. Al Dallal J. Predicting move method refactoring opportunities in object-oriented code // Information and Software Technology. 2017. V. 92. P. 105–120. https://doi.org/10.1016/j.infsof.2017.07.013
23. Al Dallal J. Constructing models for predicting extract subclass refactoring opportunities using object-oriented quality metrics // Information and Software Technology. 2012. V. 54. N 10. P. 1125–1141. https://doi.org/10.1016/j.infsof.2012.04.004