Раздувание программного обеспечения

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Раздува́ние програ́ммного обеспече́ния (англ. software bloat, bloatware) — тенденция новых программ быть больше по объёму и требовать больше системных ресурсов по сравнению со старыми. В результате у многих людей появляется ощущение, что рост мощности компьютеров более чем компенсируется замедлением работы программ.

Содержание

Причины

Юмористический закон

Каждая программа расширяется, пока она не сможет читать почту. Программы, которые не могут читать почту, заменяются теми, которые могут.

Закон экстенсивного программирования Джейми Завинского[1]
  • Основной причиной этого является добавление в программы всё новых функций и возможностей, в том числе и не являющихся абсолютно необходимыми для работы.
    • Некоторые из подобных функций фактически стали требованиями. Например, графический интерфейс требует существенно бо́льших ресурсов, чем текстовый, однако пользователи уже привыкли работать только с графическим интерфейсом (даже если им фактически и не требуется работать с изображениями).
  • Всё чаще используются внешние библиотеки, в которых универсальность оборачивается большим размером. Например: в Delphi версий 3—7 одно подключение модуля Forms автоматически прибавляет к размеру EXE-файла 200 килобайт, в последних версиях эта цифра ещё больше.
  • Кроссплатформенное ПО либо имитирует внешний вид стандартных оконных элементов ОС, либо добавляет промежуточный слой абстракции, что также расходует память.
  • В то же время программисты стали уделять меньше внимания оптимизации программ, так как она становится всё менее окупаемой.

Пример 1: системные требования Microsoft Windows

Сравнение минимальных конфигураций компьютера для разных версий Microsoft Windows (по данным Microsoft):

Версия ОС Частота процессора Оперативная память Место на диске
Windows 95[2] 25 МГц 8 Мб ~50 Мб
Windows 98[3] 66 МГц 24 Мб 140—255 Мб
Windows ME[4] 150 МГц 32 Мб 320 Мб
Windows 2000 Server[5] 133 МГц 64 Мб 1 Гб
Windows XP[6] 300 МГц 128 Мб 1,5 Гб
Windows Vista[7] 1 ГГц 1 Гб 15 Гб

Пример 2: вывод списка файлов

Во времена MS-DOS файловые менеджеры (такие как NC или VC) осуществляли вывод списка файлов практически мгновенно. В современных системах, несмотря на многократно возросшую мощь компьютеров, вывод списка файлов занимает довольно длительное время — это связано главным образом со сложной системой иконок файлов, которые во многих случаях генерируются в зависимости от содержания файла. Таким образом, если раньше программе требовалось только получить список файлов и отсортировать его, то теперь требуется для каждого файла либо заглянуть в реестр (чтобы узнать, какая иконка соответствует данному расширению имени), либо прочитать этот файл, чтобы сгенерировать подходящую иконку. Многие пользователи предпочли бы обойтись без иконок, но в большинстве систем отключить их вывод невозможно.

Отношение к раздуванию ПО

Пользователи, как правило, относятся к раздутому ПО отрицательно. По мнению Джоэла Спольски, зря[8] по следующим причинам:

  • С прогрессом микроэлектроники аппаратное обеспечение, на котором новая версия способна работать, часто оказывается даже дешевле. Например, Excel 1.0 потреблял 36 долл. дискового пространства по ценам 1993 года, Excel 2000 — 1,03 долл. по ценам 2000 года.
  • Оптимизация экономически оправдана только в ключевых точках программы. Вовремя вышедшая программа важнее хорошо оптимизированной (в крайнем случае можно выпустить патч).
  • Хотя типичный пользователь использует 20 % функций, у разных пользователей эти 20 % разные. Поэтому, если написать облегчённую программу, в которой реализованы только 20 % функций, есть риск, что она нужна будет только разработчику и больше никому.

Кроме того, как заметил Реймонд Чен, пользователь часто не замечает усовершенствованные «внутренности» ПО. Например, калькулятор Windows часто ругали за потерю точности. В какой-то момент стандартную библиотеку работы с числами с плавающей запятой в формате IEEE заменили на библиотеку с поддержкой чисел произвольной точности, но это мало кто заметил.[9]

Альтернативы раздутому ПО

  • Модульный принцип — к основной программе подключается дополнительная функциональность в виде плагинов. Это позволит исключить из основной поставки редкоиспользуемую функциональность.
  • Написание ПО по хорошо проработанному техническому заданию, без «функций для галочки».
  • Открытое ПО может скрывать редкоиспользуемые функции с помощью директив препроцессора (см.: Условная компиляция). Например, в SQLite с помощью директив отключена функция «удалить первые n».

Сходные явления

Функции для галочки

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

Раздувание кода

Программный код, который пишется несколькими людьми (или одним в течение длительного времени) часто подвержен раздуванию. Признаками этого являются:

  • Спагетти-код.
  • Неиспользуемые функции.
  • Повторное вычисление одного и того же.
  • Повторное написание одной и той же функциональности.

Причинами могут быть:

  • Недостаточное взаимодействие между программистами, плохая координация действий группы.
  • Непрофессиональный программист.
  • Неразбериха в начале проекта, смена технического задания.

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

Фичакрип, или «раздувание функциональности»

К концу разработки выясняется, что для сдачи законченного продукта требуется реализовать всё больше и больше функций, «и все нужны».[10]

Примечания

cs:Bloatware

de:Bloatware en:Software bloat es:Software inflado fr:Obésiciel it:Software bloat ja:ソフトウェアの肥大化 nl:Bloatware pl:Zasobożerność sv:Bloatware

Личные инструменты

Served in 0.226 secs.