Моделирование данных - важный аспект программирования, которому обычно не уделяют нужного внимания. Одна из проблем состоит в том, что единого подхода к описанию структуры данных нет. Для баз данных используют реляционных подход, для данных в памяти - классы и коллекции, для сериализации - древоподобные структуры (XML, Protobuffers, JMS).

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

ERIL - единый язык описания данных. Он представляет собой союз реляционного и объектно-ориентированного подходов и объединяет их сильные стороны. Отличительная черта языка ERIL - явное наличие в модели уровней абстракции.

Имея единый язык описания данных, можно существенно облегчить разработку и, что даже важнее, поддержку ПО. Такой язык подходит для:
- технических заданий и требований;
- проектирования и дизайна ПО;
- документации.

Кроме того, на основе ERIL можно написать полезные для разработчиков инструменты:
- для просмотра и поиска информации о структуре программы (это оказалось чертовски удобно на практике);
- для автоматической генерации структурного кода (работа с коллекциями, управление памятью, вычисление хэшей, операции сравнения, проверка целостности данных и указателей);
- для генерации кода, который делает сериализацию;
- для генерации отладочного и тестового кода.

Алгоритмы, динамику, хорошо описывает Дракон, ERIL же отвечает за статическую структуру программы.

Данная статья не является теоретическим изысканием, это обобщение опыта моделирования данных в реальных проектах, в числе которых: хорошо известная в Скандинавии ERP-система, ряд приложений для работы на финансовых рынках, шутер для PC и даже блок-бастер для iphone.