Обзор Книги: Fundamentals of Software Architecture. Mark Richards & Neal Ford

Статья в разработке

План содержания:

  • краткое резюме каждой главы
  • ответы на вопросы самооценки

Вопросы для самооценки

Глава 1: Введение

  1. Какие четыре измерения определяют архитектуру программного обеспечения?
  2. В чем разница между архитектурным решением и принципом проектирования?
  3. Перечислите восемь основных ожиданий архитектора программного обеспечения.
  4. Каков первый закон архитектуры программного обеспечения?

Глава 2: Архитектурное мышление

  1. Опишите традиционный подход архитектуры к разработке и объясните, почему этот подход больше не работает.
  2. Перечислите три уровня знаний в треугольнике знаний и приведите пример каждого из них.
  3. Почему для архитектора важнее сосредоточиться на технической широте, а не на технической глубине?
  4. Каковы некоторые способы сохранить свою техническую глубину и оставаться практическим архитектором?

Глава 3: Модульность

  1. Что подразумевается под термином совесть?
  2. В чем разница между статическим и динамическим согласием?
  3. Что означает совпадение типа? Это статическое или динамическое согласие?
  4. Какая самая сильная форма совести?
  5. Какая самая слабая форма совести?
  6. Что предпочтительнее в кодовой базе — статическое или динамическое согласование?

Глава 4: Определение характеристик архитектуры

  1. Каким трем критериям должен соответствовать атрибут, чтобы считаться характеристикой архитектуры?
  2. Чем неявная характеристика отличается от явной? Приведите пример каждого.
  3. Приведите пример эксплуатационной характеристики.
  4. Приведите пример структурной характеристики.
  5. Приведите пример сквозной характеристики.
  6. К какой характеристике архитектуры важнее стремиться — доступности или производительности?

Глава 5: Определение характеристик архитектуры

  1. Объясните, почему хорошей практикой является ограничение количества характеристик («-или»), которые должна поддерживать архитектура.
  2. Правда или ложь: большинство характеристик архитектуры исходят из бизнес-требований и пользовательских историй.
  3. Если заинтересованная сторона заявляет, что время выхода на рынок (т. е. предоставление пользователям новых функций и исправлений ошибок как можно быстрее) является наиболее важной задачей для бизнеса, какие характеристики архитектуры должна поддерживать архитектура?
  4. В чем разница между масштабируемостью и эластичностью?
  5. Вы узнаете, что ваша компания собирается совершить несколько крупных приобретений, чтобы значительно увеличить свою клиентскую базу. О каких архитектурных характеристиках следует беспокоиться?

Глава 6: Измерение и управление архитектурными характеристиками

  1. Почему цикломатическая сложность является таким важным показателем для анализа архитектуры?
  2. Что такое функция пригодности архитектуры? Как их можно использовать для анализа архитектуры?
  3. Приведите пример функции пригодности архитектуры для измерения масштабируемости архитектуры.
  4. Каковы наиболее важные критерии характеристики архитектуры, позволяющие архитекторам и разработчикам создавать фитнес-функции?

Глава 7: Объем архитектурных характеристик

  1. Что такое архитектурный квант и почему он важен для архитектуры?
  2. Предположим, что система состоит из одного пользовательского интерфейса с четырьмя независимо развернутыми службами, каждая из которых содержит свою собственную базу данных. Будет ли эта система иметь один квант или четыре кванта? Почему?
  3. Предположим, что у вас есть система с административным компонентом, управляющим статическими справочными данными (такими как каталог продукции и складская информация), и клиентским компонентом, управляющим размещением заказов. Сколько квантов должно быть в этой системе и почему? Если вы предполагаете несколько квантов, могут ли квант администратора и квант, ориентированный на клиента, совместно использовать базу данных? Если да, то в каком такте должна находиться база данных?

Глава 8: Компонентное мышление

  1. Мы определяем термин компонент как строительный блок приложения — то, что приложение делает. Компонент обычно состоит из группы классов или исходных файлов. Как компоненты обычно проявляются в приложении или службе?
  2. В чем разница между техническим разделением и разделением домена? Приведите пример каждого.
  3. В чем преимущество разделения домена?
  4. При каких обстоятельствах техническое разделение будет лучшим выбором, чем разделение домена?
  5. Что такое ловушка сущности? Почему это не лучший подход для идентификации компонентов?
  6. В каких случаях при определении основных компонентов вы можете предпочесть подход «рабочий процесс», а не «актер/действия»?

Глава 9: Архитектурные стили

  1. Перечислите восемь ошибок распределенных вычислений.
  2. Назовите три проблемы, которые есть у распределенных архитектур и которых нет у монолитных архитектур.
  3. Что такое штемпельная муфта?
  4. Какие существуют способы решения проблемы сцепления штампов?

Глава 10: Стиль многоуровневой архитектуры

  1. В чем разница между открытым слоем и закрытым слоем?
  2. Опишите концепцию слоев изоляции и преимущества этой концепции.
  3. Что такое антипаттерн архитектуры воронки?
  4. Каковы основные характеристики архитектуры, которые заставят вас использовать многоуровневую архитектуру?
  5. Почему в многоуровневой архитектуре плохо поддерживается тестируемость?
  6. Почему в многоуровневой архитектуре плохо поддерживается гибкость?

Глава 11: Архитектура конвейера

  1. Могут ли каналы быть двунаправленными в конвейерной архитектуре?
  2. Назовите четыре типа фильтров и их назначение.
  3. Может ли фильтр отправлять данные по нескольким каналам?
  4. Является ли стиль конвейерной архитектуры технически секционированным или доменным?
  5. Каким образом конвейерная архитектура поддерживает модульность?
  6. Приведите два примера стиля конвейерной архитектуры.

Глава 12: Архитектура микроядра

  1. Каково другое название стиля микроядерной архитектуры?
  2. В каких ситуациях подключаемые компоненты могут зависеть от других подключаемых компонентов?
  3. Какие инструменты и платформы можно использовать для управления подключаемыми модулями?
  4. Что бы вы сделали, если бы у вас был сторонний подключаемый модуль, который не соответствовал стандартному контракту на подключаемый модуль в базовой системе?
  5. Приведите два примера стиля микроядерной архитектуры.
  6. Является ли архитектура микроядра технически разделенной или доменной?
  7. Почему архитектура микроядра всегда представляет собой единый архитектурный квант?
  8. Что такое изоморфизм домена/архитектуры?

Глава 13: Сервисная архитектура

  1. Сколько сервисов имеется в типичной сервисной архитектуре?
  2. Нужно ли разбивать базу данных в сервисной архитектуре?
  3. При каких обстоятельствах вам может понадобиться разделить базу данных?
  4. Какой метод можно использовать для управления изменениями в базе данных в сервисной архитектуре?
  5. Требуется ли для работы доменных служб контейнер (например, Docker)?
  6. Какие характеристики архитектуры хорошо поддерживаются стилем архитектуры на основе служб?
  7. Почему эластичность плохо поддерживается в сервисной архитектуре?
  8. Как можно увеличить количество архитектурных квантов в сервисной архитектуре?

Глава 14: Архитектурный стиль, управляемый событиями

  1. Каковы основные различия между топологиями брокера и посредника?
  2. Для лучшего контроля рабочего процесса вы бы использовали топологию посредника или посредника?
  3. Использует ли топология брокера обычно модель публикации и подписки с темами или модель «точка-точка» с очередями?
  4. Назовите два основных преимущества асинхронных коммуникаций.
  5. Приведите пример типичного запроса в модели, основанной на запросах.
  6. Приведите пример типичного запроса в событийной модели.
  7. В чем разница между инициирующим событием и событием обработки в архитектуре, управляемой событиями?
  8. Какие существуют методы предотвращения потери данных при отправке и получении сообщений из очереди?
  9. Каковы три основные характеристики архитектуры, управляемой событиями?
  10. Какие характеристики архитектуры плохо поддерживаются в архитектуре, управляемой событиями?

Глава 15: Космическая архитектура

  1. Откуда взялось название космической архитектуры?
  2. Что является основным аспектом космической архитектуры, который отличает ее от других архитектурных стилей?
  3. Назовите четыре компонента, из которых состоит виртуализированное промежуточное ПО в космической архитектуре.
  4. Какова роль сетки обмена сообщениями?
  5. Какова роль автора данных в космической архитектуре?
  6. При каких условиях сервису потребуется доступ к данным через устройство чтения данных?
  7. Небольшой размер кэша увеличивает или уменьшает вероятность конфликта данных?
  8. В чем разница между реплицированным кешем и распределенным кешем? Какой из них обычно используется в космической архитектуре?
  9. Перечислите три из наиболее сильно поддерживаемых архитектурных характеристик в космической архитектуре.
  10. Почему так низко оценивается тестируемость космической архитектуры?

Глава 16: Сервис-ориентированная архитектура, управляемая оркестрацией

  1. Что было основной движущей силой сервис-ориентированной архитектуры?
  2. Какие четыре основных типа услуг существуют в сервис-ориентированной архитектуре?
  3. Перечислите некоторые факторы, приведшие к падению сервис-ориентированной архитектуры.
  4. Является ли сервис-ориентированная архитектура технически разделенной или доменной?
  5. Как повторное использование домена решается в SOA? Как решается проблема повторного использования?

Глава 17: Архитектура микросервисов

  1. Почему концепция ограниченного контекста так важна для архитектуры микросервисов?
  2. Каковы три способа определить, есть ли у вас правильный уровень детализации в микросервисе?
  3. Какие функции могут быть включены в sidecar?
  4. В чем разница между оркестровкой и хореографией? Что поддерживают микросервисы? Является ли один стиль общения проще в микросервисах?
  5. Что такое сага в микросервисах?
  6. Почему гибкость, тестируемость и возможность развертывания так хорошо поддерживаются в микросервисах?
  7. Каковы две причины, по которым производительность обычно является проблемой в микросервисах?
  8. Микросервисы — это доменно-разделенная архитектура или технически разделенная?
  9. Опишите топологию, в которой экосистема микросервисов может быть только одним квантом.
  10. Как было решено повторное использование домена в микросервисах? Как было решено оперативное повторное использование?

Глава 18. Выбор подходящего архитектурного стиля

  1. Каким образом архитектура данных (структура логической и физической моделей данных) влияет на выбор стиля архитектуры?
  2. Как это влияет на ваш выбор архитектурного стиля?
  3. Опишите шаги, которые архитектор использует для определения стиля архитектуры, разделения данных и стилей коммуникации.
  4. Какой фактор приводит архитектора к распределенной архитектуре?

Глава 19: Архитектурные решения

  1. Что покрывает ваши активы антипаттерном?
  2. Какие методы позволяют избежать антишаблона архитектуры, управляемой электронной почтой?
  3. Какие пять факторов определяет Майкл Найгард для идентификации чего-либо как архитектурно значимого?
  4. Каковы пять основных разделов протокола решения по архитектуре?
  5. В какой раздел ADR вы обычно добавляете обоснование решения по архитектуре?
  6. Предполагая, что вам не нужен отдельный раздел «Альтернативы», в каком разделе ADR вы бы перечислили альтернативы предлагаемому вами решению?
  7. Каковы три основных критерия, по которым вы бы отметили статус ADR как Предложенный?

Глава 20. Анализ архитектурных рисков

  1. Каковы два измерения матрицы оценки рисков?
  2. Какие есть способы показать направление конкретного риска в рамках оценки риска? Можете ли вы придумать другие способы указать, становится ли риск лучше или хуже?
  3. Почему необходимо, чтобы штурм рисков был совместным мероприятием?
  4. Почему необходимо, чтобы деятельность по идентификации в рамках штурма рисков была индивидуальной, а не совместной?
  5. Что бы вы сделали, если бы трое участников определили риск как высокий (6) для определенной области архитектуры, а другой участник назвал бы его только средним (3)?
  6. Какой рейтинг риска (от 1 до 9) вы бы присвоили недоказанным или неизвестным технологиям?

Глава 21: Диаграммы и представление архитектуры

  1. Что такое иррациональное прикрепление артефактов и почему оно важно для документирования и построения диаграмм архитектуры?
  2. К чему относятся 4 C в технике моделирования C4?
  3. Что означают пунктирные линии между компонентами при построении схемы архитектуры?
  4. Что такое антипаттерн простреленного трупа? Как избежать этого антипаттерна при создании презентаций?
  5. Какие два основных информационных канала есть у выступающего во время презентации?

Глава 22: Обеспечение эффективности команд

  1. Какие три типа личности архитектуры? Какие границы создает каждая личность?
  2. Какие пять факторов определяют уровень контроля, который вы должны проявлять в команде?
  3. На какие три предупреждающих сигнала вы можете обратить внимание, чтобы определить, не становится ли ваша команда слишком большой?
  4. Перечислите три основных контрольных списка, которые были бы полезны для команды разработчиков.

Глава 23: Навыки ведения переговоров и лидерства

  1. Почему переговоры так важны для архитектора?
  2. Назовите некоторые приемы ведения переговоров, когда заинтересованная сторона бизнеса настаивает на пяти девятках доступности, но на самом деле нужны только три девятки.
  3. Что вы можете извлечь из того, что заинтересованное лицо говорит вам: «Мне это было нужно вчера»?
  4. Почему важно оставить обсуждение времени и стоимости напоследок в переговорах?
  5. Что такое правило «разделяй и властвуй»? Как его можно применить при обсуждении характеристик архитектуры с заинтересованными сторонами? Приведите пример.
  6. Перечислите четыре элемента архитектуры.
  7. Объясните, почему для архитектора важно быть прагматичным и дальновидным.
  8. Какие есть методы управления и сокращения количества приглашений на встречи?

Глава 24: Развитие карьеры

  1. Что такое правило 20 минут и когда его лучше применять?
  2. Что означают четыре кольца на технологическом радаре ThoughtWorks и что они означают? Как их можно применить к вашему радару?
  3. Опишите разницу между глубиной и широтой знаний применительно к разработчикам программного обеспечения. К чему должны стремиться архитекторы?