При внедрении нашей САПР-платформы мы часто сталкиваемся с тем, что мало кто в нашей стране может адекватно оценить функционал такого сложного и многогранного инструмента, как САПР, полно сравнить конкурирующие решения и сделать непредвзятую оценку. Чаще всего такую работу поручают местному «САПР-гуру» — специалисту-«фанату», который может быть (и скорее всего будет) предвзят, так как любит решение, используемое им в данный момент. В результате получаем список «вкусных», но малоиспользуемых функций, которые «вы должны сделать — иначе никакого внедрения!», а тема импортозамещения плавно затухает. В ответ мы задумались об инструменте, который позволит сделать независимую оценку, реализовали его и теперь готовы им с вами поделиться.

Введение

Идея инструмента заключается в том, чтобы собрать в список функции, которые рядовой пользователь САПР применяет каждый день. То есть выбираем группу пользователей, включаем на их компьютерах ведение логов командной строки, собираем логи в определенную папку в сети организации, а затем анализируем их. Сама по себе схема очень удобна:

  • все полностью автоматизировано: нужно только включить ведение журнала;
  • все абсолютно конфиденциально: в журнал логов включается только информация о вызываемых командах, а не о самом проекте;
  • сбор статистики абсолютно не мешает каждодневной работе пользователя: запись в журнал — достаточно незаметная операция.

Самое главное — такой сбор статистики позволяет провести максимально полный анализ: вы можете собирать журналы хоть в течение целого года, а программа будет аккуратно коллекционировать в папочке вызовы команд. Также вы можете проводить анализ, разбив пользователей по группам, — просто укажите разные папки для сбора статистики. А журналы затем покажут, какие команды платформы использовались, применялись ли какие-нибудь приложения или дополнительные разработки, каков уровень использования платформы и приложений (частота вызова команд). Словом, беспристрастная статистика и никакого субъективизма.

Возникает вопрос, а как включить такой журнал? Тут всё просто: в командной строке вводим команду Параметры (или OPTIONS для английской версии). Далее идем на закладку Открытие/Сохранение (или Open and save) и взводим опцию Вести файл журнала (или Maintain a log file) (рис. 1). Как результат выполнения этой команды в системную папку, задаваемую переменной LOGFILEPATH, будет сохраняться информация из командной строки (журнал команд).

Рис. 1. Включив опцию Вести файл журнала, вы сможете накапливать статистику о командах, используемых в САПР-решении. Эта статистика будет собрана в папке, которая задается переменной LOGFILEPATH
Рис. 1. Включив опцию Вести файл журнала, вы сможете накапливать статистику о командах, используемых в САПР-решении. Эта статистика будет собрана в папке, которая задается переменной LOGFILEPATH

В принципе, все это настраивается еще через три системные переменные: LOGFILEMODE (включить/отключить режим ведения журнала), LOGFILEPATH (путь до папки ведения журналов) и LOGFILENAME (путь до текущего журнала команд). У вас нет таких команд? Скорее всего, вы пользуетесь САПР, которая не позволяет вести журнал вызываемых команд, и здесь требуется не импортозамещение, а переход с конкурирующих решений — это чуть другая история…

Итак, включили журнал ведения логов, собрали логи в папку — что дальше?

Предварительная обработка данных

Дальше мы получаем груду файлов, внутри которых спрятаны используемые команды (рис. 2).

Рис. 2. Типичная папка с журналами команд - на каждый файл отдельный журнал
Рис. 2. Типичная папка с журналами команд - на каждый файл отдельный журнал

Если заглянуть внутрь, то мы увидим всё, что писалось в командную строчку: вызовы команд (то, что нас интересует), системные сообщения, ответы пользователя, значения переменных, сообщения об ошибках, предупреждения и т.д. Все это надо теперь обработать и составить список вызываемых команд с информацией о том, как часто вызывали каждую из них. Для этого мы написали простую утилиту на языке AutoIt, которая напускается на *.log-файлы в указанной папке, последовательно их обрабатывает и формирует массив команд с подсчетом частоты их вызова (рис. 3).

Рис. 3. Утилита StatCAD, которая позволяет обработать журналы команд и сформировать список использованных команд
Рис. 3. Утилита StatCAD, которая позволяет обработать журналы команд и сформировать список использованных команд

Работа с утилитой StatCAD очень проста: достаточно указать папку с логами, нажать на кнопку Анализ, дождаться окончания работы и, нажав на кнопку Показать статистику, получить список в отдельном окне. Данные из этого окна можно скопировать в Excel или текстовый формат — как вам удобнее. А дальше начинается творческая работа.

Обработка полученной статистики

Во-первых, мы должны в полученном списке выделить команды САПР-платформы, а значит необходим список штатных команд платформы, с которой сравниваем. Сейчас мы накопили порядка 2400 команд, системных переменных и алиасов-сокращений (как на русском, так и на английском языке), с которыми проводим сравнение — простое пересечение таблиц в Access позволяет одним щелчком мыши получить сходные и отличающиеся команды. Сложнее всего с отличающимися командами — их приходится анализировать вручную, отделяя синтаксические ошибки от команд приложений, команд, написанных пользователями и т.п. Зачастую результат удивляет (рис. 4) — статистика может показать, что доля платформы существенно превышает долю приложений.

Рис. 4. Предварительный список команд может содержать как вызовы приложений, так и синтаксические ошибки
Рис. 4. Предварительный список команд может содержать как вызовы приложений, так и синтаксические ошибки

Кроме того, мы можем сравнить список распознанных команд САПР-платформы со списком реализованных команд платформы nanoCAD Plus — это тоже пересечение двух таблиц в Access. В результате мы получим список команд, реализованных в режиме «один к одному» (полное совпадение).

Результаты анализа

И, наконец, список оставшихся команд разбивается на три части:

  1. Реализованный функционал, то есть команды, которые не проходят через командную строку nanoCAD Plus, но реализованы через интерфейс программы, и их отсутствие пользователь на практике не заметит. Например, команда PDFATTACH (вставка PDF-подложек) на данный момент не зарегистрирована в списке команд nanoCAD и тем не менее доступна из меню Вставка/Подложки
  2. Альтернативный функционал, то есть команды, которые в силу особенностей разработки отличаются от аналогичных команд других САПР, но позволяют пользователю решать поставленные задачи аналогично или даже с более высокой производительностью. Например, работа с таблицами в среде nanoCAD Plus 7.0 заточена под российские стандарты оформления плюс операции сбора данных с текущего *.dwg-чертежа — достаточно уникальная функция, объединяющая несколько инструментов в один.
  3. Нереализованный функционал, то есть команды, которые сейчас не работают в среде nanoCAD Plus 7.0 и, увы, нет никакой альтернативы для их замены. Часть этих функций находится в разработке (например, Подшивки, Инструментальные палитры), часть — требует анализа и дополнительного согласования по реализации, а часть — явно необязательна к реализации (например, Вызов веб-сайта 360).

Третья часть с точки зрения анализа самая сложная — требуется проанализировать каждую команду, уточнить, что она делает, какая альтернатива возможна в платформе nanoCAD Plus (а может быть она уже и реализована) и, если команда отсутствует, то оценить, насколько отсутствующая функция необходима в работе организации. Это ручной аналитический труд, но в результате вы будете вознаграждены отличной говорящей диаграммой (рис. 5).

Рис. 5. Диаграмма, наглядно сравнивающая список команд nanoCAD Plus со списком команд западной САПР-платформы, используемой у одного из заказчиков
Рис. 5. Диаграмма, наглядно сравнивающая список команд nanoCAD Plus со списком команд западной САПР-платформы, используемой у одного из заказчиков

Но и это еще не всё — помните, что мы не просто сформировали список вызываемых команд, но и собрали статистику по частоте их вызова? И правда, одно дело — ответ на вопрос «реализована команда или нет?» и совершенно другое — «используется ли вызванная команда?». И тут тоже можно получить говорящие результаты (рис. 6): доля не реализованного в nanoCAD функционала может упасть до 1−3%! Это означает, что в подавляющем большинстве случаев пользователи не заметят разницы возможностей между nanoCAD и западными решениями.

Рис. 6. А если сравнивать команды по частоте вызова, картина будет еще более убедительной
Рис. 6. А если сравнивать команды по частоте вызова, картина будет еще более убедительной

Вместо заключения

Признаюсь, когда я впервые получил подобные результаты, у меня самого был шок. Получается, что платформа nanoCAD может достаточно свободно замещать популярные западные решения в функциональном плане: в 97−99% случаев пользователи получат альтернативный инструмент для работы. На сегодня я провел подобный анализ в пяти организациях: соотношения команд примерно одинаковы, и я перестаю удивляться.

Тем не менее, думаю, что результаты анализа могут сильно отличаться от одной организации к другой. Именно поэтому я хочу поделиться всеми материалами — попробуйте провести анализ на своем предприятии, и давайте совместно ответим на вопрос «Возможно ли импортозамещение на nanoCAD Plus?». Что у меня есть:

  • Утилита StatCAD 3.01, которая обрабатывает *.log-файлы и собирает статистику по командам используемой вами САПР-платформы. Делюсь с вами как исполняемым модулем, так и AutoIt-скриптом (исходный код).
  • Excel-таблица со списком известных на данный момент команд, системных переменных и сокращений как платформы nanoCAD, так и одной из известных западных САПР-платформ. Кроме того, таблица содержит список найденных отличающихся команд с анализом на тему того, к какой группе команд относится каждая из них (альтернатива, реализовано, не реализовано).
  • Пример папки с *.log-файлами, на котором вы можете «прогнать» утилиту StatCAD 3.01. Лучше, конечно, положить сюда ваши собранные *.log-файлы.
  • Excel- и Access-документ, анализирующий таблицы — просто поместите в файл CLIENT_CMD.xlsx результат работы StatCAD 3.01 и открывайте в Access таблицы 02ACAD_CROSS, 02ACAD_NOTFOUND, 03ACAD-NCAD_CROSS, 04ACAD-NCAD_NOCROSS — думаю, что названия таблиц говорят сами за себя.

Если у вас не получается провести анализ собранной статистики своими силами, буду рад получить ваши *.log-файлы. Или Excel-таблицы со списком используемых вами команд (заполненный CLIENT_CMD.xlsx из приложенных архивов). В этом случае я смогу провести анализ самостоятельно и использовать полученные результаты для развития платформы nanoCAD. Поверьте, это будет очень полезная для нас информация — на основании этих данных мы развиваем продукт, а вы получаете всё более удобный инструмент.

Дисклеймер

Данный анализ демонстрирует принципиальную возможность или невозможность замены одного САПР-решения другим, но не гарантирует результата. Любое внедрение, кроме приведенного в статье технического аспекта, связано с рядом других технических, организационных, психологических и прочих моментов. Именно поэтому мы рекомендуем работу по импортозамещению проводить совместно с авторизованными дилерами ЗАО «Нанософт».

Денис Ожигин
ЗАО «Нанософт»
Тел.: (495) 645−8626
E-mail: