- 1. Определи цель.
- 2. Определи требования.
- 3. Определи функцию пригодности: каждый компонент имеет насыщение, так что это не просто сумма всех частей. При достижении нужного уровня нет смысла дальше улучшать этот компонент.
- 4. Определи основные ограничения: особенно те, которые растут экспоненциально. Их нужно держать под контролем.
- 5. Перебери варианты в пространстве проектирования с учетом ограничений.
- Требования на старте проекта обычно неясны. Быстрые итерации помогают клиентам сформулировать, что они действительно хотят. Не стоит сразу ожидать от них ясности поскольку они не понимают как вещи сложнее реализовать, а какие легче.
- При поиске в дереве решений (пространстве проектирования) возникает комбинаторный взрыв.
- Когда наступит следующий ноябрь? Вопрос на выяснение какая модель в голове у собеседуемого. В идеале пространственная.
- Если комитет вырабатывает требования, то без обратной связи (людей с опытом эксплуатации подобных систем) требования могут стать либо нереализуемыии в принципе либо приаедут к ухудшению других характеристик. Пример с вертолетом, который должен суметь пересечь Атлантику.
- Расчеты на суперкомпьютере при определении как оптимально смешать всего три компонента. Нет больше элементарных технологий: сравнить самый первый железный мост (избыточный) и современный.
- Рост сложности компенсируется специализацией.
- За системным архитектором остается решающее слово, при этом он активно общается со специалистами в нужных областях. В этом случае система будет концептуально целостной.
- Если нет ни одного человека, который мог бы обьяснить всю систему на высоком уровне, то система обречена на крах. Пример с кучей архитекторов и руководством пользователя на 800 страниц.
- Архитектор готовит проект, а специалисты делают обзор этого проекта, чтобы найти возможные неучтенные проблемы.
- Барьеры:
- Разные часовые пояса
- Разные языки общения
- Обе: строим рациональную модель и проверяем ее на практике.
- Статическая и динамическая типизация как частный случай.
- Точно формулиуют то, что они знают о пользователе.
- Отделяют то, что они взяли в качестве предположения.
- Даже если явные предположения неверные, то гораздо больше шансов их пересмотреть, чем если предположения неявные.
- Перечисли какие ресурсы точно являются ограниченными. Часто это не деньги, а дни, метры и т.п.
- Микеланджело сделал из мрамора, признанного непригодным, скульптуру Давида.
- Ограничения часто упрощают задачу проектирования.
- Если нет ограничений, то нет и способа валидировать проект.
- Проще понимать и предугадывать: многие микрорешения будут приниматься автоматически.
- Стиль нужно задокументировать, чтобы он стал единообразным.