ДДДокументируй это! Сеть, бэкенд и web-разработка

Доклад принят в программу конференции
Евгений Пешков
Циан

Техлид, основатель сообщества DDD-практиков DDDevotion. Любит практики экстремального программирования, BDD и т.п.

Тезисы

Даже если вы практикуете общение с экспертами, походы в гембу и стараетесь использовать единый язык (ubiquitous language), все равно со временем код и ментальная модель начинают расходиться. Почему так происходит? Мы автоматизируем живые бизнес-системы, они развиваются и до этапа выявления требований, и пока мы пишем код, и даже (сюрприз-сюрприз) после запуска на проде.

Как отслеживать, что наш код соответствует ментальной модели? Как эксперты и менеджеры продукта могут верифицировать результат? Как отслеживать изменения в бизнес-логике?

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

Мы предлагаем использовать самодокументируемый код с использованием аннотаций и утилиту, которая генерирует человекочитаемую документацию на основе статического анализа исходного программного кода приложения. Документ представляет собой бизнес-описание программной модели. Мы предлагаем не просто использовать javadoc/sphinx-doc, а специальный формат, который вместе с генератором документации является полноценным инструментом поддержки DDD-практик и паттернов.

Как результат мы получаем:
– высокую читаемость кода;
– богатую доменную модель;
– стандартизацию доменной разработки;
– контроль соответствия ментальной и программной моделей;
– контроль использования Единого языка;
– возможность анализировать “протекание” контекстов или модели;
– карту контекстов и их отношения и т.д.

Другие доклады секции Сеть, бэкенд и web-разработка