SOLID ЯК СИСТЕМА КОНСТРУКТИВНИХ ОБМЕЖЕНЬ У ПРОЄКТУВАННІ АРХІТЕКТУРИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
DOI:
https://doi.org/10.31548/itees.2025.01.020Ключові слова:
SOLID, об’єктно-орієнтоване програмування, архітектура програмного забезпечення, дизайн-патерни, когезія, зв’язність, метрики якості коду, інверсія залежностей (DI/IoC)Анотація
Стаття подає SOLID як систему конструктивних обмежень, що дисциплінує ступені свободи дизайну й переводить еволюцію програмних систем у керований процес. Пояснюється зв’язок принципів із фундаментом ООП, із шаблонами проектування та з архітектурними стилями Розкриваються неочевидні ефекти: передчасні абстракції при OCP, прихована конфігураційна зв’язність при DIP/DI, «class explosion» і фрагментація відповідальностей при SRP/ISP, семантичні порушення LSP, що не фіксуються сигнатурами. Запропоновано операційний підхід до валідації рішень через метрики, контрактні тести і контрольні пороги введення абстракцій, а також наведено практичні протоколи прийняття рішень.
Посилання
1. Chidamber, S. R., & Kemerer, C. F. (1994). A metrics suite for object oriented design. IEEE Transactions on Software Engineering, 20(6), 476–493. https://doi.org/10.1109/32.295895.
2. Basili, V. R., Briand, L. C., & Melo, W. L. (1996). A validation of object-oriented design metrics as quality indicators. IEEE Transactions on Software Engineering, 22(10), 751–761. https://doi.org/10.1109/32.489317.
3. Briand, L. C., Daly, J. W., & Wüst, J. (1999). A unified framework for coupling measurement in object-oriented systems. IEEE Transactions on Software Engineering, 25(1), 91–121. https://doi.org/10.1109/32.748920.
4. 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), 771–789. https://doi.org/10.1109/TSE.2006.102.
5. Arisholm, E., Briand, L. C., & Føyen, A. (2004). Dynamic coupling measurement for object-oriented software. IEEE Transactions on Software Engineering, 30(8), 491–506. https://doi.org/10.1109/TSE.2004.41.
6. Marcus, A., Poshyvanyk, D., & Ferenc, R. (2008). Using the conceptual cohesion of classes for fault prediction. IEEE Transactions on Software Engineering, 34(2), 287–300. https://doi.org/10.1109/TSE.2007.70768.
7. Revelle, M., Gethers, M. & Poshyvanyk, D. (2011). Using structural and textual information to capture feature coupling in object-oriented software. Empir Software Eng, 16, 773–811. https://doi.org/10.1007/s10664-011-9159-7.
8. Ajienka, N., & Capiluppi, A. (2017). Understanding the interplay between logical and structural coupling of software classes. Journal of Systems and Software, 134, 120–137. https://doi.org/10.1016/j.jss.2017.08.042.
9. Ajienka, N., Capiluppi, A., & Counsell, S. (2018). An empirical study on the interplay between semantic coupling and co-change. Empirical Software Engineering, 23(4), 1799–1836. https://doi.org/10.1007/s10664-017-9569-2.
10. Kagdi, H., Gethers, M. & Poshyvanyk, D. (2013). Integrating conceptual and logical couplings for change impact analysis in software. Empir Software Eng, 18, 933–969. https://doi.org/10.1007/s10664-012-9233-9.
11. Ampatzoglou, A., Frantzeskou, G., & Stamelos, I. (2012). A methodology to assess the impact of design patterns on software quality. Information and Software Technology, 54(4), 331-346. https://doi.org/10.1016/j.infsof.2011.10.006.
12. Yamashita, A., & Moonen, L. (2013). AiOLoS: A model for assessing organizational learning in software development organizations, 55(11), 1904-1924. https://doi.org/10.1016/j.infsof.2013.05.004.
13. Alfadel, M., Aljasser, K., & Alshayeb M. (2020). Empirical study of the relationship between design patterns and code smells. PLoS ONE, 15(4): e0231731. https://doi.org/10.1371/journal.pone.0231731.
14. Gnoyke, P., Schulze, S., & Krüger, J. (2024). Evolution patterns of software-architecture smells. Journal of Systems and Software, 213, 112170. https://doi.org/10.1016/j.jss.2024.112170.
15. Arisholm, E., Sjøberg, D. I. K., & Jørgensen, M. (2001). Assessing the changeability of two object-oriented design alternatives: A controlled experiment. Empirical Software Engineering, 6(3), 231–277. https://doi.org/10.1023/A:1011439416657.
16. Chae, H. S., Kwon, Y. R., & Bae, D. H. (2004). Improving cohesion metrics for classes. IEEE Transactions on Software Engineering, 30(8), 548–564. https://doi.org/10.1109/TSE.2004.88.
17. Liskov, B., & Wing, J. (1994). A behavioral notion of subtyping. ACM Transactions on Programming Languages and Systems, 16(6), 1811–1841. https://doi.org/10.1145/197320.197383.
18. Meyer, B. (1992). Applying “design by contract.” Computer, 25(10), 40–51. https://doi.org/10.1109/2.161279.
19. Waseem, M., Liang, P., Shahin, M., Di Salle, A., & Márquez, G. (2021). Design, monitoring, and testing of microservices systems: The practitioners’ perspective. Journal of Systems and Software, 182, 111061. https://doi.org/10.1016/j.jss.2021.111061.
20. Fregnan, E., Palomba, F., Bavota, G., Di Penta, M., Oliveto, R., & Lucia, A. D. (2019). On nonlinear Schrödinger equations with attractive inverse-power potentials. Information and Software Technology, 107, 159-178. https://doi.org/10.48550/arXiv.1903.04636.
21. Lampón, J. F., Cabanelas, P., & González-Benito, J. (2017). The impact of modular platforms on automobile manufacturing networks. Production Planning & Control, 28(4), 335–348. https://doi.org/10.1080/09537287.2017.1287442.
22. Pandremenos, J., Paralikas, J., Salonitis, K., & Chryssolouris, G. (2009). Modularity concepts for the automotive industry: A critical review. CIRP Journal of Manufacturing Science and Technology, 1(3), 148–152. https://doi.org/10.1016/j.cirpj.2008.09.012.
23. Bao, Z., Laovisutthichai, V., Tan, T., Wang, Q., & Lu, W. (2022). Design for manufacture and assembly (DfMA) enablers for offsite interior design and construction. Building Research & Information, 50(3), 325–338. https://doi.org/10.1080/09613218.2021.1966734.
Завантаження
Опубліковано
Номер
Розділ
Ліцензія
Авторське право (c) 2025 Інформаційні технології в економіці та природокористуванні

TЦя робота ліцензується відповідно до ліцензії Creative Commons Attribution-ShareAlike 4.0 International License.