Бытует мнение, что архитектура ПО — это сложно. Архитектурой занимаются очень умные люди в костюмах и с белой доской под мышкой, цитирующие наизусть Дядю Боба и пространно рассуждающие, «какой именно архитектурный шаблон из дюжины самых расхожих наилучшим образом применим в данной задаче».
Есть и другое мнение: архитектура ПО — это то, чем развлекают себя неспособные к написанию настоящего кода болтуны, ведь «реальная программа не имеет к архитектуре никакого отношения».
Печальная правда в том, что ошибаются и те, и другие: архитектура — это сложно только в том смысле, что требует иного взгляда на задачу, нежели принято у «кодеров», и не нужно только в том смысле, что разработка «от шаблона» обречена на провал.
Что мы сделаем: возьмем реальную задачу и разработаем для неё архитектуру, попутно объясняя, откуда возникают те или иные требования и как формируются те или иные решения. Какую пользу принесут нам эти решения сейчас и в перспективе и какими проблемами чреваты.
В результате должен получится некий алгоритм разработки архитектуры. Да, именно алгоритм, ведь архитектура стандартного приложения не предполагает большой вариативности.