avl (avl) wrote,
avl
avl

Categories:

39. Контекст решает все

(В оригинале - Context is King)

Есть нечто ироничное в том, чтобы пытаться написать статью про идеи в архитектуре ПО, когда основная мысль, которую хочется донести – это то, что идей в архитектуре в принципе нет. Ведь если это так, то и писать нечего, а если таки написать, то получится парадокс, последствиями которого может стать что-нибудь очень серьезное, например, схлопывание всей вселенной.

Самый ценный урок, который я усвоил, будучи архитектором ПО, это то, что контекст – это король, а простота – его скромный слуга. На практике это означает, что именно контекст – единственная движущая сила при принятии архитектурных решений.

И когда я говорю «контекст», я имею в виду не только высокоуровневые вещи из бизнес-области заказчика, а и периферические элементы, такие как развивающиеся технологии и продуманное руководство в различных областях. Хороший архитектор отслеживает несколько быстродвужущихся целей.

Что составляет хорошую архитектуру? Архитектура – это набор решений, принятых в контексте множества конкурирующих приоритетов. Причем иногда оказывается, что важные решения состоят не в выборе из рассматриваемых альтернатив, а в нахождении вариантов, упущеных из рассмотрения. Хорошая архитектура – это всего лишь череда принятий решений.

История нам оставила много примеров, иллюстрирующих важность контекстного принятия решений. Один из замечательных примеров – выбор базы данных для программного обеспечения современного боевого танка. (Хотя выбор базы данных обычно не является значимым с точки зрения архитектуры, этот пример приведотся лишь для иллюстрации идеи).

Когда потребовалось выбрать базу данных для танка, команда протестировала несколько вариантов. Оказалось, что требуемое быстродействие для обработки потока информации для работы системы слежения за целями обеспечивают практически все рассмотренные СУБД. Однако для них было большим сюрпризом обнаружить, что выстрел из пушки танка создает столь мощный электромагнитный импульс, что все системы на борту перегружаются. Без работающих систем современный танк в буквальном смысле слепнет. И самым главным фактором при выборе базы данных становится время восстановления после сбоя. И по этому критерию лучше всего подходит решение вообще без базы данных, чем Interbase, имеющий минимальное время восстановления среди рассмотренных. И именно поэтому оно и было выбрано для танка M1 Abrams.

Таким образом, пока на форумах кипят обсуждения, какая технология лучше – Х или У, это все лишь пустое времяпровождение. Причина таких горячих дебатов обычно не в серьезном превосходстве одной из технологий, а наоборот, практически полном отсутствии значительных отличий. Какие-то свойства больше нравятся одним, какие-то другим, и пока нет решающего контекста, выбор сделать сложно.

Ваша команда не должна иметь идей вообще, ставя в фокус контекст находя наиболее простое решение в этом контексте.

Автор оригинала - Edward Garson

Перевод мой. Если вы решите использовать его полностью или частично, не забудьте указать ссылку на мой живой журнал!
Tags: 97_things_architect_should_know
Subscribe

  • Тест на способность доводить до конца пройден!

    Сегодня закончил переводить серию "97 вещей для программиста"! Вот здесь - три последних перевода: 95. Пишите тесты для людей - еще одна статья о…

  • Еще три перевода

    92. Когда программисты и тестеры объединяются - о том, что объединяться для общей цели всегда выгодно. 93. Пишите код так, как будто вы будете…

  • Еще четыре перевода

    88. Юникс-утилиты - это ваши друзья - название говорит само за себя :) 89. Используйте правильные алгоритмы и структуры данных - интересная и…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments