ДДДокументируй это! Сеть, бэкенд и web-разработка
Даже если вы практикуете общение с экспертами, походы в гембу и стараетесь использовать единый язык (ubiquitous language), все равно со временем код и ментальная модель начинают расходиться. Почему так происходит? Мы автоматизируем живые бизнес-системы, они развиваются и до этапа выявления требований, и пока мы пишем код, и даже (сюрприз-сюрприз) после запуска на проде.
Как отслеживать, что наш код соответствует ментальной модели? Как эксперты и менеджеры продукта могут верифицировать результат? Как отслеживать изменения в бизнес-логике?
Обычно предлагается использовать тест-кейсы, следить за их полнотой и регулярно по ним проверять продукт. У такого подхода несколько проблем: тесты оторваны от кода, их забывают обновлять, сложно наблюдать за историей развития.
Мы предлагаем использовать самодокументируемый код с использованием аннотаций и утилиту, которая генерирует человекочитаемую документацию на основе статического анализа исходного программного кода приложения. Документ представляет собой бизнес-описание программной модели. Мы предлагаем не просто использовать javadoc/sphinx-doc, а специальный формат, который вместе с генератором документации является полноценным инструментом поддержки DDD-практик и паттернов.
Как результат мы получаем:
– высокую читаемость кода;
– богатую доменную модель;
– стандартизацию доменной разработки;
– контроль соответствия ментальной и программной моделей;
– контроль использования Единого языка;
– возможность анализировать “протекание” контекстов или модели;
– карту контекстов и их отношения и т.д.
Техлид, занимается управлением и развитием команд. Развивает сообщество DDD-практиков, интересуется всем, что связано с tech excellence.