|
36 | 36 |
|
37 | 37 | == TL;DR — ключевые выводы |
38 | 38 |
|
39 | | -* **Статистически достоверные факторы поддерживаемости:** отсутствие циклов между модулями и в модели данных (на границе значимости), соблюдение ISP, разумное применение шаблонов проектирования; |
| 39 | +* **Статистически достоверные по Cramer’s V факторы поддерживаемости:** отсутствие циклов между модулями и в модели данных (на границе значимости), соблюдение ISP, разумное применение шаблонов проектирования; |
40 | 40 | * **Погранично значимые факторы:** применение ER-диаграмм; соблюдение CQS, и принципов дизайна компонентов (ADP, SDP и др.); использование (микро)сервисной архитектуры и минимизация синхронных вызовов между сервисами; высокий процент покрытия тестами и раннее тестирование; наличие гайдлайна разработки; |
41 | 41 | * **Статистически слабые, но показательные тренды:** проекты, где использовались простые подходы к моделированию данных и доступу к ним (плоская модель и агрегаты, SQL и легковесные ORM), а так же контролировалось количество зависимостей, чаще воспринимались как поддерживаемые; детройтская школа тестирования повышает уверенность в тестах; |
42 | 42 | * **Ложные ожидания:** SRP, OCP, LSP, закрытые слои (запрет обращений к репозиториям из контроллеров), модульные монолиты, парадигма (ООП/ФП/ПП) и школа тестирования не оказывают достоверного влияния на поддерживаемость; DIP оказывает статистически значимый *отрицательный* эффект на поддерживаемость; |
@@ -114,14 +114,23 @@ tags: |
114 | 114 | Они отражают вероятные тенденции, которые требуют дополнительной проверки, но *уже дают основание для практических выводов*. |
115 | 115 | Такие тренды часто сопровождаются высоким значением Cramer’s V > 0.2 при p-value 0.15-0.45 или заметным различием в процентах между группами. |
116 | 116 |
|
| 117 | +[NOTE] |
| 118 | +==== |
| 119 | +Методологическое примечание про Pseudo R² в логистической регрессии: |
| 120 | +
|
| 121 | +* Pseudo R² отражает предсказательную мощность модели и обычно принимает низкие значения в поведенческих/социальных данных; его нельзя напрямую сопоставлять с Cramer’s V (мерой силы связи в χ²-анализе). |
| 122 | +* В отчёте мы отдельно показываем: силу связи по Cramer’s V и предсказательную мощность (Pseudo R²) для логистики, а также указываем 95% CI и OR. |
| 123 | +* «Статистическая значимость» (p < 0.05) не тождественна «практической значимости»: низкий Pseudo R² означает, что фактор полезен как сигнал, но сам по себе объясняет небольшую долю вариативности. |
| 124 | +==== |
| 125 | + |
117 | 126 | == Как писать поддерживаемые кодовые базы backend-приложений |
118 | 127 |
|
119 | 128 | === Рекомендации, основанные на статистически достоверных факторах |
120 | 129 |
|
121 | 130 | **Соблюдать Interface Segregation Principle.** |
122 | 131 |
|
123 | 132 | * Очень сильная и статистически значимая связь с поддерживаемостью (χ² ≈ 23.51, p ≈ 0.00027, Cramer’s V ≈ 0.63). |
124 | | -* Логистическая регрессия подтверждает независимый вклад ISP при совместном учёте SOLID (N = 60): β ≈ 0.736 (OR ≈ 2.09; 95% CI OR ≈ [1.01; 4.33]), p ≈ 0.048; значимость модели в целом LLR p ≈ 0.0095. |
| 133 | +* Логистическая регрессия подтверждает независимый вклад ISP при совместном учёте SOLID (N = 60): β ≈ 0.736 (OR ≈ 2.09; 95% CI OR ≈ [1.01; 4.33]), p ≈ 0.048; значимость модели в целом LLR p ≈ 0.0095; Pseudo R² ≈ 0.19. |
125 | 134 | * В поддерживаемых проектах принцип соблюдался почти всегда: при ответах «часто», «иногда» и «всегда» подавляющее большинство систем оценивались как поддерживаемые. |
126 | 135 | Напротив, ответы «редко» и «никогда» почти полностью соответствовали неподдерживаемым проектам. |
127 | 136 | * Интерпретация: соблюдение ISP уменьшает сложность интерфейсов и локальные зависимости, что облегчает понимание системы. |
@@ -290,6 +299,14 @@ tags: |
290 | 299 | * Ни Лондонская (проверка взаимодействий), ни Детройтская (проверка состояния) школа не показали преимуществ в восприятии поддерживаемости (χ² ≈ 0.45, p ≈ 0.8, Cramer’s V ≈ 0.09). |
291 | 300 | * Интерпретация: важнее наличие тестов и их достаточность, чем конкретный стиль. |
292 | 301 |
|
| 302 | +== Ограничения и угрозы валидности |
| 303 | + |
| 304 | +* Размер выборки: N ≈ 60 — пилотная, исследовательская выборка; результаты трактуем как ассоциации/сигналы, требующие репликации на большей выборке; |
| 305 | +* Субъективность переменных: зависимая переменная — восприятие поддерживаемости; независимые — самоотчёт о практиках (шкалы «никогда/редко/…»). Возможны различия трактовок и смещения памяти/соц. желательности; |
| 306 | +* Неоднородность проектов: индустрии, стеки, возраст и размеры различаются; это повышает дисперсию оценок; |
| 307 | +* Множественные проверки: множество гипотез повышает риск ложноположительных; p-values приводятся без корректировки, ключевые выводы подтверждаются несколькими метриками (χ², Cramer’s V, логистика с OR/CI); |
| 308 | +* Практическая значимость: для однофакторных логистических моделей Pseudo R² низкий (≈ 0.03–0.06), поэтому выводы интерпретируются как направляющие сигналы, а не как сильные предикторы. |
| 309 | + |
293 | 310 | == Исходные данные |
294 | 311 |
|
295 | 312 | Файл с исходными данными, а также Python-скрипты анализа некоторых из характеристик доступны в https://github.com/ergonomic-code/Research-Maintable-Backends[репозитории исследования]. |
0 commit comments