SlideShare uma empresa Scribd logo
1 de 33
Десятая независимая научно-практическая 
конференция «Разработка ПО 2014» 
23 - 25 октября, Москва 
Собрать нельзя клонировать. Как выбрать 
подход к созданию кроссплатформенных 
САПР приложений? 
Илья Слободин 
ЗАО «Нанософт»
Введение в тему
Введение в тему
Введение в тему
• Краткая история кроссплатформенности в чертёжных САПР, 
от 80-х до наших дней. Субъективно, так, как мы её видели 
• Наш опыт: три подхода к кроссплатформенности 
и две точки зрения: 
1. как разработчика САПР приложений 
2. как разработчика САПР платформы nanoCAD 
• Антипаттерны портирования 
План доклада
Об авторе 
Впервые принял участие в разработке САПР 
в 1994 году, будучи студентом 
Разрабатывал ПО для: 
• архитектурной реставрации, 
восстановления геометрии по архивным фотографиям 
• производства кухонной мебели 
• обработки сканированных чертежей 
В настоящее время: руководитель 
проекта «Клуб разработчиков nanoCAD»
AutoCAD. Безальтернативно* 
Начало 80-x – середина 90-х 
Виды API: 
1985 – AutoLISP 
1990 – ADS 
(функции AutoLISP на C) 
1994 – ObjectARX на C++ 
* Напомню, что это весьма упрощённый и субъективный взгляд на историю
Середина 90-х – середина 2000-х 
1996. Autodesk покупает крупнейшего разработчика приложений 
под AutoCAD – Softdesk 
•Softdesk разрабатывал IntelliCAD – собственную САПР платформу 
на замену AutoCAD 
•После антимонопольного процесса IntelliCAD куплен Visio, 
которую в свою очередь купил Microsoft… 
• … а IntelliCAD в 1999 был выделен в 
IntelliCAD Technology Consortium, ITC
Середина 90-х – середина 2000-х 
В 1998 ведущие САПР компании (кроме Autodesk) сообща 
разрабатывают независимую библиотеку: OpenDWG/Teigha 
Для этого создана некоммерческая организация 
OpenDWG Alliance (сейчас Open Design Alliance, ODA) 
ODA зарегистрирован в США, разработка ведётся в России
Open source и «open source» в САПР 
Исходный код Teigha и IntelliCAD доступен членам 
соответствующих организаций ODA и ITC 
Разработка планируется исходя из пожеланий членов ODA и ITC 
Члены организаций могут вносить свои изменения и дополнения в 
исходный код и выпускать продукты на модифицированных 
библиотеках
Open source и «open source» в САПР 
Существующие свободные (GPL/LGPL) САПР не играют заметной 
роли в проектных организациях. Одна из причин: отсутствует 
полноценная поддержка формата DWG 
Разработка свободной библиотеки LibreDWG стоит на 9 месте 
в списке из 15 высокоприоритетных свободных проектов
Середина 2000-х – наши дни 
К середине 2000-х создано множество продуктов на базе IntelliCAD 
Совместимость IntelliCAD API: LISP, ADS, COM 
С++ API подобен, но не совместим c ObjectARX 
Ведущие продукты на базе IntelliCAD: BricsCAD и ZWCAD, 
разрабатывают собственные библиотеки для совместимости 
С++ и .NET API 
В начале 2010-x BricsCAD и ZWCAD, отказываются 
от IntelliCAD, переписывают платформу «с нуля».
Середина 2000-х – наши дни 
В 2008 выпущены первые 
приложения на отечественной 
альтернативной САПР nanoCAD 
За основу взята собственная платформа – 
гибридный растрово-векторный редактор Spotlight
nanoCAD API 
В 2009 интегрирована библиотека Teigha, 
основным форматом файла стал DWG 
В 2011: 
•релиз платформы nanoCAD как самостоятельного продукта 
•открыт API, заработал «Клуб разработчиков nanoCAD» 
В 2012 – выход на международный рынок 
Совместимость nanoCAD API: LISP, ADS, COM, NRX, .NET
Зачем нужен nanoCAD? 
Ответ 2008 года: Кризис 
•AutoCAD дорог, и заметно дороже наших приложений 
•Приложение на собственной платформе продаётся по цене 
приложения под AutoCAD 
•Цена nanoCAD = 0 
Ответ 2014 года: Санкции 
•Правительство США запретило Autodesk продавать AutoCAD и 
другие продукты российским компаниям, попавшим под санкции
Зачем портировать САПР приложения? 
В проектных организациях сосуществуют САПР платформы 
от разных производителей 
Обмен чертежами со смежниками – ключевая часть работы 
проектной организации. Де-факто формат – DWG 
Крайне важна совместимость чертежей и возможность 
последовательно редактировать чертёж в различных САПР 
Для полноценной работы САПР приложение должно 
существовать на всех используемых платформах
Одна операция: с приложением и без 
Угол сюда 
Баба Яга 
С приложением: 
4 стены 
2 окна 
1 дверь 
Без приложения: 
525 отрезков
Наш опыт – три разных подхода 
Начиная с 2008 года, на nanoCAD портировано 
более 10 существующих под AutoCAD приложений 
В процессе портирования оформились три подхода: 
1.Клонирование кода 
2.Создание совместимого API 
3.Создание кроссплатформенного фреймворка
1. Клонирование кода 
Подход 1. Клонирование кода. Создание параллельных подсистем 
или приложений 
Начальные условия: 
•Основная часть продукта написана на .NET 
и независима от САПР 
•САПР используется для автоматического создания 
и последующего оформления чертежей
1. Клонирование кода 
Подход 1. Клонирование кода. Создание параллельных подсистем 
или приложений 
Решение на стороне приложения: 
•САПР часть, написанная на С++, была клонирована и 
адаптирована к иерархии классов OdDb* 
•Все изменения вносятся параллельно и независимо 
под каждую платформу 
•Основная часть продукта, написанная на .NET и независимая 
от САПР, остаётся неизменной
2. Создание совместимого API 
Подход 2. Создание совместимого API 
Начальные условия: 
•Продукты являются объёмными САПР приложениями, широко 
использующими возможности САПР платформы 
•Клонирование кода приводит к практически удвоению затрат на 
разработку и поддержку продуктов
2. Создание совместимого API 
Подход 2. Создание совместимого API 
Решение на стороне платформы: 
•Создан шлюз, совместимый по API с AutoCAD 
•Шлюз транслирует вызовы NRX (классы NcDb*) 
в вызовы nanoCAD (классы OdDb*) 
•NRX совместим с ObjectARX (классы AcDb*) 
•.NET: классы в пространстве имён HostMgd 
совместимы с классами в Autodesk.AutoCAD 
•Приложения под обе платформы строятся из единого 
исходного кода
3. Создание фреймворка 
Подход 3. Создание кроссплатформенного фреймворка 
Начальные условия: 
•Продукты написаны при помощи C++ фреймворка, упрощающего 
код приложения и абстрагирующего детали реализации API 
AutoCAD
3. Создание фреймворка 
Подход 3. Создание кроссплатформенного фреймворка 
Кросс-платформенное решение MultiCAD API: 
•Фреймворк создан для AutoCAD 
•Стал неотъемлемой частью nanoCAD 
•Перенесён на ZWCAD 
•Приложения бинарно совместимы на всех трёх платформах
Развитие MultiCAD: MultiCAD.NET 
В 2012 году в nanoCAD 4.5 выпущен новый вид API: MultiCAD.NET 
•Позволяет создавать пользовательские примитивы на .NET 
•Используется стандартная .NET сериализация вместо ручного 
описания dwgInFields()/dwgOutFields() 
•MultiCAD.NET расширения работают без перекомпиляции 
в nanoCAD, AutoCAD, ZWCAD
Антипаттерны портирования 
Основные причины, мешающие портированию: 
•Ожидание идеального API 
•Нежелание использовать workaround, работающий 
во всех системах 
•Использование побочных эффектов
Подождём идеального API? 
Подход «Подождём, пока API станет 
полностью совместим» – не работает 
Если разработчик САПР платформы 
не знает о существовании проблемы 
совместимости, она не будет исправлена 
В первую очередь реализуются пожелания 
активных разработчиков, это естественный процесс
Подождём идеального API? 
Общеупотребительный API 
Специфичный API
Не всё будет реализовано 
в ближайшем будущем 
Часто существует обходное 
решение, которое работает 
во всех платформах. В этом 
случае запрос на доработку, 
вероятно, будет отложен 
Есть workaround? Используй! 
Проблемы, не имеющие обходных путей, очевидно, имеют 
больший приоритет
Побочные эффекты в разных 
САПР платформах разные 
Используйте функционал 
по прямому назначению 
Нет побочным эффектам! 
Абстрактный пример: 
•Обнаружено, что функция печати умеет умножать числа 
•Не стоит использовать её для умножения, в другой платформе 
этого эффекта может не быть
Серебряной пули нет… 
…но есть сотрудничество разработчиков 
САПР приложений и САПР платформы
История мировых САПР 
http://cadhistory.net 
The Engineering Design Revolution 
The People, Companies and 
Computer Systems That Changed 
Forever the Practice of Engineering 
By 
David E. Weisberg

Mais conteúdo relacionado

Destaque

Урок 8: Лемматизация - Леонид Гроховский
Урок 8: Лемматизация - Леонид ГроховскийУрок 8: Лемматизация - Леонид Гроховский
Урок 8: Лемматизация - Леонид ГроховскийЛеонид Гроховский
 
Факультет "Инженерная школа" - ФИШка Московского Политеха
Факультет "Инженерная школа" - ФИШка Московского ПолитехаФакультет "Инженерная школа" - ФИШка Московского Политеха
Факультет "Инженерная школа" - ФИШка Московского ПолитехаАлександр Владыка
 
Московский Политех, Олимпиада НТИ, Инженерная Школа и Приём 2017
Московский Политех, Олимпиада НТИ, Инженерная Школа и Приём 2017Московский Политех, Олимпиада НТИ, Инженерная Школа и Приём 2017
Московский Политех, Олимпиада НТИ, Инженерная Школа и Приём 2017Александр Владыка
 
От приказа до посвята: что ты будешь делать в августе 2016
От приказа до посвята: что ты будешь делать в августе 2016От приказа до посвята: что ты будешь делать в августе 2016
От приказа до посвята: что ты будешь делать в августе 2016Александр Владыка
 
Информация о работе кафедры САПР
Информация о работе кафедры САПРИнформация о работе кафедры САПР
Информация о работе кафедры САПРDanil
 
САПР для сборного железобетона
САПР для сборного железобетонаСАПР для сборного железобетона
САПР для сборного железобетонаKate Pokrovskaya
 
ХимБиоТех Политеха: Факультет химической технологии и биотехнологии
ХимБиоТех Политеха: Факультет химической технологии и биотехнологииХимБиоТех Политеха: Факультет химической технологии и биотехнологии
ХимБиоТех Политеха: Факультет химической технологии и биотехнологииАлександр Владыка
 
Digital коммуникации новости_и_кейсы_июль_2014
Digital коммуникации новости_и_кейсы_июль_2014Digital коммуникации новости_и_кейсы_июль_2014
Digital коммуникации новости_и_кейсы_июль_2014Oksana Selendeeva
 
Polytech Go: развеем неопределённость и поможем подружиться с Московским Поли...
Polytech Go: развеем неопределённость и поможем подружиться с Московским Поли...Polytech Go: развеем неопределённость и поможем подружиться с Московским Поли...
Polytech Go: развеем неопределённость и поможем подружиться с Московским Поли...Александр Владыка
 
10 главных фактов для маркетинг-директора (январь 2015)
10 главных фактов для маркетинг-директора (январь 2015)10 главных фактов для маркетинг-директора (январь 2015)
10 главных фактов для маркетинг-директора (январь 2015)Oksana Selendeeva
 
Новые направления для MICE мероприятий
Новые направления для MICE мероприятийНовые направления для MICE мероприятий
Новые направления для MICE мероприятийOksana Selendeeva
 
Revit Precast: конструирование и компьютерное управление производством железо...
Revit Precast: конструирование и компьютерное управление производством железо...Revit Precast: конструирование и компьютерное управление производством железо...
Revit Precast: конструирование и компьютерное управление производством железо...Kate Pokrovskaya
 
10 главных фактов для маркетинг-директора (май 2015)
10 главных фактов для маркетинг-директора (май 2015)10 главных фактов для маркетинг-директора (май 2015)
10 главных фактов для маркетинг-директора (май 2015)Oksana Selendeeva
 
"Россия удивляет"
"Россия удивляет""Россия удивляет"
"Россия удивляет"ВЦИОМ
 
Динамика социальных настроений, проблемы и перспективы
Динамика социальных настроений, проблемы и перспективыДинамика социальных настроений, проблемы и перспективы
Динамика социальных настроений, проблемы и перспективыВЦИОМ
 
Кружки Инженерной школы (факультета)
Кружки Инженерной школы (факультета)Кружки Инженерной школы (факультета)
Кружки Инженерной школы (факультета)Александр Владыка
 
Социально-политическая ситуация в Армении накануне парламентских выборов
Социально-политическая ситуация в Армении накануне парламентских выборовСоциально-политическая ситуация в Армении накануне парламентских выборов
Социально-политическая ситуация в Армении накануне парламентских выборовВЦИОМ
 

Destaque (20)

Урок 8: Лемматизация - Леонид Гроховский
Урок 8: Лемматизация - Леонид ГроховскийУрок 8: Лемматизация - Леонид Гроховский
Урок 8: Лемматизация - Леонид Гроховский
 
Факультет "Инженерная школа" - ФИШка Московского Политеха
Факультет "Инженерная школа" - ФИШка Московского ПолитехаФакультет "Инженерная школа" - ФИШка Московского Политеха
Факультет "Инженерная школа" - ФИШка Московского Политеха
 
Московский Политех, Олимпиада НТИ, Инженерная Школа и Приём 2017
Московский Политех, Олимпиада НТИ, Инженерная Школа и Приём 2017Московский Политех, Олимпиада НТИ, Инженерная Школа и Приём 2017
Московский Политех, Олимпиада НТИ, Инженерная Школа и Приём 2017
 
От приказа до посвята: что ты будешь делать в августе 2016
От приказа до посвята: что ты будешь делать в августе 2016От приказа до посвята: что ты будешь делать в августе 2016
От приказа до посвята: что ты будешь делать в августе 2016
 
Информация о работе кафедры САПР
Информация о работе кафедры САПРИнформация о работе кафедры САПР
Информация о работе кафедры САПР
 
САПР для сборного железобетона
САПР для сборного железобетонаСАПР для сборного железобетона
САПР для сборного железобетона
 
ХимБиоТех Политеха: Факультет химической технологии и биотехнологии
ХимБиоТех Политеха: Факультет химической технологии и биотехнологииХимБиоТех Политеха: Факультет химической технологии и биотехнологии
ХимБиоТех Политеха: Факультет химической технологии и биотехнологии
 
Sberbank Credit Card
Sberbank Credit CardSberbank Credit Card
Sberbank Credit Card
 
Digital коммуникации новости_и_кейсы_июль_2014
Digital коммуникации новости_и_кейсы_июль_2014Digital коммуникации новости_и_кейсы_июль_2014
Digital коммуникации новости_и_кейсы_июль_2014
 
Polytech Go: развеем неопределённость и поможем подружиться с Московским Поли...
Polytech Go: развеем неопределённость и поможем подружиться с Московским Поли...Polytech Go: развеем неопределённость и поможем подружиться с Московским Поли...
Polytech Go: развеем неопределённость и поможем подружиться с Московским Поли...
 
10 главных фактов для маркетинг-директора (январь 2015)
10 главных фактов для маркетинг-директора (январь 2015)10 главных фактов для маркетинг-директора (январь 2015)
10 главных фактов для маркетинг-директора (январь 2015)
 
Новые направления для MICE мероприятий
Новые направления для MICE мероприятийНовые направления для MICE мероприятий
Новые направления для MICE мероприятий
 
Revit Precast: конструирование и компьютерное управление производством железо...
Revit Precast: конструирование и компьютерное управление производством железо...Revit Precast: конструирование и компьютерное управление производством железо...
Revit Precast: конструирование и компьютерное управление производством железо...
 
10 главных фактов для маркетинг-директора (май 2015)
10 главных фактов для маркетинг-директора (май 2015)10 главных фактов для маркетинг-директора (май 2015)
10 главных фактов для маркетинг-директора (май 2015)
 
"Россия удивляет"
"Россия удивляет""Россия удивляет"
"Россия удивляет"
 
Динамика социальных настроений, проблемы и перспективы
Динамика социальных настроений, проблемы и перспективыДинамика социальных настроений, проблемы и перспективы
Динамика социальных настроений, проблемы и перспективы
 
Кружки Инженерной школы (факультета)
Кружки Инженерной школы (факультета)Кружки Инженерной школы (факультета)
Кружки Инженерной школы (факультета)
 
Горное дело (21.05.04)
Горное дело (21.05.04)Горное дело (21.05.04)
Горное дело (21.05.04)
 
Социально-политическая ситуация в Армении накануне парламентских выборов
Социально-политическая ситуация в Армении накануне парламентских выборовСоциально-политическая ситуация в Армении накануне парламентских выборов
Социально-политическая ситуация в Армении накануне парламентских выборов
 
2015 ws_cad_mami
 2015 ws_cad_mami 2015 ws_cad_mami
2015 ws_cad_mami
 

Semelhante a Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных САПР приложений? Презентация доклада на конференции CEE-SECR-2014

Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"IT Event
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Anthony Marchenko
 
Использование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектахИспользование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектахMikhail Shcherbakov
 
Platypus platform ivbit
Platypus platform ivbitPlatypus platform ivbit
Platypus platform ivbitjskonst
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Storesandy97
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуAndrew Gubskiy
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в ЯндексеYandex
 
Разработка кросплатформенных приложений
Разработка кросплатформенных приложенийРазработка кросплатформенных приложений
Разработка кросплатформенных приложенийbarbariska89
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в ЯндексеYandex
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в ЯндексеYandex
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...Yandex
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...Yandex
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)Alexander Bausk
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьScrumTrek
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьDenis Izmaylov
 
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...Microsoft
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформыSQALab
 

Semelhante a Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных САПР приложений? Презентация доклада на конференции CEE-SECR-2014 (20)

Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
 
YaC 2013 Notes
YaC 2013 NotesYaC 2013 Notes
YaC 2013 Notes
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 
Использование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектахИспользование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектах
 
Embarcadero strategy
Embarcadero strategyEmbarcadero strategy
Embarcadero strategy
 
Platypus platform ivbit
Platypus platform ivbitPlatypus platform ivbit
Platypus platform ivbit
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в Яндексе
 
Разработка кросплатформенных приложений
Разработка кросплатформенных приложенийРазработка кросплатформенных приложений
Разработка кросплатформенных приложений
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в Яндексе
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в Яндексе
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
 
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
 

Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных САПР приложений? Презентация доклада на конференции CEE-SECR-2014

  • 1. Десятая независимая научно-практическая конференция «Разработка ПО 2014» 23 - 25 октября, Москва Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных САПР приложений? Илья Слободин ЗАО «Нанософт»
  • 5. • Краткая история кроссплатформенности в чертёжных САПР, от 80-х до наших дней. Субъективно, так, как мы её видели • Наш опыт: три подхода к кроссплатформенности и две точки зрения: 1. как разработчика САПР приложений 2. как разработчика САПР платформы nanoCAD • Антипаттерны портирования План доклада
  • 6. Об авторе Впервые принял участие в разработке САПР в 1994 году, будучи студентом Разрабатывал ПО для: • архитектурной реставрации, восстановления геометрии по архивным фотографиям • производства кухонной мебели • обработки сканированных чертежей В настоящее время: руководитель проекта «Клуб разработчиков nanoCAD»
  • 7. AutoCAD. Безальтернативно* Начало 80-x – середина 90-х Виды API: 1985 – AutoLISP 1990 – ADS (функции AutoLISP на C) 1994 – ObjectARX на C++ * Напомню, что это весьма упрощённый и субъективный взгляд на историю
  • 8. Середина 90-х – середина 2000-х 1996. Autodesk покупает крупнейшего разработчика приложений под AutoCAD – Softdesk •Softdesk разрабатывал IntelliCAD – собственную САПР платформу на замену AutoCAD •После антимонопольного процесса IntelliCAD куплен Visio, которую в свою очередь купил Microsoft… • … а IntelliCAD в 1999 был выделен в IntelliCAD Technology Consortium, ITC
  • 9. Середина 90-х – середина 2000-х В 1998 ведущие САПР компании (кроме Autodesk) сообща разрабатывают независимую библиотеку: OpenDWG/Teigha Для этого создана некоммерческая организация OpenDWG Alliance (сейчас Open Design Alliance, ODA) ODA зарегистрирован в США, разработка ведётся в России
  • 10. Open source и «open source» в САПР Исходный код Teigha и IntelliCAD доступен членам соответствующих организаций ODA и ITC Разработка планируется исходя из пожеланий членов ODA и ITC Члены организаций могут вносить свои изменения и дополнения в исходный код и выпускать продукты на модифицированных библиотеках
  • 11. Open source и «open source» в САПР Существующие свободные (GPL/LGPL) САПР не играют заметной роли в проектных организациях. Одна из причин: отсутствует полноценная поддержка формата DWG Разработка свободной библиотеки LibreDWG стоит на 9 месте в списке из 15 высокоприоритетных свободных проектов
  • 12. Середина 2000-х – наши дни К середине 2000-х создано множество продуктов на базе IntelliCAD Совместимость IntelliCAD API: LISP, ADS, COM С++ API подобен, но не совместим c ObjectARX Ведущие продукты на базе IntelliCAD: BricsCAD и ZWCAD, разрабатывают собственные библиотеки для совместимости С++ и .NET API В начале 2010-x BricsCAD и ZWCAD, отказываются от IntelliCAD, переписывают платформу «с нуля».
  • 13. Середина 2000-х – наши дни В 2008 выпущены первые приложения на отечественной альтернативной САПР nanoCAD За основу взята собственная платформа – гибридный растрово-векторный редактор Spotlight
  • 14. nanoCAD API В 2009 интегрирована библиотека Teigha, основным форматом файла стал DWG В 2011: •релиз платформы nanoCAD как самостоятельного продукта •открыт API, заработал «Клуб разработчиков nanoCAD» В 2012 – выход на международный рынок Совместимость nanoCAD API: LISP, ADS, COM, NRX, .NET
  • 15. Зачем нужен nanoCAD? Ответ 2008 года: Кризис •AutoCAD дорог, и заметно дороже наших приложений •Приложение на собственной платформе продаётся по цене приложения под AutoCAD •Цена nanoCAD = 0 Ответ 2014 года: Санкции •Правительство США запретило Autodesk продавать AutoCAD и другие продукты российским компаниям, попавшим под санкции
  • 16. Зачем портировать САПР приложения? В проектных организациях сосуществуют САПР платформы от разных производителей Обмен чертежами со смежниками – ключевая часть работы проектной организации. Де-факто формат – DWG Крайне важна совместимость чертежей и возможность последовательно редактировать чертёж в различных САПР Для полноценной работы САПР приложение должно существовать на всех используемых платформах
  • 17. Одна операция: с приложением и без Угол сюда Баба Яга С приложением: 4 стены 2 окна 1 дверь Без приложения: 525 отрезков
  • 18. Наш опыт – три разных подхода Начиная с 2008 года, на nanoCAD портировано более 10 существующих под AutoCAD приложений В процессе портирования оформились три подхода: 1.Клонирование кода 2.Создание совместимого API 3.Создание кроссплатформенного фреймворка
  • 19. 1. Клонирование кода Подход 1. Клонирование кода. Создание параллельных подсистем или приложений Начальные условия: •Основная часть продукта написана на .NET и независима от САПР •САПР используется для автоматического создания и последующего оформления чертежей
  • 20. 1. Клонирование кода Подход 1. Клонирование кода. Создание параллельных подсистем или приложений Решение на стороне приложения: •САПР часть, написанная на С++, была клонирована и адаптирована к иерархии классов OdDb* •Все изменения вносятся параллельно и независимо под каждую платформу •Основная часть продукта, написанная на .NET и независимая от САПР, остаётся неизменной
  • 21. 2. Создание совместимого API Подход 2. Создание совместимого API Начальные условия: •Продукты являются объёмными САПР приложениями, широко использующими возможности САПР платформы •Клонирование кода приводит к практически удвоению затрат на разработку и поддержку продуктов
  • 22. 2. Создание совместимого API Подход 2. Создание совместимого API Решение на стороне платформы: •Создан шлюз, совместимый по API с AutoCAD •Шлюз транслирует вызовы NRX (классы NcDb*) в вызовы nanoCAD (классы OdDb*) •NRX совместим с ObjectARX (классы AcDb*) •.NET: классы в пространстве имён HostMgd совместимы с классами в Autodesk.AutoCAD •Приложения под обе платформы строятся из единого исходного кода
  • 23. 3. Создание фреймворка Подход 3. Создание кроссплатформенного фреймворка Начальные условия: •Продукты написаны при помощи C++ фреймворка, упрощающего код приложения и абстрагирующего детали реализации API AutoCAD
  • 24. 3. Создание фреймворка Подход 3. Создание кроссплатформенного фреймворка Кросс-платформенное решение MultiCAD API: •Фреймворк создан для AutoCAD •Стал неотъемлемой частью nanoCAD •Перенесён на ZWCAD •Приложения бинарно совместимы на всех трёх платформах
  • 25. Развитие MultiCAD: MultiCAD.NET В 2012 году в nanoCAD 4.5 выпущен новый вид API: MultiCAD.NET •Позволяет создавать пользовательские примитивы на .NET •Используется стандартная .NET сериализация вместо ручного описания dwgInFields()/dwgOutFields() •MultiCAD.NET расширения работают без перекомпиляции в nanoCAD, AutoCAD, ZWCAD
  • 26. Антипаттерны портирования Основные причины, мешающие портированию: •Ожидание идеального API •Нежелание использовать workaround, работающий во всех системах •Использование побочных эффектов
  • 27. Подождём идеального API? Подход «Подождём, пока API станет полностью совместим» – не работает Если разработчик САПР платформы не знает о существовании проблемы совместимости, она не будет исправлена В первую очередь реализуются пожелания активных разработчиков, это естественный процесс
  • 28. Подождём идеального API? Общеупотребительный API Специфичный API
  • 29. Не всё будет реализовано в ближайшем будущем Часто существует обходное решение, которое работает во всех платформах. В этом случае запрос на доработку, вероятно, будет отложен Есть workaround? Используй! Проблемы, не имеющие обходных путей, очевидно, имеют больший приоритет
  • 30. Побочные эффекты в разных САПР платформах разные Используйте функционал по прямому назначению Нет побочным эффектам! Абстрактный пример: •Обнаружено, что функция печати умеет умножать числа •Не стоит использовать её для умножения, в другой платформе этого эффекта может не быть
  • 31. Серебряной пули нет… …но есть сотрудничество разработчиков САПР приложений и САПР платформы
  • 32.
  • 33. История мировых САПР http://cadhistory.net The Engineering Design Revolution The People, Companies and Computer Systems That Changed Forever the Practice of Engineering By David E. Weisberg

Notas do Editor

  1. https://www.bricsys.com/common/news.jsp?item=149