avl (avl) wrote,
avl
avl

Category:

22. Все сразу получить невозможно

(В оригинале Architectural Tradeoffs)

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

В 1620-м году шла война между Швецией и Польшей. Желая побыстрее завершить эту разорительную войну, шведский король начал строительство корабля, названного Васа. Это должен был быть не простой корабль. Требования к нему были уникальными для того времени. Он должен был быть более 60 метров в длину, нести 64 пушки на двух оружейных палубах, и иметь возможность перевозить 300 солдат на борту. Сроки были критичны, денег было мало (звучит знакомо, не так ли? :) Дизайнер корабля никогда до этого не проектировал корабли такого класса. Он был экспертом в постройке кораблей меньшего класса, однопалубных. Тем не менее, он экстраполировал свой предыдущий опыт и спроектировал Васа. Корабль был успешно построен по его спецификациям, и в день запуска корабль гордо вышел в гавань, отсалютовал из своих пушек и практически сразу же затонул.

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

удовлетворить все требования может привести к нестабильной архитектуре и как следствие, неудовлетворительной реализации всех требований. Хорошим примером может быть требование создать серверную архитектуру, хорошо работающую и для случаев «точка-точка». Чтобы сделать такое, вам придется серьезно нарушать уровни абстракций, созданные для серверной версии, приводя к тому, что архитектура становится похожей на одно из блюд итальянского ресторана. Существует несколько инструментов, позволяющих определить и выявить альтернативы при разработке архитектуры. Две популярные методологии, делающие это - Architecture Tradeoff Analysis Method (ATAM) и Cost Benefit Analysis Method (CBAM). Подробнее про эти методологии можно почитать на сайте Software Engineering Institute здесь и здесь.

Автор оригинала - Mark Richards

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

  • Про интерфейсы

    Была у нас в офисе микроволновка. Старая, самая простая, вот такая: Весь интерфейс — два поворотных регулятора. Один задает…

  • О ценности и цене

    Давно не писал сюда. Все же жж больше для лонгридов подходит, чем фб, где написанное потом фиг найдешь. Начну издалека. Лет 15 назад я впервые…

  • Интуитивно-понятный интерфейс

    Всем хороша программа CDEx, кроме одного. После того, как она отконвертировала файлы, надо обладать очень развитой интуицией, чтобы их найти. Вот…

  • 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