Тому есть ряд причин. Во-первых, стоимость начальной разработки обычно намного превышает прогнозы, поэтому «скрытая цена» вновь развертываемой системы перекрывает ожидания уже в начале проекта. В каждой последующей точке развития проекта, где принимается решение, необходимо взвесить стоимость модернизации с одной стороны и стоимость замены в результате покупки или переписывания системы с другой. Как правило, стоимость обновления невелика по сравнению со стоимостью замены, а небольшие изменения функциональности обычно вполне осуществимы, если исходная архитектура была надежной. Количество ошибок в целом предсказуемо.
Поговоримо частоте возникновения ошибок подробнее. В начале жизненного цикла нового программного продукта частота выявления ошибок обычно относительно высока. Это те ошибки, которые проскользнули через тестирование и были обнаружены первой волной покупателей продукта. Эти ошибки можно сравнить с «младенческой смертностью» отка-.
зов аппаратуры.
Они обнаруживаются и удаляются из системы относительно быстро.
Затем, как и в случае с аппаратным обеспечением, наступает относительно долгий период, когда ошибок и отказов мало. Для аппаратуры мы связываем такое спокойствие с тем, что вышли из строя все ненадежные детали. Если речь идет о программах, этот период соответствует зрелому продукту, схемы применения которого относительно устоялись. В основном работают одни и те же участки кода, а ошибки выявляются в тех фрагментах кода, которые редко вызываются.
Наконец, приближается «конец жизненного пути» продукта. Для аппаратуры это частые отказы, вызванные износом деталей. Это почти зеркальное отражение проблемы младенческой смерти: смерть наступает от старости. В ПО наблюдается аналогичная проблема: в старых системах частота ошибок снова растет. Это вызывается двумя причинами:.
• Во-первых, в коде начинают исследоваться статистически редкие пути, и ошибка, присутствовавшая в них всегда, вдруг всплывает на поверхность благодаря необычным, прежде не встречавшимся стечениям обстоятельств.
• Во-вторых, проявляется кумулятивный эффект многолетнего сопровождения продукта.
Заплатки и исправления, сделанные поколениями программистов, настолько ухудшили первоначальную архитектуру, что код «рассыпается». Еще одно исправление, и весь карточный домик может рухнуть. Вот в такой момент замена всей системы и технически и экономически более оправданна, чем всего один лишний цикл обновления.
Суммарная стоимость жизненного цикла большинства программных систем оказывается значительной по сравнению со стоимостью первоначальной разработки. Но даже простую оценку редко проводят, когда задумывается новая система. Правильной мерой стоимости всякой новой системы должна быть суммарная стоимость всего ее жизненного цикла, но эту цифру мы редко видим на этапе предложения. Это еще одно свидетельство недостаточной зрелости нашей дисциплины.
Обновление встроенного ПО.
Убедившись в том, что программное обеспечение живет долго, мы сталкиваемся с проблемой его обновления. Особенно сложна эта задача для встроенных программ. В оставшейся части этой главы я займусь неприятной проблемой обновления ПО для определенного класса устройств: карманных, мобильных, беспроводных и облегченных. К этому классу относятся сотовые телефоны, личные органайзеры, приемники GPS, цифровые камеры и различные их комбинации. Все они обладают встроенным ПО, программируемой памятью того или иного объема и аккумуляторами. Они могут обмениваться данными с другими устройствами или работать автономно.
Важность этого класса, как и количество входящих в него устройств, неуклонно возрастает, чему есть минимум две причины. Прежде всего, все продукты, предназначенные для ношения с собой, постоянно уменьшаются в размерах, и по мере того как удобство предоставляемых ими функций (например, возможность передачи цифровых фотографий) получает широкое признание на рынке, уменьшение их размеров делает их еще более привлекательными. Во-вторых, мы постоянно ищем пути освобождения от ненавистных нам пут. Беспроводная связь прекрасно способствует этому, т. к. освобождает от мучений с проводными телефонными линиями, а аккумуляторы - от других пут - проводов электрического питания.
По моему представлению, обновление ПО для таких устройств следовало сделать как можно более простым. Ниже я предлагаю теоретическое решение, но оно, как мне кажется, заслуживает дальнейшего обсуждения.
Современная ситуация.
Когда сегодня вы покупаете один из таких продуктов, вам кажется, что вы покупаете устройство. На самом деле, вы видите в первую очередь оболочку устройства, а все самое главное заключается в ПО. Каждый программист, например, знает, что после включения сотового телефона надо подождать, пока произойдет «начальная загрузка». А кнопки с цифрами для набора телефонного номера служат также клавишами для «программирования продукта». Я имею в виду, что это один из способов записать различную информацию (например, телефонные номера) в память телефона.
В сущности устройство состоит из трех частей:.
• аппаратной (hardware).
• встроенного ПО (embedded software).
• аккумуляторов, без которых, спешу добавить, ничего работать не будет.
Сейчас такое устройство оформляется в виде двух составных частей: телефона, в котором находятся как аппаратная, так и программная части, и аккумуляторов. Так сложилось исторически.
При этом возникает интересная дилемма.
Весь интеллект заключен в программном обеспечении. Поэтому есть два варианта обновления телефона:.
• Обновить ПО, для чего требуется заменить или перепрограммировать микросхему, находящуюся в телефоне.
• Если есть деньги, купить новый телефон, который может оказаться той же самой оболочкой, только с более новой версией микросхемы.
Для других устройств путь несколько отличается: можно подключить их к своему компьютеру, зайти на веб-сайт производителя и загрузить с него новую версию ПО.
Эта операция, которую иногда называют «заменой масла», позволяет заменить ПО его более новой версией. Некоторых людей аналогия с заменой масла несколько пугает, потому что это означает, что ПО может автоматически заменяться через регулярные промежутки времени, а при этом даже не будет известно, какие изменения внес производитель устройства, и такое положение вызывает у них тревогу. Другим же вся процедура обновления с помощью компьютера больше напоминает замену даже не масла, а двигателя, т. е. они вообще не считают эту задачу простой.
Игры вокруг обновления ПО.
Поставщики ПО вынуждены постоянно совершенствовать свой продукт и поэтому они достаточно регулярно выпускают обновления своих программ. Те, кто покупают новое устройство, получают вместе с ним самую новую и лучшую версию. Чтобы распределить расходы на разработку и удовлетворить уже существующих клиентов, поставщики стараются побудить уже имеющихся пользователей приобрести новейшую версию ПО тоже, хотя бы и за умеренные деньги.
Как же добиваются того, что пользователи обновляют ПО?.
Индустрия ПО бьется над решением этой проблемы. Люди склонны привыкать к тому ПО, которое у них есть, и заставить их заменить его самой свежей версией не так-то просто. Требуется убедить их раскрыть свой кошелек и потратить свои кровные на замену того, что и так работает неплохо. Производители испробовали много механизмов, в большинстве своем основанных на модели подписки; например, профилактика оборудования в TiVo и обновление в он-лайне AOL основаны на том, что оплата пользователями ПО (и неявно обновлений) входит в ежемесячную стоимость услуги.
Было отмечено, что крупные поставщики ПО проверяют самые различные варианты ценовой политики, включая абонентскую плату, чтобы гарантировать себе возможность как можно дольше получать устойчивые доходы.
Но если оставить в стороне экономическую компоненту, то остается техническая: как сделать обновление простым и дружественным по отношению к пользователю?.
Скромное предложение.
Все, что нам нужно для сотовых телефонов, как и для всех устройств со встроенным ПО, - это ключать его в один комплект с батареей, а не с устройством. Вы покупаете базовое устройство без батарей или ПО, хотя пользы от него будет мало - даже в качестве упора для двери, поскольку весу в нем никакого. Но зато цена его может быть снижена до минимума, допускаемого эффективностью производства.
Затем, чтобы включить его, надо купить батареи.
У каждого устройства должны быть батареи своего типа. Тут же вместе с батареей вы получаете ПО. Подробности технической реализации я здесь опускаю. Можете считать, что вы приобретаете «комплект с батареями». Для маркетинга я выбрал бы название «умная батарейка».
Это потребовало бы значительно диверсифицировать производство батареек, но с такими преобразованиями в промышленности мы уже сталкивались. Сейчас день мы рассматриваем батареи как предмет потребления. Фактически батареи выпускаются самых разных типоразмеров, в зависимости от требований к их электрическим параметрам и от готовности покупателя истратить средства; например, перезаряжаемые батареи стоят дороже. Превращение такого товарного производства в более пестрое «рыночное» может показаться противоестественным. Но на самом деле это не так: достаточно вспомнить о бесконечном разнообразии покрышек (для легковых машин, грузовиков, тракторов, зимние, гоночные, высокопрочные, не говоря уже о головокружительном количестве размеров и форм-факторов), накопленных сегодня на складах для массового потребления. Тем не менее большинство людей считает покрышки товаром. Сто лет назад так оно и было.
Ясно, что система распространения батарей должна будет измениться: по-прежнему останутся сегодняшние «глупые батареи» наряду с «умными батареями», содержащими программное обеспечение. Не в каждом бакалейном магазинчике или ларьке сувениров найдутся батареи обоих типов. Однако можно рассчитывать, что с ростом спроса на умные батареи все больше магазинов станет ими торговать. Свободный рынок хорошо умеет решать такие проблемы.
Такие изменения придадут дополнительный смысл фразе «включить питание». Включая устройство, вы питаете его электрической энергией за счет батареи, но вы также снабдите его интеллектуальной энергией за счет ПО, находящегося на батарее.
Еще раз об обновлении ПО.
В таком новом режиме, когда ПО покупается вместе с батареями, обновление происходит сразу. Когда батареи разряжаются, вы их заменяете. И получаете новейшую версию ПО для своего устройства.
Обратите внимание: срок службы батареи привязывается к сроку службы ПО, поэтому вопрос об устаревших версиях снимается с повестки дня.
А сколько будет стоить обновление или, в более общем случае, ПО? Никто, находясь в здравом уме, не станет требовать, чтобы батареи для его сотового телефона были бесплатными. Поэтому батареи станут, конечно, немного дороже, чтобы покрыть расходы на разработку ПО. Но эти расходы будут распределены на все батареи, нагруженные этим ПО.
И еще одно замечательное обстоятельство. Тот, кто мало пользуется своим устройством, редко будет менять батареи. Однако каждый раз при этом он будет обновлять свое ПО до новейшей версии. Напротив, тот, кто эксплуатирует устройство постоянно, будет часто менять батареи и обычно заменять при этом свое ПО точной его копией. Такой пользователь если и будет замечать изменения в работе программы, то редко, тогда как тот, кто пользуется устройством мало, будет отмечать при смене батарей существенные изменения, но редко. Обновление ПО будет хорошо соответствовать схеме работы с устройством.
Поскольку ПО, поставляемое вместе с батареей, будет самодостаточным, будет навсегда покончено и с программными заплатками. Прежняя программа выбрасывается вместе со старой батарейкой, а новая батарейка содержит свежую программу. Производители должны следить, чтобы изменение функций не оказывалось слишком резким. В крайнем случае новые батареи должны снабжаться сообщением об особенностях версии ПО. Думаю, что специалисты по маркетингу не преминут воспользоваться случаем превратить это в привлекательную особенность.
Большое преимущество такой модели заключается в том, что пользователь не должен загружать обновление ПО из Интернета. Что проще - загружать и инсталлировать программу или просто заменить батарейки?.
Некоторые приятные следствия.
Устройства со встроенным ПО должны быть простыми в эксплуатации. Перефразируя покойного Джефа Раскина, «не существует группы пользователей Maytag, потому что в таковой нет нужды». Многие считают, что для таких устройств должна быть принята модель «бытовой техники».
К сожалению, иногда ПО мешает этому.
Но рассмотрим некоторые выгоды объединения батарейки и ПО. Надо установить программное обеспечение? Вставьте чип-батарейку
Это должно придать новый смысл термину «plug and play». Хотите перенести ПО с одного устройства на другое (совместимое)? Выньте чип-батарейку из одного устройства и вставьте в другое. Если устройства несовместимы, это примерно то же, что пытаться вставить не ту батарейку. Для большинства людей это не составит трудности.
Заметим, что для действия такой схемы в чипе-батарейке должна быть какая-то доступная для записи память, чтобы хранить индивидуальную информацию (настройки и файлы), иначе в переносе чипа-батарейки в другое устройство не будет особого смысла. Это может быть память типа PROM или NVRAM, а раз она интегрирована с батареей, то и обычная RAM.
Вот и еще одна причина обновить чип-батарейку- желание получить больше памяти.
Наши европейские друзья уже вступили на этот путь. Мой друг и коллега Паскаль Леруа пишет из Франции:.
«Европейская телефонная система GSM основана на чипе, который называется SIM-картой и содержит 1) сведения о правах, подписке, номере телефона и т. д. и 2) ваши настройки. Переставление SIM-карты в другой телефон стало обычным делом: на днях я ехал в поезде с двумя девушками, у одной из которых был сотовый телефон с севшим аккумулятором. Она попросила телефон у своей подруги, вставила в него свою SIM-карту и болтала по телефону до конца поездки. Девушки не были похожи на технарей, так что применение такой технологии не должно вызвать затруднений практически ни у кого».
Этот пример «простоты эксплуатации» демонстрирует некоторые потенциальные выгоды чипов-батареек и позволяет развить идею еще дальше.
У вас несколько устройств, в которых зашито одно и то же ПО? Раньше такая ситуация тревожила производителей. Нередко можно было без труда (хоть формально это и незаконно) приобрести лицензионный экземпляр ПО и установить его на несколько машин. Применение чипа-батарейки делает вопрос обсуждаемым и для производителя и для пользователя. Можно купить несколько чипов-батареек и эксплуатировать их одновременно, а можно вставить чип-батарейку в то устройство, с которым вы сейчас хотите работать, а потом, если понадобится, переставить ее в другое. Как и в случае обычных батареек, вы делаете выбор между стоимостью и удобством. Это иллюстрация идеальной модели, в которой один экземпляр ПО соответствует одному физическому устройству. Если сделать эти чипы-батареи достаточно простыми и дешевыми, то нелегальное копирование ПО станет менее привлекательным.
На чем основана жизнеспособность такой схемы.
На экономике.
Людям не нравится платить абонентскую плату. Они не любят фиксированных текущих расходов. Когда экономическая ситуация ухудшается, люди сокращают расходы и прежде всего, если они умны, по незаметным ежемесячным счетам. Если производители ПО решат пойти по пути абонентской платы, то, как мне кажется, в хорошие времена их ждет процветание, а в плохие им придется тяжело. Здесь действуют элементарная экономика и психология.
Основная причина лежит в страхе, что деньги, вносимые в качестве абонентской платы, не окупят себя. Люди всегда беспокоятся, что их уровень пользования услугой будет ниже среднего, а потому окажется, что они финансируют каких-то любителей «бесплатной езды», которые косвенно получат услугу за чужой счет.
С другой стороны, платить за батарейки люди привыкли. Батарейки это расходный материал, и мы платим за них пропорционально израсходованной энергии. Больше эксплуатируете устройством - быстрее сядут батарейки. На это никто не жалуется. Большинству это кажется честным.
Проиллюстрирую свою точку зрения на примере чернильных картриджей для дешевых цветных принтеров. Картриджи относительно дороги, но рынок это терпит, потому что они считаются расходным материалом. Но на вторичном рынке действует масса поставщиков, что доказывает применимость данной модели, т. к. их единственное назначение - снизить стоимость одного отпечатка.
Поэтому, интегрируя ПО с батарейкой, вы превращаете его в расходный материал, который выбрасывается вместе с разрядившейся батарейкой. Стоимость ПО должна войти в цену батарейки. Благодаря разделению стоимости на очень много частей увеличение цены должно оказаться очень незначительным. Привязка ПО к батарее может оказаться простейшим алгоритмом взимания платы за него, основанным на модели его применения.
Станут ли люди перезаряжать свои разрядившиеся батареи с ПО? Могут, если мы будем устанавливать ПО на батареи, которые допускают перезарядку. В таком случае они смогут хранить свое старое ПО чуть ли не вечно. Но принципиальная модель от этого не пострадает. И при желании всегда можно обновить ПО, выкинув «хорошую» батарейку и установив новую. Как знать, возможно, возникнет вторичный рынок «старых» батареек, которые сохранили заряд. Может быть, станут практиковать обмен батареек. Я мог бы предложить массу изменений для базовой модели. Важно то, что свободный рынок и его экономика поставят все на свои места.
Уточнение.
Можно рассмотреть еще некоторые детали, которые могут понравиться любителям технологических новшеств. Объединение ПО с батареями открывает ряд новых горизонтов.
Одно уточнение, предложенное Филиппом Крухтеном, состоит в том, чтобы с помощью памяти большого объема хранить ПО для нескольких устройств на одной батарее. Это несколько облегчило бы проблему распространения, поскольку один физический блок годился бы для нескольких различных устройств. Можно представить себе универсальную батарейку «для сотовых телефонов» и т. д. В такой ситуации можно было бы заменить телефон Motorola на Nokia, вставить старую батарейку, и все заработало бы как надо. Конечно, для этого производители сотовых телефонов должны договориться о каких-то стандартах, а это всегда бывает трудно.
Можно, наоборот, представить себе компанию с вертикальной интеграцией, которая поместит в одну чип-батарейку ПО для устройств нескольких разных типов. Тогда вы, скажем, купите умную батарейку Ericsson, и разные устройства, выпускаемые Ericsson, будут работать от ее энергии и программ.
Сегодня существует множество энергосберегающих программных алгоритмов для экономии заряда батареи. Мы уже пользуемся ими в лэптопах, которые поставляются вместе с программным обеспечением. Можно поместить эти энергосберегающие алгоритмы туда, где их присутствие более логично, - в аккумулятор лэптопа.
Возьмем также батарейки поколения «n» с программным обеспечением поколения «n». Допустим, что в следующей версии ПО алгоритмы и прочее усовершенствуются, и для выполнения той же работы за то же время потребуется меньше электрической энергии. Это означает, что ПО поколения «п+1» можно разместить на батарее меньшей электрической мощности без ущерба для конечного результата. В результате может снизиться цена батареи, или вырасти ваша прибыль, или то и другое вместе.
Все эти возможности выглядят реальными в рамках современных технологий, но это не столь важно. Это лишь развитие изначальной идеи, а я хочу по возможности придерживаться принципа KISS.
Как быть с программным пиратством?.
В принципе я хочу ликвидировать пиратство, сделав чип-батарейки экономически самым привлекательным вариантом для большинства пользователей. Как и во всех других системах, пытаясь создать технически более изощренную мышеловку, мы только поощряем самых умных мышей.
Лучше придумать, как вызвать у них желание покупать сыр. Возможно, память умных батареек будет программироваться в заводских условиях с помощью относительно дорогих устройств, не доступных широкой публике. Тогда дешевле будет купить новую чип-батарейку вместо того, чтобы копировать ПО и пытаться «прожечь» его в старой батарейке. Но в принципе я не ставил себе задачи борьбы с пиратством. Возможно, какие-то благотворные побочные эффекты это предложение повлечет, но они случайны.
Пока солнце не взяло верх.
Сегодня тратится много средств на то, чтобы сделать батарейки лучше (меньше, мощнее, долговечнее и т. д.), чтобы сделать нас более мобильными. Возможно, когда-то появятся заряжаемые от солнца конденсаторы, которые совершенно вытеснят батарейки. Для успеха этой технологии необходимо обеспечить достаточно маленький форм-фактор, достаточно большую емкость и совершенный интерфейс с солнечной панелью. Конденсатор станет применяться в качестве виртуальной батареи. Это будет просто еще один способ запасти энергию впрок. Однако, в отличие от батареек, комплект конденсатор/солнечная панель не будет требовать периодической замены. Пока не наступил этот день, мы будем менять или перезаряжать батареи. Так почему бы не объединить их с нашим ПО?.
Было бы безрассудством с моей стороны претендовать на открытие очередного великого вертикального объединения нашей эпохи - батареек с программами. Но эта идея меня заинтриговала. Мне нравится исследовать плюсы и минусы таких схем, без каких-либо конечных результатов.
Чипы-батарейки решили бы проблему обновления ПО электронных устройств, упростив эту операцию до смены батареек. Они также изменили бы динамику ценообразования, сделав ПО скорее расходным материалом, чем капитальным товаром. Когда устройства со встроенным ПО сами станут товаром, это будет оправданно. В итоге могут возникнуть интересные проблемы распространения чипов-батареек, но я убежден, что их можно эффективно решать.
Резюме.
За несколько лет, прошедших после первоначального моего предложения, взрыва энтузиазма по поводу чип-батареек не произошло. Но иногда для таких идей требуется время. Самое большое возражение исходит от тех, кто пользуется перезаряжаемыми батареями; они заявляют, что поскольку не меняют свои аккумуляторы, то и новое программное обеспечение никогда не получат, и что в результате вырастет цена одного экземпляра программного обеспечения, поставляемого с батареей.
Я не уверен в том, что это действительно проблема. Во-первых, сегодня много как тех, кто пользуется разовыми батарейками, так и тех, кто пользуется перезаряжаемыми. Для большинства из них это выбор между ценой и удобством, и рынок так корректирует цены, что место находится для всех. Аналогично, как мне кажется, цена программного обеспечения, интегрированного с каждым типом батарей, будет определяться сроком службы батареи. Поэтому одно и то же программное обеспечение будет дороже при установке его в перезаряжаемую батарею, чем в одноразовую, потому что срок службы его будет дольше. Это вопрос ценообразования, и рынок его решит.
Главная идея, с моей точки зрения, - это перевод программного обеспечения из категории капитальных затрат в категорию расходных материалов. В результате логичным становится ценообразование в зависимости от системы пользования, а это в конечном счете должно быть полезнее всего для рынка.
До встречи в магазине умных батареек!