От переводчика
Честно сказать, данная книга не проста для чтения, что в оригинале, что в переводе. Мартин Фаулер пишет весьма специфично сам по себе, а тут еще сложилось то, что тема не простая сама по себе и что это первый писательский опыт Мартина. Когда я читал книгу в первый раз много лет назад, всё осложнялось ещё тем, что это был скан печатного издания, где диаграммы и описания чаще всего были на разных сторонах страницы, так что приходилось читать в двух ПДФ читалках, чтобы можно было сопоставлять описание и диаграммы. Надеюсь, что в нынешнем виде это удалось в определенной степени побороть, хотя не исключаю того, что вам придется так же открывать эту книгу в двух закладках браузера. При описании шаблонов анализа Мартин постоянно ссылается на предыдущие примеры и диаграммы, так что придется полетать по тексту все равно.
Наиболее полезной и неустаревающей является первая часть. Вступление тоже полезно прочитать, чтобы понять контекст в котором все шаблоны были найдены. Вторую часть можно смело пропускать, так как там описаны уже давно известные вещи, которые к тому же и сильно эволюционировали с момента написания книги. Тогда идеи были полезными и, возможно, новаторскими, которые действительно могли упростить жизнь разработчикам ПО, но сейчас ничего кроме слезы олдфага они не вызывают. Пока что даже и не знаю, стоит ли как-то дополнительно комментировать главы из второй части, так как это может потянуть на отдельные книги, которые к тому же уже написаны и вряд ли я смогу привнести что-то свежее.
Последним техническим моментом нужно отметить нотацию диаграмм. На момент написания UML только вставал на ноги и активно развивался, так что Мартину пришлось смешивать некоторые нотации и выдумывать порой что-то своё, так что в тексте периодически появляются ссылки на описание нотации, которая находится в третьей части книги. Наверно даже лучше посмотреть раздел С, как только вы дойдете до первых диаграмм во второй главе.
Хочется еще добавить несколько слов о моем персональном впечатлении об изложенном материале. Впервые книгу я прочитал где-то в 2016 году, уже будучи архитектором ПО. Чтение давалось трудно, скрывать не буду, даже больше, пришлось книгу прочитать раза три подряд, чтобы действительно понять суть шаблонов и в первом приближении понять как мета-модели строить и использовать. Уже не помню для каких проектов стал применять мета-моделирование и насколько успешно это было, но со временем получалось все лучше и лучше, так как стало получаться глубже понимать домен и как он будет реализовываться. Какие доменные сущности понадобятся и как они будут связаны между собой. На основе мета-моделей удавалось задавать более глубокие вопросы доменным экспертам, которые не лежали на поверхности и выходить на неявное поведение системы, укрытое где-то в зоне неосознанного знания экспертов.
Знание аналитических шаблонов впоследствии всплывало каждый раз, когда аналитики описывали проблемы домена. После 5 минут описания в мозгу появлялись комбинации шаблонов, концептуально описывающие решение и связанные с этим сложности. Так же всплывали неупомянутые сущности домена, которые фигурировали в шаблонах и могли оказать существенное влияние на гибкость решения и его возможности.
В 2020 участвовал в архитектурных катах от O'Reilly и описание проблемы с помощью аналитических шаблонов позволило глубже понять суть и предложить решение, с которым мы и взяли первое место. Конечно, одними мета-моделями всех проблем архитектуры не решить, но можно сделать качественные предположения, которые упростят дальнейшую разработку и подведут к вопросам для прояснения неочевидных правил взаимодействия доменных сущностей.
Я до сих пор считаю, что мета-моделирование одна из областей архитектуры, которая незаслуженно обходится стороной, скорее всего просто по незнанию. Но знание шаблонов и понимание принципов мета-моделирования дает вам буквально хрустальный шар предсказаний подсказывающий как система должна быть организована и где вероятнее всего будут точки будущих расширений. Так что призываю вас не кидать чтение книги под первым впечатлением, что автор использует усложнение ради усложнения и выдумывает какие-то странные вещи, которые кажется никак не помогают при реальной разработке. Я, в свою очередь, постараюсь дополнительно вставлять пояснения и примеры из своей практики, чтобы было проще понять суть шаблонов, их применение и переложение в практическую плоскость. Собственно, из-за высокой ценности книги и взялся за перевод книги, так как хочу, чтобы среди русскоязычных разработчиков и архитекторов было больше хороших специалистов глубоко понимающих задачи проектируемых систем.
Мои вставки от переводчика и практика мета-моделирования будут оформлены в тексте как этот короткий абзац. В большинстве своем =D
Если вы заметите в тексте ошибки или найдете лучший способ переформулировать мысль\предложение, то не стесняйтесь создавать issue в репозитории или даже высылать пул реквесты с правками.
И, наверно, стоит добавить классическое: "Произведение предоставлено для бесплатного ознакомительного чтения", покупайте оригинал когда это станет возможно. Если захотите выразить свою благодарность, то можете так же создавать issues и дальше уже будем смотреть по ситуации.
Совсем уже заключительное: я связывался с автором по поводу перевода и с издательским домом Pearson, но как-то до конца мне так и не ответили какой статус может быть у перевода, так как первый раз к ним обратился индивидуальный переводчик на такую древнюю книгу. Не знают они что с этим делать, так как обычно заключают договоры с издательскими домами занимающимися переводами, а в данном случае даже и не знают что делать в силу известных обстоятельств.
Теперь точно всё. Желаю вам приятного и познавательного чтения.
Андрей.