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

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

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

Никлаус Вирт в 1996 году написал статью «Долой „жирные программы“», подняв проблему программ, для которых рост требований к ресурсам превышает рост их функциональности и производительности.[1] Термин «жирные программы» (fatware) позаимствован из статьи Э. Перраторе 1993 года.[2]

Содержание

Причины

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечания

  1. Никлаус Вирт. Долой «жирные» программы.
  2. E. Perratore и др. Fighting Fatware // Byte. — апрель 1993. — Vol. 18. — № 4. — P. 98—108.
  3. Один из авторов Netscape Navigator. См.: Jargon File.
  4. Microsoft KB: Windows 95 Installation Requirements. Microsoft (23 апреля 2007). Архивировано из первоисточника 15 марта 2012. Проверено ???.
  5. Требования к аппаратному обеспечению для установки Windows 98. Microsoft (30 декабря 2004). Архивировано из первоисточника 15 марта 2012. Проверено ???.
  6. Минимальные аппаратные требования для установки Microsoft Windows Millennium Edition. Microsoft (3 октября 2004). Архивировано из первоисточника 15 марта 2012. Проверено ???.
  7. System requirements for Microsoft Windows 2000 operating systems. Microsoft (13 ноября 2007). Архивировано из первоисточника 15 марта 2012. Проверено ???.
  8. Системные требования для операционных систем Windows ХР. Microsoft (25 января 2006). Архивировано из первоисточника 15 марта 2012. Проверено ???.
  9. Системные требования для Windows Vista. Microsoft (28 мая 2007). Архивировано из первоисточника 15 марта 2012. Проверено ???.
  10. Системные требования для седьмой винды 7. Архивировано из первоисточника 5 февраля 2012.
  11. Strategy Letter IV: Bloatware and the 80/20 Myth
  12. Featurecreep GameDev.ru

Wikimedia Foundation. 2010.

Нужно сделать НИР?

Полезное


Смотреть что такое "Раздувание программного обеспечения" в других словарях:

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

  • Soft — Запрос «Software» перенаправляется сюда. Cм. также другие значения. Программное обеспечение (произношение обеспечение не рекомендуется[1][2][3], точнее, не рекомендовалось[4]) наряду с аппаратными средствами, важнейшая составляющая информационных …   Википедия

  • Software — Запрос «Software» перенаправляется сюда. Cм. также другие значения. Программное обеспечение (произношение обеспечение не рекомендуется[1][2][3], точнее, не рекомендовалось[4]) наряду с аппаратными средствами, важнейшая составляющая информационных …   Википедия

  • Компьютерное программное обеспечение — Запрос «Software» перенаправляется сюда. Cм. также другие значения. Программное обеспечение (произношение обеспечение не рекомендуется[1][2][3], точнее, не рекомендовалось[4]) наряду с аппаратными средствами, важнейшая составляющая информационных …   Википедия

  • Программные средства — Запрос «Software» перенаправляется сюда. Cм. также другие значения. Программное обеспечение (произношение обеспечение не рекомендуется[1][2][3], точнее, не рекомендовалось[4]) наряду с аппаратными средствами, важнейшая составляющая информационных …   Википедия

  • Программный продукт — Запрос «Software» перенаправляется сюда. Cм. также другие значения. Программное обеспечение (произношение обеспечение не рекомендуется[1][2][3], точнее, не рекомендовалось[4]) наряду с аппаратными средствами, важнейшая составляющая информационных …   Википедия

  • Программное обеспечение — Запрос «Software» перенаправляется сюда; см. также другие значения …   Википедия

  • Теория заговора — У этого термина существуют и другие значения, см. Теория заговора (значения). Теория заговора (от англ. conspiracy theory, также известная как конспирологическая теория)  совокупность гипотез, показывающая жизненно важное (общественно… …   Википедия

  • Фича — (англ. feature особенность, необычное свойство, «фишка»)  сленговое обозначение каких либо необычных признаков какого либо явления. «Фичей» могут выступать необычные программные возможности, особые функции, что либо, что привлекает… …   Википедия

  • C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»