Позвольте мне добавить прекурсор к моему ответу, что я никоим образом не BDD, TDD или первый эксперт тестирования.Отступление ...
Я обнаружил, что во всех испытательных методиках первой разработки требовалось ясновидение на уровне хрустального шара, когда оно начиналось с нуля для достижения высокого уровня успеха.Поскольку это совершенно непрактично, я считаю, что этот уровень тестирования имеет смысл только после периода прототипирования, когда ядро DDD было усовершенствовано.Наряду с другими основными решениями в области архитектуры принимаются четкие решения о том, как добиться успеха.
Будучи корпоративным архитектором, мои мысли № 1 в области разработки проектов всегда повторяются.Это всегда гораздо более достижимо, когда базовая архитектура будет согласована между проектами, и, что еще важнее, в одном и том же проекте.
Теперь, чтобы ответить непосредственно на ваш вопрос, в моей книге DDD всегда будет на первом месте.По моему мнению, без DDD вы в основном теряете сознание, когда речь заходит о ключевых архитектурных решениях, которые потом могут стать чрезвычайно болезненными.На мой взгляд, DDD является гораздо более высокоуровневой концепцией, которая выражается в блок-схемах высокого уровня.Со многими историями BDD, которые будут включать взаимодействие на уровне DDD между системами.
Что касается вопроса о том, буду ли я писать истории для взаимодействия с пользовательским интерфейсом, то в них определенно есть ценность.Тем не менее, они могут легко быть пропущены вместо времени, необходимого для других начинаний, так как ограничения проекта, как правило, возникают раньше, чем ожидалось.Кодовые тесты пользовательского интерфейса, которые вы пишете, не должны быть хрупкими.Однако, если они хрупкие, они почти бесполезны с самого начала.Если вы будете следовать четкому соглашению об именовании элементов HTML, наряду с написанием семантического HTML, вы можете создавать очень надежные модульные тесты пользовательского интерфейса.Это гораздо легче выразить в MVC, чем в веб-формах (в ASP.NET java, вероятно, имеет какую-то аналогичную параллель).
RE: вы предлагаете создать чистую область домена дореализации историй?
Я бы даже вообще пошёл немного дальше с определением концепций класса Model и интерфейсов сервисов.В тот момент, когда начинается реализация интерфейсов, я начинаю работать над историями.Это также приведет к изменениям моделей или интерфейсов по мере их возникновения.Чтобы оставить все интерфейсы сервисов и модели, которые будут разрабатываться по мере их развития из историй, я чувствую, было бы слишком много туннельного видения.То, что вы начнете создавать модели и / или интерфейсы, которые решают конкретную историю, но не имеют смысла для более широкой картины.
Итак, чтобы действительно подвести итог вашему вопросу о среднем, а не о внешнем.Я чувствую, что они очень способны опираться друг на друга, тем более, если вы начнете с DDD middle-out для общих концепций, а затем поработаете снаружи для деталей.Я чувствую, что выполнение этого процесса в обратном направлении приведет к гораздо большему количеству рефакторинга, чем необходимо, и гораздо более сложному рефакторингу, поскольку вы пытаетесь вытащить свой основной домен из коллекции связанных историй, которые, скорее всего, были разработаны в бункере.