SOLID ЯК СИСТЕМА КОНСТРУКТИВНИХ ОБМЕЖЕНЬ У ПРОЄКТУВАННІ АРХІТЕКТУРИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

Автор(и)

  • Корнілов Іван Станіславович Національний університет біоресурсів і природокористування України image/svg+xml
  • Вайганг Ганна Олександрівна Національний університет біоресурсів і природокористування України image/svg+xml

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.

Завантаження

Опубліковано

2025-08-10

Номер

Розділ

Усі статті з випуску