При внедрении нашей САПР-платформы мы часто сталкиваемся с тем, что мало кто в нашей стране может адекватно оценить функционал такого сложного и многогранного инструмента, как САПР, полно сравнить конкурирующие решения и сделать не предвзятую оценку. Чаще всего такую работу поручают местному «САПР-гуру» – специалисту-«фанату», который может быть (и скорее всего будет) предвзят, так как любит решение, используемое им в данный момент. В результате получаем список «вкусных», но мало используемых функций, которые «вы должны сделать – иначе никакого внедрения!», а тема импортозамещения плавно затухает. В ответ мы задумались об инструменте, который позволит сделать независимую оценку, реализовали его и теперь готовы им с вами поделиться.
Введение
Идея инструмента заключается в том, чтобы собрать в список функции, которые рядовой пользователь САПР применяет каждый день. То есть выбираем группу пользователей, включаем на их компьютерах ведение логов командной строки, собираем логи в определенную папку в сети организации, а затем анализируем их. Сама по себе схема очень удобна:
- все полностью автоматизировано: нужно только включить ведение журнала;
- все абсолютно конфиденциально: в журнал логов включается только информация о вызываемых командах, а не о самом проекте;
- сбор статистики абсолютно не мешает каждодневной работе пользователя: запись в журнал – достаточно незаметная операция.
Самое главное – такой сбор статистики позволяет провести максимально полный анализ: вы можете собирать журналы хоть в течение целого года, а программа будет аккуратно коллекционировать в папочке вызовы команд. Также вы можете проводить анализ, разбив пользователей по группам, – просто укажите разные папки для сбора статистики. А журналы затем покажут, какие команды платформы использовались, применялись ли какие-нибудь приложения или дополнительные разработки, каков уровень использования платформы и приложений (частота вызова команд). Словом, беспристрастная статистика и никакого субъективизма.
Возникает вопрос, а как включить такой журнал? Тут всё просто: в командной строке вводим команду Параметры (или OPTIONS для английской версии). Далее идем на закладку Открытие/Сохранение (или Open and save) и взводим опцию Вести файл журнала (или Maintain a log file) (рис. 1). Как результат выполнения этой команды в системную папку, задаваемую переменной LOGFILEPATH, будет сохраняться информация из командной строки (журнал команд).
В принципе, все это настраивается еще через три системные переменные: LOGFILEMODE (включить/отключить режим ведения журнала), LOGFILEPATH (путь до папки ведения журналов) и LOGFILENAME (путь до текущего журнала команд). У вас нет таких команд? Скорее всего, вы пользуетесь САПР, которая не позволяет вести журнал вызываемых команд, и здесь требуется не импортозамещение, а переход с конкурирующих решений – это чуть другая история...
Итак, включили журнал ведения логов, собрали логи в папку – что дальше?
Предварительная обработка данных
Дальше мы получаем груду файлов, внутри которых спрятаны используемые команды (рис. 2).
Если заглянуть внутрь, то мы увидим всё, что писалось в командную строчку: вызовы команд (то, что нас интересует), системные сообщения, ответы пользователя, значения переменных, сообщения об ошибках, предупреждения и т.д. Все это надо теперь обработать и составить список вызываемых команд с информацией о том, как часто вызывали каждую из них. Для этого мы написали простую утилиту на языке AutoIt, которая напускается на *.log-файлы в указанной папке, последовательно их обрабатывает и формирует массив команд с подсчетом частоты их вызова (рис. 3).
Работа с утилитой StatCAD очень проста: достаточно указать папку с логами, нажать на кнопку Анализ, дождаться окончания работы и, нажав на кнопку Показать статистику, получить список в отдельном окне. Данные из этого окна можно скопировать в Excel или текстовый формат – как вам удобнее. А дальше начинается творческая работа.
Обработка полученной статистики
Во-первых, мы должны в полученном списке выделить команды САПР-платформы, а значит необходим список штатных команд платформы, с которой сравниваем. Сейчас мы накопили порядка 2400 команд, системных переменных и алиасов-сокращений (как на русском, так и на английском языке), с которыми проводим сравнение – простое пересечение таблиц в Access позволяет одним щелчком мыши получить сходные и отличающиеся команды. Сложнее всего с отличающимися командами – их приходится анализировать вручную, отделяя синтаксические ошибки от команд приложений, команд, написанных пользователями и т.п. Зачастую результат удивляет (рис. 4) – статистика может показать, что доля платформы существенно превышает долю приложений.
Кроме того, мы можем сравнить список распознанных команд САПР-платформы со списком реализованных команд платформы nanoCAD Plus – это тоже пересечение двух таблиц в Access. В результате мы получим список команд, реализованных в режиме «один к одному» (полное совпадение).
Результаты анализа
И, наконец, список оставшихся команд разбивается на три части:
- Реализованный функционал, то есть команды, которые не проходят через командую строку nanoCAD Plus, но реализованы через интерфейс программы, и их отсутствие пользователь на практике не заметит. Например, команда PDFATTACH (вставка PDF-подложек) на данный момент не зарегистрирована в списке команд nanoCAD и тем не менее доступна из меню Вставка/Подложки…
- Альтернативный функционал, то есть команды, которые в силу особенностей разработки отличаются от аналогичных команд других САПР, но позволяют пользователю решать поставленные задачи аналогично или даже с более высокой производительностью. Например, работа с таблицами в среде nanoCAD Plus 7.0 заточена под российские стандарты оформления плюс операции сбора данных с текущего *.dwg-чертежа – достаточно уникальная функция, объединяющая несколько инструментов в один.
- Нереализованный функционал, то есть команды, которые сейчас не работают в среде nanoCAD Plus 7.0 и, увы, нет никакой альтернативы для их замены. Часть этих функций находится в разработке (например, Подшивки, Инструментальные палитры), часть – требует анализа и дополнительного согласования по реализации, а часть – явно необязательна к реализации (например, Вызов веб-сайта 360).
Третья часть с точки зрения анализа самая сложная – требуется проанализировать каждую команду, уточнить, что она делает, какая альтернатива возможна в платформе nanoCAD Plus (а может быть она уже и реализована) и, если команда отсутствует, то оценить, насколько отсутствующая функция необходима в работе организации. Это ручной аналитический труд, но в результате вы будете вознаграждены отличной говорящей диаграммой (рис. 5).
Но и это еще не всё – помните, что мы не просто сформировали список вызываемых команд, но и собрали статистику по частоте их вызова? И правда, одно дело – ответ на вопрос «реализована команда или нет?» и совершенно другое – «используется ли вызванная команда?». И тут тоже можно получить говорящие результаты (рис. 6): доля не реализованного в nanoCAD функционала может упасть до 1-3%! Это означает, что в подавляющем большинстве случаев пользователи не заметят разницы возможностей между nanoCAD и западными решениями.
Вместо заключения
Признаюсь, когда я впервые получил подобные результаты, у меня самого был шок. Получается, что платформа 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. Поверьте, это будет очень полезная для нас информация – на основании этих данных мы развиваем продукт, а вы получаете всё более удобный инструмент.