Автоматический анализ сцепки и связности кода в большом проекте
От: Mastak  
Дата: 10.01.13 19:56
Оценка: 3 (1)
Как известно, чтобы большой и сложный проект было легко развивать, достраивтаь и избегать ошибок и болезней роста, нужно чтобы он обладал максимальной сцепкой и минимальнйо связностью, ну то есть чтобы весь код можно было так разделить на кластеры (модули, классы — не важно), чтобы внутри кластера единицы кода (процедуры, функции) максимально взаимодействовали друг с другом, а вот между кластерами связей должно быть как можно меньше.

Есть большой проект, который развивался более-менее хаотично, и там за этими сцепками-связностями никто толком не следил. В итоге проект сейчас огребает все логичные проблемы: поиск ошибок убивает кучу времени, попытка нарастить функционал и добавить модули приводит к появлению всяческого полтергейста, и т.д.

Я знаю, что есть инструменты, которые позволяют из кода автоматически сгенерить, например UML диаграмму классов. Но в моем случае задача стоит чуть посложнее — нужно не только сгенерить диаграмму классов, но и выявить те самые кластеры и нарисовать и посчитать те самые сцепки и связности.

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

Вот есть в природе какой-нибудь инструмент, который бы облегчил или атвоматизировал до некоторой степени эту задачу? Наверняка же подобная проблема возникает не у меня одного и не впервые.
Re: Автоматический анализ сцепки и связности кода в большом проекте
От: cvetkov  
Дата: 11.01.13 05:42
Оценка:
сомневаюсь что есть инструмент автоматизирующий это.
а если и есть то он выделит кластеры из того что есть, а значит их трудно будет понять, так как они будут иметь случайные границы.

я бы начал в ручную выделять модули и следить за связями между ними.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re: Автоматический анализ сцепки и связности кода в большом проекте
От: Aikin Беларусь kavaleu.ru
Дата: 11.01.13 06:52
Оценка:
Здравствуйте, Mastak, Вы писали:

M>Как известно, чтобы большой и сложный проект было легко развивать, достраивтаь и избегать ошибок и болезней роста, нужно чтобы он обладал максимальной сцепкой и минимальнйо связностью, ну то есть чтобы весь код можно было так разделить на кластеры (модули, классы — не важно), чтобы внутри кластера единицы кода (процедуры, функции) максимально взаимодействовали друг с другом, а вот между кластерами связей должно быть как можно меньше.


M>Есть большой проект, который развивался более-менее хаотично, и там за этими сцепками-связностями никто толком не следил. В итоге проект сейчас огребает все логичные проблемы: поиск ошибок убивает кучу времени, попытка нарастить функционал и добавить модули приводит к появлению всяческого полтергейста, и т.д.


M>Я знаю, что есть инструменты, которые позволяют из кода автоматически сгенерить, например UML диаграмму классов. Но в моем случае задача стоит чуть посложнее — нужно не только сгенерить диаграмму классов, но и выявить те самые кластеры и нарисовать и посчитать те самые сцепки и связности.


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


M>Вот есть в природе какой-нибудь инструмент, который бы облегчил или атвоматизировал до некоторой степени эту задачу? Наверняка же подобная проблема возникает не у меня одного и не впервые.

Для .net есть NDepend. Вроде как раз этим и занимается. Есть неплохие визуализаторы зависимостей, есть метрики (82 code metrics)




СУВ, Aikin
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[2]: Автоматический анализ сцепки и связности кода в большом проекте
От: Mastak  
Дата: 11.01.13 16:42
Оценка:
Здравствуйте, Aikin,

Красиво! По сркинам очень похоже на то, что нужно! Увы, мы не пользуемся .NET. Есть ли что-нибудь подобное для Делфи?
Re[3]: Автоматический анализ сцепки и связности кода в большом проекте
От: Константин Россия  
Дата: 11.01.13 16:49
Оценка: 18 (1)
Здравствуйте, Mastak, Вы писали:

M>Здравствуйте, Aikin,


M>Красиво! По сркинам очень похоже на то, что нужно! Увы, мы не пользуемся .NET. Есть ли что-нибудь подобное для Делфи?


Для С++ есть прямой аналог: cppdepend
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.