Страницы

Дизайн, отделённый от воплощения — либо ложь, либо проблема

Главное. Можно сколь угодно просто формулировать сколь угодно сложно воплотимые задумки

Вы помните эти слова, приписываемые Форду?

Если бы я спросил людей, чего они хотят, они бы попросили более быструю лошадь

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

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

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

Следы предыдущей реализации

Опыт может быть не только полезным, но и травмирующим в том смысле, что не позволяет увидеть все открывающиеся возможности новых воплощений. Здесь, действительно, уместно вспомнить лошадь Форда. В таких случаях связь оказывается ещё сильней, но с предыдущей реализацией. Даже после устранения первоначальных ограничений они продолжают оказывать влияние на конечный результат.

Пример — pdf-книги, для которых нет никакой потребности в соблюдении ограничений бумажных книг, но которые тем не менее свято соблюдаются для огромного количества материалов, делая их восприятие значительно более ущербным в сравнении с потенциальными возможностями, открывающимися перед электронными просмотрщиками[0].

Часть большей реализации

Большая часть технических решений сами по себе не являются конечной целью, а являются частью некоторой реализации, без которой они лишены смысла. Поэтому отделение дизайна зачастую автоматически влечёт его обессмыслевание. Это верно не всегда, так как дизайн может подойти под другие решения, но тогда можно говорить о присоединении к другой реализации, а не отделении как таковом.

Адекватный дизайн — это высокоуровневая реализация

Если речь идёт о достаточно точном описании, чтобы можно было говорить о цели как об одном и том же для всех читателей, это описание и есть достаточно точная реализация, но предназначенная в первую очередь для людей. Поэтому она, как правило, более высокоуровневая. И здесь об отделении одного от другого уже совсем не идёт, потому что дизайн и реализация — это буквально одно и то же. Так как основным читателем дизайна является человек, то в типичном виде его трудно назвать конечным результатом, но к этому нужно стремиться. То, что обычно человек является не только основным, но и единственным читателем дизайна, многие воспринимают как преимущество и могут даже гордиться этим(«я не какой-то кодер, а проектировщик»). На самом деле это недостаток и нет строгой необходимости в соблюдении этой особенности. Предоставление дизайна на формальном языке потенциально позволяет через трансляцию получать готовый продукт автоматически или, как минимум, использовать спецификацию как основу, прототип или источник верификации. И тогда должно быть понятно, что проектирование и кодирование, то есть реализация — это на самом деле не разные процессы, потому что проектирование тоже заключается в кодировании, даже если и осуществляется на другом языке, в том числе и неформальном.

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


Вывод

Дизайн, отделённый от реализации — это в значительной степени нелепый, но популярный миф. Избавление от него может благотворно сказаться на процессе разработки. Само по себе раздельное(модульное) описание дизайна — это благо, но это далеко не тоже самое, что отделение в общем смысле. Лучшие вещи получаются, когда дизайн перестраивается под возможности реализации, позволяя раскрыть её сильные стороны и скрыть слабые, не позволяя при этом случайным возможностям реализации проникнуть в дизайн.


Сноски:

[0] Заметка о причинах ненужности бумажных книг по программированию и их pdf-аналогов.

Комментариев нет:

Отправить комментарий