Обзоры книг / Обзор Книги: Fundamentals of Software Architecture. Mark Richards & Neal Ford
Статья в разработке
План содержания:
- краткое резюме каждой главы
- ответы на вопросы самооценки
Вопросы для самооценки
Глава 1: Введение
- Какие четыре измерения определяют архитектуру программного обеспечения?
- В чем разница между архитектурным решением и принципом проектирования?
- Перечислите восемь основных ожиданий архитектора программного обеспечения.
- Каков первый закон архитектуры программного обеспечения?
Глава 2: Архитектурное мышление
- Опишите традиционный подход архитектуры к разработке и объясните, почему этот подход больше не работает.
- Перечислите три уровня знаний в треугольнике знаний и приведите пример каждого из них.
- Почему для архитектора важнее сосредоточиться на технической широте, а не на технической глубине?
- Каковы некоторые способы сохранить свою техническую глубину и оставаться практическим архитектором?
Глава 3: Модульность
- Что подразумевается под термином совесть?
- В чем разница между статическим и динамическим согласием?
- Что означает совпадение типа? Это статическое или динамическое согласие?
- Какая самая сильная форма совести?
- Какая самая слабая форма совести?
- Что предпочтительнее в кодовой базе — статическое или динамическое согласование?
Глава 4: Определение характеристик архитектуры
- Каким трем критериям должен соответствовать атрибут, чтобы считаться характеристикой архитектуры?
- Чем неявная характеристика отличается от явной? Приведите пример каждого.
- Приведите пример эксплуатационной характеристики.
- Приведите пример структурной характеристики.
- Приведите пример сквозной характеристики.
- К какой характеристике архитектуры важнее стремиться — доступности или производительности?
Глава 5: Определение характеристик архитектуры
- Объясните, почему хорошей практикой является ограничение количества характеристик («-или»), которые должна поддерживать архитектура.
- Правда или ложь: большинство характеристик архитектуры исходят из бизнес-требований и пользовательских историй.
- Если заинтересованная сторона заявляет, что время выхода на рынок (т. е. предоставление пользователям новых функций и исправлений ошибок как можно быстрее) является наиболее важной задачей для бизнеса, какие характеристики архитектуры должна поддерживать архитектура?
- В чем разница между масштабируемостью и эластичностью?
- Вы узнаете, что ваша компания собирается совершить несколько крупных приобретений, чтобы значительно увеличить свою клиентскую базу. О каких архитектурных характеристиках следует беспокоиться?
Глава 6: Измерение и управление архитектурными характеристиками
- Почему цикломатическая сложность является таким важным показателем для анализа архитектуры?
- Что такое функция пригодности архитектуры? Как их можно использовать для анализа архитектуры?
- Приведите пример функции пригодности архитектуры для измерения масштабируемости архитектуры.
- Каковы наиболее важные критерии характеристики архитектуры, позволяющие архитекторам и разработчикам создавать фитнес-функции?
Глава 7: Объем архитектурных характеристик
- Что такое архитектурный квант и почему он важен для архитектуры?
- Предположим, что система состоит из одного пользовательского интерфейса с четырьмя независимо развернутыми службами, каждая из которых содержит свою собственную базу данных. Будет ли эта система иметь один квант или четыре кванта? Почему?
- Предположим, что у вас есть система с административным компонентом, управляющим статическими справочными данными (такими как каталог продукции и складская информация), и клиентским компонентом, управляющим размещением заказов. Сколько квантов должно быть в этой системе и почему? Если вы предполагаете несколько квантов, могут ли квант администратора и квант, ориентированный на клиента, совместно использовать базу данных? Если да, то в каком такте должна находиться база данных?
Глава 8: Компонентное мышление
- Мы определяем термин компонент как строительный блок приложения — то, что приложение делает. Компонент обычно состоит из группы классов или исходных файлов. Как компоненты обычно проявляются в приложении или службе?
- В чем разница между техническим разделением и разделением домена? Приведите пример каждого.
- В чем преимущество разделения домена?
- При каких обстоятельствах техническое разделение будет лучшим выбором, чем разделение домена?
- Что такое ловушка сущности? Почему это не лучший подход для идентификации компонентов?
- В каких случаях при определении основных компонентов вы можете предпочесть подход «рабочий процесс», а не «актер/действия»?
Глава 9: Архитектурные стили
- Перечислите восемь ошибок распределенных вычислений.
- Назовите три проблемы, которые есть у распределенных архитектур и которых нет у монолитных архитектур.
- Что такое штемпельная муфта?
- Какие существуют способы решения проблемы сцепления штампов?
Глава 10: Стиль многоуровневой архитектуры
- В чем разница между открытым слоем и закрытым слоем?
- Опишите концепцию слоев изоляции и преимущества этой концепции.
- Что такое антипаттерн архитектуры воронки?
- Каковы основные характеристики архитектуры, которые заставят вас использовать многоуровневую архитектуру?
- Почему в многоуровневой архитектуре плохо поддерживается тестируемость?
- Почему в многоуровневой архитектуре плохо поддерживается гибкость?
Глава 11: Архитектура конвейера
- Могут ли каналы быть двунаправленными в конвейерной архитектуре?
- Назовите четыре типа фильтров и их назначение.
- Может ли фильтр отправлять данные по нескольким каналам?
- Является ли стиль конвейерной архитектуры технически секционированным или доменным?
- Каким образом конвейерная архитектура поддерживает модульность?
- Приведите два примера стиля конвейерной архитектуры.
Глава 12: Архитектура микроядра
- Каково другое название стиля микроядерной архитектуры?
- В каких ситуациях подключаемые компоненты могут зависеть от других подключаемых компонентов?
- Какие инструменты и платформы можно использовать для управления подключаемыми модулями?
- Что бы вы сделали, если бы у вас был сторонний подключаемый модуль, который не соответствовал стандартному контракту на подключаемый модуль в базовой системе?
- Приведите два примера стиля микроядерной архитектуры.
- Является ли архитектура микроядра технически разделенной или доменной?
- Почему архитектура микроядра всегда представляет собой единый архитектурный квант?
- Что такое изоморфизм домена/архитектуры?
Глава 13: Сервисная архитектура
- Сколько сервисов имеется в типичной сервисной архитектуре?
- Нужно ли разбивать базу данных в сервисной архитектуре?
- При каких обстоятельствах вам может понадобиться разделить базу данных?
- Какой метод можно использовать для управления изменениями в базе данных в сервисной архитектуре?
- Требуется ли для работы доменных служб контейнер (например, Docker)?
- Какие характеристики архитектуры хорошо поддерживаются стилем архитектуры на основе служб?
- Почему эластичность плохо поддерживается в сервисной архитектуре?
- Как можно увеличить количество архитектурных квантов в сервисной архитектуре?
Глава 14: Архитектурный стиль, управляемый событиями
- Каковы основные различия между топологиями брокера и посредника?
- Для лучшего контроля рабочего процесса вы бы использовали топологию посредника или посредника?
- Использует ли топология брокера обычно модель публикации и подписки с темами или модель «точка-точка» с очередями?
- Назовите два основных преимущества асинхронных коммуникаций.
- Приведите пример типичного запроса в модели, основанной на запросах.
- Приведите пример типичного запроса в событийной модели.
- В чем разница между инициирующим событием и событием обработки в архитектуре, управляемой событиями?
- Какие существуют методы предотвращения потери данных при отправке и получении сообщений из очереди?
- Каковы три основные характеристики архитектуры, управляемой событиями?
- Какие характеристики архитектуры плохо поддерживаются в архитектуре, управляемой событиями?
Глава 15: Космическая архитектура
- Откуда взялось название космической архитектуры?
- Что является основным аспектом космической архитектуры, который отличает ее от других архитектурных стилей?
- Назовите четыре компонента, из которых состоит виртуализированное промежуточное ПО в космической архитектуре.
- Какова роль сетки обмена сообщениями?
- Какова роль автора данных в космической архитектуре?
- При каких условиях сервису потребуется доступ к данным через устройство чтения данных?
- Небольшой размер кэша увеличивает или уменьшает вероятность конфликта данных?
- В чем разница между реплицированным кешем и распределенным кешем? Какой из них обычно используется в космической архитектуре?
- Перечислите три из наиболее сильно поддерживаемых архитектурных характеристик в космической архитектуре.
- Почему так низко оценивается тестируемость космической архитектуры?
Глава 16: Сервис-ориентированная архитектура, управляемая оркестрацией
- Что было основной движущей силой сервис-ориентированной архитектуры?
- Какие четыре основных типа услуг существуют в сервис-ориентированной архитектуре?
- Перечислите некоторые факторы, приведшие к падению сервис-ориентированной архитектуры.
- Является ли сервис-ориентированная архитектура технически разделенной или доменной?
- Как повторное использование домена решается в SOA? Как решается проблема повторного использования?
Глава 17: Архитектура микросервисов
- Почему концепция ограниченного контекста так важна для архитектуры микросервисов?
- Каковы три способа определить, есть ли у вас правильный уровень детализации в микросервисе?
- Какие функции могут быть включены в sidecar?
- В чем разница между оркестровкой и хореографией? Что поддерживают микросервисы? Является ли один стиль общения проще в микросервисах?
- Что такое сага в микросервисах?
- Почему гибкость, тестируемость и возможность развертывания так хорошо поддерживаются в микросервисах?
- Каковы две причины, по которым производительность обычно является проблемой в микросервисах?
- Микросервисы — это доменно-разделенная архитектура или технически разделенная?
- Опишите топологию, в которой экосистема микросервисов может быть только одним квантом.
- Как было решено повторное использование домена в микросервисах? Как было решено оперативное повторное использование?
Глава 18. Выбор подходящего архитектурного стиля
- Каким образом архитектура данных (структура логической и физической моделей данных) влияет на выбор стиля архитектуры?
- Как это влияет на ваш выбор архитектурного стиля?
- Опишите шаги, которые архитектор использует для определения стиля архитектуры, разделения данных и стилей коммуникации.
- Какой фактор приводит архитектора к распределенной архитектуре?
Глава 19: Архитектурные решения
- Что покрывает ваши активы антипаттерном?
- Какие методы позволяют избежать антишаблона архитектуры, управляемой электронной почтой?
- Какие пять факторов определяет Майкл Найгард для идентификации чего-либо как архитектурно значимого?
- Каковы пять основных разделов протокола решения по архитектуре?
- В какой раздел ADR вы обычно добавляете обоснование решения по архитектуре?
- Предполагая, что вам не нужен отдельный раздел «Альтернативы», в каком разделе ADR вы бы перечислили альтернативы предлагаемому вами решению?
- Каковы три основных критерия, по которым вы бы отметили статус ADR как Предложенный?
Глава 20. Анализ архитектурных рисков
- Каковы два измерения матрицы оценки рисков?
- Какие есть способы показать направление конкретного риска в рамках оценки риска? Можете ли вы придумать другие способы указать, становится ли риск лучше или хуже?
- Почему необходимо, чтобы штурм рисков был совместным мероприятием?
- Почему необходимо, чтобы деятельность по идентификации в рамках штурма рисков была индивидуальной, а не совместной?
- Что бы вы сделали, если бы трое участников определили риск как высокий (6) для определенной области архитектуры, а другой участник назвал бы его только средним (3)?
- Какой рейтинг риска (от 1 до 9) вы бы присвоили недоказанным или неизвестным технологиям?
Глава 21: Диаграммы и представление архитектуры
- Что такое иррациональное прикрепление артефактов и почему оно важно для документирования и построения диаграмм архитектуры?
- К чему относятся 4 C в технике моделирования C4?
- Что означают пунктирные линии между компонентами при построении схемы архитектуры?
- Что такое антипаттерн простреленного трупа? Как избежать этого антипаттерна при создании презентаций?
- Какие два основных информационных канала есть у выступающего во время презентации?
Глава 22: Обеспечение эффективности команд
- Какие три типа личности архитектуры? Какие границы создает каждая личность?
- Какие пять факторов определяют уровень контроля, который вы должны проявлять в команде?
- На какие три предупреждающих сигнала вы можете обратить внимание, чтобы определить, не становится ли ваша команда слишком большой?
- Перечислите три основных контрольных списка, которые были бы полезны для команды разработчиков.
Глава 23: Навыки ведения переговоров и лидерства
- Почему переговоры так важны для архитектора?
- Назовите некоторые приемы ведения переговоров, когда заинтересованная сторона бизнеса настаивает на пяти девятках доступности, но на самом деле нужны только три девятки.
- Что вы можете извлечь из того, что заинтересованное лицо говорит вам: «Мне это было нужно вчера»?
- Почему важно оставить обсуждение времени и стоимости напоследок в переговорах?
- Что такое правило «разделяй и властвуй»? Как его можно применить при обсуждении характеристик архитектуры с заинтересованными сторонами? Приведите пример.
- Перечислите четыре элемента архитектуры.
- Объясните, почему для архитектора важно быть прагматичным и дальновидным.
- Какие есть методы управления и сокращения количества приглашений на встречи?
Глава 24: Развитие карьеры
- Что такое правило 20 минут и когда его лучше применять?
- Что означают четыре кольца на технологическом радаре ThoughtWorks и что они означают? Как их можно применить к вашему радару?
- Опишите разницу между глубиной и широтой знаний применительно к разработчикам программного обеспечения. К чему должны стремиться архитекторы?