Думая в канун, часть 1

Декларативное моделирование доменов с Eve

Eve - это новая среда программирования от команды, создавшей LightTable. Язык, который использует Ева, имеет семантику, которая с самого начала была разработана для поддержки насыщенного и грамотного программирования. Он декларативен, неупорядочен и самоанализ. Это также удивительно просто: все в Eve основано на правилах сопоставления шаблонов, применяемых к записям типа "ключ-значение". Независимо от того, работаете ли вы с данными, создаете интерфейс браузера или отправляете электронные письма, это простое представление упрощает декларативный код.

Декларативное программирование мощно, потому что оно сокращает мысленную дистанцию ​​между областями проблемы и решения. Вместо того, чтобы говорить как что-то сделать и думать на языке машины, вы можете сказать что на языке проблемы. Комбинация декларативного синтаксиса Евы и грамотного программирования позволяет нам пойти дальше и также описать, почему мы решаем проблему.

Эта комбинация также дает нам еще одну заманчивую возможность: более прямой перевод между требованиями и кодом. Хотя полностью автоматизированная разработка программного обеспечения пока не работает, это может значительно упростить добавление функций в базу кода. Если вам нужно изменить требование, код, который вам нужно изменить, уже существует и, очевидно, связан с текстом требования.

В этой статье я описываю несколько шаблонов для реализации требований домена или бизнес-правил путем анализа их текстовой формы.

Примечание. В этой статье я довольно многословен в своем коде Eve. Это сделано намеренно, чтобы упростить просмотр подробного отображения требований и реализации. В реальном коде многие из них, вероятно, будут свернуты для удобства чтения.

Правило

Далее я использую контролируемую формулировку бизнес-правил на естественном языке RuleSpeak. Это обеспечивает простой набор форм предложений, которые могут выражать большинство требований предметной области.

Подобная систематичность нашего языка позволяет нам, людям, быстрее разбираться в правилах. Это также позволяет нам проверять наши переводы. Мы должны легко увидеть, какие биты кода соответствуют каким битам правила.

Правила действия

Часто возникает желание ограничить допустимые записи. Пример такого рода бизнес-правил: «В командном плане должно быть не менее двух членов команды». Если план группы состоит менее чем из двух членов, план не соответствует правилу и должна произойти обработка ошибок. Эти правила обозначаются в RuleSpeak ключевыми словами «должен иметь» или «должен быть».

Подобные правила легко передать Еве. По сути, все является частью раздела поиска единого блока. Часть перед "must" выбирает интересующую запись (предмет правила), а часть после определяет проверку. Например:

Важно изменить «смысл» требования: если в требовании указано, что одно число должно быть больше другого, то блок Eve должен проверить, меньше ли это число.

Еще одно правило в домене может быть таким: «Члены команды должны быть старше 18 лет». Перевод этого также прост:

Условные правила

Условное правило - это правило, к которому добавляется раздел с ключевым словом "если". Например, «В групповом плане должен быть хотя бы один администратор, если в групповом плане более пяти участников».

С условными выражениями смысл не меняется на противоположный. В приведенном выше примере мы намеренно фильтруем наш поиск только по тем объектам, у которых более 5 членов.

Правила расчета

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

Примером первого является «массовая скидка для группового плана должна быть рассчитана как количество членов команды * 0,01».

Правило классификации может быть сформулировано следующим образом: «Член команды должен считаться неактивным, если последняя дата входа в систему была более 30 дней назад». Это может быть реализовано путем добавления тегов к описываемому предмету.

Выводы

Eve предлагает прекрасный новый способ мышления и написания программного обеспечения, которое может гораздо более четко соответствовать требованиям. Это позволит ускорить и упростить разработку и упростить сопровождение кода.

Если вы хотите узнать больше о Еве, вы можете начать играть с песочницей быстрого запуска онлайн прямо сейчас или прочитать языковое руководство. Окружающая среда все еще находится в зачаточном состоянии, но показывает большой потенциал. Я очень рад видеть, какие новые подходы к программному обеспечению это вдохновит.