Skip to content

Commit 05de5c7

Browse files
committed
Ещё немного полировки
1 parent b872fcf commit 05de5c7

1 file changed

Lines changed: 19 additions & 2 deletions

File tree

azhidkov.pro/content/posts/25/10/maintable-backend-report.adoc

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ tags:
3636

3737
== TL;DR — ключевые выводы
3838

39-
* **Статистически достоверные факторы поддерживаемости:** отсутствие циклов между модулями и в модели данных (на границе значимости), соблюдение ISP, разумное применение шаблонов проектирования;
39+
* **Статистически достоверные по Cramer’s V факторы поддерживаемости:** отсутствие циклов между модулями и в модели данных (на границе значимости), соблюдение ISP, разумное применение шаблонов проектирования;
4040
* **Погранично значимые факторы:** применение ER-диаграмм; соблюдение CQS, и принципов дизайна компонентов (ADP, SDP и др.); использование (микро)сервисной архитектуры и минимизация синхронных вызовов между сервисами; высокий процент покрытия тестами и раннее тестирование; наличие гайдлайна разработки;
4141
* **Статистически слабые, но показательные тренды:** проекты, где использовались простые подходы к моделированию данных и доступу к ним (плоская модель и агрегаты, SQL и легковесные ORM), а так же контролировалось количество зависимостей, чаще воспринимались как поддерживаемые; детройтская школа тестирования повышает уверенность в тестах;
4242
* **Ложные ожидания:** SRP, OCP, LSP, закрытые слои (запрет обращений к репозиториям из контроллеров), модульные монолиты, парадигма (ООП/ФП/ПП) и школа тестирования не оказывают достоверного влияния на поддерживаемость; DIP оказывает статистически значимый *отрицательный* эффект на поддерживаемость;
@@ -114,14 +114,23 @@ tags:
114114
Они отражают вероятные тенденции, которые требуют дополнительной проверки, но *уже дают основание для практических выводов*.
115115
Такие тренды часто сопровождаются высоким значением Cramer’s V > 0.2 при p-value 0.15-0.45 или заметным различием в процентах между группами.
116116

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+
117126
== Как писать поддерживаемые кодовые базы backend-приложений
118127

119128
=== Рекомендации, основанные на статистически достоверных факторах
120129

121130
**Соблюдать Interface Segregation Principle.**
122131

123132
* Очень сильная и статистически значимая связь с поддерживаемостью (χ² ≈ 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.
125134
* В поддерживаемых проектах принцип соблюдался почти всегда: при ответах «часто», «иногда» и «всегда» подавляющее большинство систем оценивались как поддерживаемые.
126135
Напротив, ответы «редко» и «никогда» почти полностью соответствовали неподдерживаемым проектам.
127136
* Интерпретация: соблюдение ISP уменьшает сложность интерфейсов и локальные зависимости, что облегчает понимание системы.
@@ -290,6 +299,14 @@ tags:
290299
* Ни Лондонская (проверка взаимодействий), ни Детройтская (проверка состояния) школа не показали преимуществ в восприятии поддерживаемости (χ² ≈ 0.45, p ≈ 0.8, Cramer’s V ≈ 0.09).
291300
* Интерпретация: важнее наличие тестов и их достаточность, чем конкретный стиль.
292301

302+
== Ограничения и угрозы валидности
303+
304+
* Размер выборки: N ≈ 60 — пилотная, исследовательская выборка; результаты трактуем как ассоциации/сигналы, требующие репликации на большей выборке;
305+
* Субъективность переменных: зависимая переменная — восприятие поддерживаемости; независимые — самоотчёт о практиках (шкалы «никогда/редко/…»). Возможны различия трактовок и смещения памяти/соц. желательности;
306+
* Неоднородность проектов: индустрии, стеки, возраст и размеры различаются; это повышает дисперсию оценок;
307+
* Множественные проверки: множество гипотез повышает риск ложноположительных; p-values приводятся без корректировки, ключевые выводы подтверждаются несколькими метриками (χ², Cramer’s V, логистика с OR/CI);
308+
* Практическая значимость: для однофакторных логистических моделей Pseudo R² низкий (≈ 0.03–0.06), поэтому выводы интерпретируются как направляющие сигналы, а не как сильные предикторы.
309+
293310
== Исходные данные
294311

295312
Файл с исходными данными, а также Python-скрипты анализа некоторых из характеристик доступны в https://github.com/ergonomic-code/Research-Maintable-Backends[репозитории исследования].

0 commit comments

Comments
 (0)