Обработка "Вызовы общих модулей" (8.2)


Обработка анализирует код общих модулей конфигурации и позволяет получать следующие отчёты: процедуры и функции общих модулей по количеству их вызовов из других общих модулей конфигурации, количество вызовов других общих модулей из данного общего модуля, схема взаимодействия общих модулей.

Обработка анализирует код общих модулей конфигурации (выгруженный в текстовые файлы с помощью ключа командной строки /DumpConfigFiles) и позволяет получать следующие отчёты:

  1. Процедуры и функции общих модулей по количеству их вызовов из других общих модулей конфигурации. Показатель можно применять для выявления потенциально наиболее востребованных процедур и функций с целью оптимизации их работы в системах критичных к производительности. Полезно, например, при крупном внедрении с заранее неизвестными и неотлаженными бизнес-процессами (когда мы не можем определить реально наиболее востребованные процедуры и функции), либо при создании типового тиражируемого решения.
  2. Количество вызовов других общих модулей из данного общего модуля. Большое количество вызовов других модулей — один из показателей сложности модуля (Высокий коэффициен разделения по выходу — более 7-ми в примере С. Макконела (Совершенный код, С. Макконнелл, Code Complete, 2-ое издание, 2005) по взаимодействию классов), возможно следует разделить функционал модуля на несколько модулей.
  3. Схема взаимодействия общих модулей. Схема (карта) вызовов строится как расшифровка к двум отчётам обработки двойным щелчком по названию модуля. Карта строится в MS Excel. Карта представляет из себя схему взаимодействия расшифровываемого модуля с другими общими модулями: модули, которые вызывают данный модуль, модули, которые вызывает данный модуль и связи между этими модулями.

Деление кода между общими модулями носит, как правило, функционально-прикладной (деление на модули с флагами Клиент, Сервер, ВнешнееСоединение и т.п.) и логический характер. При этом модули разделённые по функциональным причинам (например АдресныйКлассификатор, АдресныйКлассификаторКлиент, АдресныйКлассификаторКлиентСервер) образуют единый логический блок. Логическое деление производится для эффективного управления сложностью исходного кода конфигурации.

Если модуль взаимодействует с логически (но не функционально) связанными с ним модулями по принципу "все вызывают всех", то выгода от их деления исчезает (подробнее см. Совершенный код, С. Макконнелл, Code Complete, 2-ое издание, 2005, стр. 80 на примере подсистем). Энтропия в таких системах только возрастает, что приводит к сложностям в сопровождении. Нормальная схема взаимодействия логически разделённых модулей должна быть ациклическим графом.

 Особенности и ограничения работы

 1. Исходные коды модулей выгружаются с помощью команды системы:

ПутьКПрограмме+"1cv8.exe DESIGNER /F """+ПутьКБазе+""""+СтрокаПользователя+" /DumpConfigFiles """+ПутьККаталогуДляВыгрузки+""" -Module"

Можно выгрузить самому, либо с помощью кнопки "Выгрузить" в обработке. Использование команды системы влечёт за собой соответствующие ограничения, остающиеся на совести пользователя обработки: у пользователя должны быть права на запись в каталог выгрузки, на чтение в каталоге базы. У пользователя 1С, под которым запускается обработка, должны быть права на запуск Конфигуратора анализируемой базы и т.п.

Ограничение: На данный момент выгрузка исходных кодов работает с файловыми базами и пользователем без пароля.

По кнопке "Полная карта вызовов" можно постросить полную схему взаимодействия общих модулей конфигурации. Практической ценности данная функция не несёт ввиду большого количества модулей в типовых конфигурациях и сложности их взаимодействия. Ценность исключительно "эстетическая".

Nota bene: Обработка писалась для себя, также тестировал на УТ 11, БП 3.0 (ознакомительной). Пока на правах бета версии. Если что-либо из моих рассуждений покажется неоднозначным — всегда готов к дискуссии в комментариях.

Файлы обработки:

-