|
(В оригинале - Architects focus is on the boundaries and interfaces)
C тех пор как Нельсон разбил флот Испании и Франции в Трафальгарском сражении, «Разделяй и властвуй» стало девизом при решении сложных проблем. Более простая формулировка, означающая почти то же самое – разделение интересов. Разделение интересов дает нам инкапсуляцию, а инкапсуляция приводит к появлению границ и интерфейсов.
С точки зрения проектировщика, самая сложная задача в построении системы – найти правильные места расположения границ и определить подходящие интерфейсы. В случае больших промышленных систем это особенно сложно, поскольку особенность таких систем – отсутствие естественно очерченных границ и сложнозапутанные предметные области. И в этой ситуации старые добрые правила «минимизируй связи, увеличивай связность» и «Не проводи границу там, где будет требоваться интенсивный обмен информацией» хоть и могут чем-то помочь, но уже не дают ответа на вопросы о том, как нужно взаимодействовать с заинтересованными сторонами для наиболее эффективного решения проблем.
И здесь приходит на помощь концепция ограниченных контекстов и их отображений, описанная в книге Эрика Эванса “Domain-Driven Design”. Ограниченный контекст – это область, в пределах которой модель или концепция однозначно определены, обычно представляемая в виде облака с информативным названием, определяющим ее роль и ответственность в предметной области. Например, в системе доставки могут быть такие контексты как «Погрузка», «Расписание» и «Доставка морем». В других предметных областях будут другие имена.
После того как контексты выделены и нарисованы, время определить отношения между ними. Эти отношения могут отображать организационные, функциональные или технические зависимости. Результатом будет отображение контекстов – набор самих контекстов и интерфейсов между ними.
Отображение контекстов дает архитектору мощный инструмент, позволяющий сфокусироваться на том, что должно быть вместе, а что – раздельно, позволяя разделять и властвовать наиболее эффективно. Эта техника может легко использоваться для документирования и анализа текущей ситуации с целью ее улучшения и редизайна для получения системы с меньшим количеством связей, повышенной связностью и хорошо определенными интерфейсами.
Автор оригинала - Einar Landre
|