Как известно, чтобы большой и сложный проект было легко развивать, достраивтаь и избегать ошибок и болезней роста, нужно чтобы он обладал максимальной сцепкой и минимальнйо связностью, ну то есть чтобы весь код можно было так разделить на кластеры (модули, классы — не важно), чтобы внутри кластера единицы кода (процедуры, функции) максимально взаимодействовали друг с другом, а вот между кластерами связей должно быть как можно меньше.
Есть большой проект, который развивался более-менее хаотично, и там за этими сцепками-связностями никто толком не следил. В итоге проект сейчас огребает все логичные проблемы: поиск ошибок убивает кучу времени, попытка нарастить функционал и добавить модули приводит к появлению всяческого полтергейста, и т.д.
Я знаю, что есть инструменты, которые позволяют из кода автоматически сгенерить, например UML диаграмму классов. Но в моем случае задача стоит чуть посложнее — нужно не только сгенерить диаграмму классов, но и выявить те самые кластеры и нарисовать и посчитать те самые сцепки и связности.
Цели: провести разумный редизайн архитектуры в пользу лучшей модульности и масштабируемости, порезать нафиг кучу лишних связей (вызовов функций, обращений к внешним переменным/объектам) между классами и юнитами, которые образовывались спонтанно, а не под влиянием здравого смысла. Но для того, чтобы это сделать, эти самые связи между кластерами нужно как минимум увидеть...
Вот есть в природе какой-нибудь инструмент, который бы облегчил или атвоматизировал до некоторой степени эту задачу? Наверняка же подобная проблема возникает не у меня одного и не впервые.