Линии программных продуктов (SPL) для доменных языков (DSL)

Имеет ли смысл сосредоточиться на разработке языков специфики доменов (DSL) в соответствии с подходом линейки программных продуктов?

Кто-нибудь знает какой-либо другой подход для создания и поддержки нескольких связанных языков предметной области одновременно? Обратите внимание, что для поддержки пользовательского языка требуется поддержка нескольких инструментов, от синтаксического анализатора, компиляторов, интерпретаторов, до современного уровня IDE и т. Д.

2 ответа

Решение

Наш DMS Software Reengineering Toolkit - именно эта идея. DMS обеспечивает общий синтаксический анализ, построение дерева, анализ (разрешение имен, анализ потока управления, анализ потока данных, графики вызовов и точечный анализ, пользовательские анализаторы, произвольные преобразования). Он имеет множество стандартных интерфейсов языка, а также некоторые DSL (например, HTML, XML, уравнения временной логики, языки промышленных контроллеров и т. Д.), Но имеет очень хорошую поддержку для определения других DSL.

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

Я думаю, что имеет смысл сосредоточиться на DSL, следуя подходу Software Line. Если вы правильно определите DSL, он по существу определит структуру для создания приложений в домене и операционной среде, в которой они выполняются. Под операционной средой я имею в виду ОС, аппаратное обеспечение и базу данных, а также код, который реализует семантику или среду выполнения DSL. Платформа и операционная среда будут артефактами, которые повторно используются в линейках продуктов. Возможно, вам придется создать операционную среду, состоящую из сред времени выполнения для нескольких DSL, для поддержки нескольких линий продуктов.

Другие вопросы по тегам