При внедрении нашей САПР-платформы мы часто сталкиваемся с тем, что мало кто в нашей стране может адекватно оценить функционал такого сложного и многогранного инструмента как САПР, полно сравнить конкурирующие решения и сделать непредвзятую оценку. Чаще всего такую работу поручают местному «САПР-гуру» — специалисту-«фанату», который может быть (и, скорее всего, будет) предвзят, т.к. любит используемое им в текущий момент решение. В результате получаем список «вкусных», но малоиспользуемых функций, которые «вы должны сделать иначе никакого внедрения!», а тема импортозамещения плавно затухает. В ответ мы задумались об инструменте, который позволит сделать независимую оценку, реализовали его и теперь готовы им с вами поделиться.
Введение
Идея инструмента заключается в том, чтобы собрать в список функции, которые рядовой пользователь САПР использует в работе каждый день – т.е. выбираем группу пользователей, включаем на их компьютере ведение логов командной строки, собираем их в определенную папку в сети организации, а затем анализируем их. Сама по себе схема очень удобна:- все полностью автоматизировано: нужно только включить ведение журнала;
- все абсолютно конфиденциально: в журнал логов включается только информация о вызываемых командах, а не о самом проекте;
- сбор статистики абсолютно не мешает каждодневной работе пользователя: запись в журнал достаточно незаметная операция.
Самое главное — такой сбор статистики позволяет провести максимально полный анализ: вы можете собирать журналы хоть в течение целого года, а программа аккуратно будет коллекционировать вызовы команд в одну папочку. Также вы можете проводить анализ, разбив пользователей по группам – просто укажите разные папки для сбора статистики. А журналы затем покажут, какие команды платформы использовались, использовались ли какие-нибудь приложения или дополнительные разработки, какой уровень использования платформы и приложений (частота вызова команд) – т.е. непредвзятая чистая статистика и никакого субъективизма.
Возникает вопрос «а как включить такой журнал?». Тут все просто: в командной строке вводим команду «Параметры» (или «OPTIONS» для английской версии). Далее идем на закладку «Открытие\Сохранение» (или «Open and save»). И взводим опцию «Вести файл журнала» (или «Maintain a log file» — см. рис.1). В результате этой команды в системную папку, задаваемую переменной LOGFILEPATH, будет сохраняться информация из командной строки (журнал команд).
Рис. 1. Включив опцию «Вести файл журнала» вы сможете накапливать статистику о командах, используемых в САПР-решении, в папке, которая задается переменной LOGFILEPATH.
В принципе, все это настраивается еще через три системные переменные: LOGFILEMODE (включить\выключить режим ведения журнала), LOGFILEPATH (путь до папки ведения журналов) и LOGFILENAME (путь до текущего журнала команд). У вас нет таких команд и переменных? Скорее всего вы пользуетесь САПР, которая не позволяет вести журнал вызываемых команд, и у вас будет проходить не импортозамещение, а переход с конкурирующих решений – это чуть другая история…
Итак, включили журнал ведения логов, собрали логи в папку – что дальше?
Предварительная обработка данных
Полученные в результате ведения файлы представляют собой груду файлов, внутри которых спрятаны используемые команды (рис.2).Рис. 2. Типичная папка с журналами команд – на каждый файл отдельный журнал.
Если заглянуть внутрь, то мы увидим все, что писалось в САПР в командную строчку: вызовы команд (то, что нас интересует), системные сообщения, ответы пользователя, значения переменных, сообщения об ошибках, предупреждения и т.д. Все это теперь надо обработать и составить список вызываемых команд с информацией о том, как часто ее вызывали. Для этого мы написали простую утилиту на языке AutoIt, которая напускается на log-файлы в указанной папке, последовательно их обрабатывает и формирует массив команд с подсчетом частоты их вызова (рис.3).
Рис. 3. Утилита StatCAD, которая позволяет обработать журналы команд и сформировать список использованных команд.
Работа с утилитой StatCAD очень простая: достаточно указать папку с логами, нажать на кнопку «Анализ», дождаться окончания работы и, нажав на кнопку «Показать статистику», получить список в отдельном окне. Из этого окна можно данные скопировать в Excel или текстовый формат – как вам удобнее. Что дальше? А дальше начинается творческая работа.
Обработка полученной статистики
Во-первых, мы должны в найденном списке выделить команды САПР-платформы, т.е. необходимо иметь список штатных команд САПР-платформы, с которой сравниваем. Мы сейчас накопили порядка 2400 команд, системных переменных и алиасов-сокращений (как на русском, так и на английском языке), с которым проводим сравнение – простое пересечение таблиц в Access позволяет получить сходные и отличающиеся команды в один щелчок. Сложнее всего с отличающимися командами – их приходится анализировать вручную, отделяя синтаксические ошибки от команд приложений, команд, написанных пользователями, и т.п. Зачастую результат удивляет (см. рис.4) – статистика может показать, что доля платформы существенно превышает долю приложений:Рис. 4. Предварительный список команд может содержать как вызовы приложений, так и синтаксические ошибки.
Во-вторых, мы можем сравнить список распознанных команд САПР-платформы со списком реализованных команд платформы nanoCAD Plus – это тоже пересечение двух таблиц в Access. В результате мы получим список команд, реализованных в режиме «один-к-одному» (полное совпадение).
Результаты анализа
И, наконец, список оставшихся команд разбивается на три части:- Реализованный функционал, т.е. команды, которые не проходят через командую строку nanoCAD Plus, но тем не менее реализованы через интерфейс программы и их отсутствие пользователь на практике не заметит. Например, команда «PDFATTACH» (вставка PDF-подложек) не зарегистрирована на данный момент в списке команд nanoCAD, тем не менее доступна из меню Вставка\Подложки…
- Альтернативный функционал, т.е. команды, которые в силу особенности разработки отличаются от аналогичных команд других САПР, но позволяют пользователю решать поставленные задачи аналогично или даже с более высокой производительностью. Например, работа с таблицами в среде nanoCAD Plus 7.0 заточена под российские стандарты оформления плюс операции сбора данных с текущего DWG-чертежа – достаточно уникальная функция, объединяющая несколько инструментов в один.
- Не реализованный функционал, т.е. команды, которые сейчас не работают в среде nanoCAD Plus 7.0 и, увы, нет никакой альтернативы по их замене. Часть из этих функций находится в разработке (например, Подшивки, Инструментальные палитры), часть – требует анализа и дополнительного согласования по реализации, а часть – явно необязательна к реализации (например, «вызов веб-сайта 360»).
Третья часть с точки зрения анализа самая сложна – требуется проанализировать каждую команду, уточнить что она делает, есть ли альтернатива в платформе nanoCAD Plus (а может быть уже и реализована) и, если команда отсутствует, то оценить: насколько отсутствующая функция необходима в работе организации. Это ручной аналитический труд, но в результате вы будете награждены отличной говорящей диаграммой (рис. 5):
Рис. 5. Диаграмма, наглядно сравнивающая список команд nanoCAD Plus со списком команд западной САПР-платформы, используемой у одного из Заказчиков.
Но и это еще не все – помните, что мы не просто сформировали список вызываемых команд, но и собрали статистику по частоте их вызова? И правда, одно дело — ответ на вопрос «реализована команда или нет?» и совершенно другое — «используется ли вызванная команда?». И тут тоже можно получить говорящие результаты (см. рис.6) – доля не реализованного в nanoCAD функционала может упасть до 1-3%! Это означает, что в подавляющем числе случаев пользователи не заметят разницы между nanoCAD и западными решениями в функциональном плане:
Рис. 6. А если сравнивать команды по частоте вызова, то картина будет еще более убедительная.
Вместо заключения
Признаюсь, когда я впервые получил подобные результаты, у меня самого был шок. Получается, что на сегодняшний момент платформа nanoCAD может достаточно свободно замещать популярные западные решения в функциональном плане: в 97-99% случаях пользователи получат альтернативный инструмент для работы. На сегодняшний момент я провел подобный анализ в пяти организациях: соотношения команд примерно одинаковые и я перестаю удивляться.Тем не менее, я думаю, что результаты анализа могут сильно отличаются от одной организации к другой. Именно поэтому я хочу поделиться с вами всеми материалами – попробуйте провести анализ на своем предприятии и давайте совместно ответим на вопрос «возможно ли импортозамещение на nanoCAD Plus?». Что у меня есть:
- Утилита StatCAD 3.01, которая обрабатывает log-файлы и собирает статистику по командам используемой вами САПР-платформы. Делюсь с вами как исполняемым модулем (x32 и x64), так и AutoIt-скриптом (исходный код).
- Excel-таблица со списком известных на данный момент команд, системных переменных и сокращений как платформы nanoCAD, так и одной из известных западной САПР-платформы. Кроме того, таблица содержит список найденных отличающихся команд с анализом на тему того, к какой группе команд она относится (альтернатива, реализовано, не реализовано).
- Пример папки с log-файлами, на котором вы можете прогнать утилиту StatCAD 3.01. Лучше, конечно, сюда положить собранные ваши log-файлы.
- Excel- и Access-документ, анализирующий таблицы – просто поместите результаты утилиты StatCAD 3.01 в файл CLIENT_CMD.xlsx и в Access открывайте таблицы 02ACAD_CROSS, 02ACAD_NOTFOUND, 03ACAD-NCAD_CROSS, 04ACAD-NCAD_NOCROSS – думаю, что названия таблиц говорят сами за себя.
Если у вас не получается провести анализ собранной статистики своими силами, то я буду рад получить ваши log-файлы. Или Excel-таблицы со списком используемых вами команд (заполненный CLIENT_CMD.xlsx из приложенных архивов). В этом случае я смогу провести анализ самостоятельно и полученные результаты использовать для развития платформы nanoCAD. Поверьте, это будет очень полезная для нас информация – на основании этих данных мы развиваем продукт дальше, а вы получаете удобный инструмент.
Дисклеймер
Данный анализ демонстрирует принципиальную возможность или невозможность замены одного САПР-решения на другое, но не гарантирует результат. Любое внедрение кроме приведенного в статье технического аспекта связано с рядом других технических, организационных, психологических и прочих моментов. Именно поэтому мы рекомендуем работу по импортозамещению проводить вместе с авторизованными дилерами ЗАО Нанософт.UPD: По просьбам из лички — в архив с утилитой доложил x32 версию…
Комментарии (16)
Kemet
20.11.2015 18:39более интересный вопрос мог бы звучать так:
Могут ли свободные опенсорсные САПР-решения заменить nanoCAD? Давайте искать ответ…dom1n1k
20.11.2015 21:32А чем он интересен-то? Не то чтобы я фанат nanoCAD, но ценовая политика их коммерческой версии вполне разумна, для частного использования вообще бесплатно. Зачем вам исходный код САПР-системы, что там можно увидеть? Каковы шансы того, что непонятная опенсерсная система будет поддерживать требования отечественных ГОСТ-ов? Вам работать или идеалы опенсорса поддерживать?
vv_kuznetsov
21.11.2015 15:16Зачем вам исходный код САПР-системы, что там можно увидеть?
Можно исправить глюк. Например в DraftSight долгое время было поломано открывание файлов с кириллическими именами. Фикс бы занимал несколько строчек. Техподдержка на данный баг никак не реагировала.
Каковы шансы того, что непонятная опенсерсная система будет поддерживать требования отечественных ГОСТ-ов?
Никаких шансов нет. Это относится не только к open-source, но и ко всем остальным. Производитель САПР не обязан соблюдать все имеющиеся в мире стандарты.
Кстати, из того с чем мне приходилось работать лучшая поддержка ГОСТов из коробки у КОМПАС.
dom1n1k
21.11.2015 15:42Фикс бы занимал несколько строчек.
Ой ли? Кто сказал, что несколько строчек? Быть может, разработчик долго не исправлял баг не из вредности, а потому что там были какие-то проблемы, которые тянули за собой большой рефакторинг (как это часто бывает)? Если бы там было реально несколько строчек, почему бы не исправить.
Ну Компас на этом и взлетел, собственно. Сейчас это чуть ли не единственная отечественная САПР, которая реально конкурирует с западными аналогами (имея много своих проблем, но всё-таки перевалив уровень MVP).
NeoNN
21.11.2015 00:20А много ли свободных опенсорсных решений кроме FreeCAD?
vv_kuznetsov
21.11.2015 14:58C машиностроительными open-source САПР ситуация очень плохая. DWG-совместимой САПР нет. FreeCAD — это другой класс ПО. FreeCAD движется в сторону аналога SolidWorks. Сравнивать с ним Нанокад некорректно. LibreCAD имеет множество ограничений.
С САПР электроники ситуация намного лучше. Здесь есть почти полный набор инструментов для инженера.
vv_kuznetsov
21.11.2015 14:54Не могут. На данный момент времени DWG-совместимой open-source САПР не существует.
questor
20.11.2015 20:59Предметная область меня не интересует после окончания ВУЗа, да и о самой программе nanoCAD ничего не слышал, но статью прочитал с интересом. Пожалуй, один из лучших вариантов для пиара своего решения на хабре и аргументированное сравнение своей САПР с конкурентами.
tzlom
21.11.2015 00:56Импортозамещение кукарекали они, но системные требования: виндоуз XP, Vista, 7, 8
Fusion 360 стоит 300$ в год, а для студентов и стартапов с доходом менее $100,000 в год вообще бесплатен, плюс включает в себя средненький CAMvv_kuznetsov
21.11.2015 14:52Импортозамещение кукарекали они, но системные требования: виндоуз XP, Vista, 7, 8
Меня тоже всегда такое удивляет у наших импортозаместителей. Это не только Нанокада касается.
vv_kuznetsov
21.11.2015 15:02Fusion 360
Ещё есть кроссплатформенный BricsCAD (платный) и DraftSight (также кроссплатформенный и бесплатный)
RomanPyr
Запилите веб-сервис у себя на сайте: загружаешь архив с папкой логов и получаешь оценку.
dows
зачем? )) я пока не вижу смысла )) но исходный код решения есть, энтузиасты могут сделать )
RomanPyr
вот благодаря такому подходу отечественный софт всегда и проигрывает западному.
dows
возможно… но я вот все о своем меркантильном и целесообразном…