- Раздувание ПО
-
Раздува́ние програ́ммного обеспече́ния (англ. software bloat, bloatware) — тенденция новых программ быть больше по объёму и требовать больше системных ресурсов по сравнению со старыми. В результате у многих людей появляется ощущение, что рост мощности компьютеров более чем компенсируется замедлением работы программ.
Содержание
Причины
Юмористический закон- Основной причиной этого является добавление в программы всё новых функций и возможностей, в том числе и не являющихся абсолютно необходимыми для работы.
- Некоторые из подобных функций фактически стали требованиями. Например, графический интерфейс требует существенно бо́льших ресурсов, чем текстовый, однако пользователи уже привыкли работать только с графическим интерфейсом (даже если им фактически и не требуется работать с изображениями).
- Всё чаще используются внешние библиотеки, в которых универсальность оборачивается большим размером. Например: в 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: вывод списка файлов
Во времена NC или VC) осуществляли вывод списка файлов практически мгновенно. В современных системах, несмотря на многократно возросшую мощь компьютеров, вывод списка файлов занимает довольно длительное время — это связано главным образом со сложной системой иконок файлов, которые во многих случаях генерируются в зависимости от содержания файла. Таким образом, если раньше программе требовалось только получить список файлов и отсортировать его, то теперь требуется для каждого файла либо заглянуть в реестр (чтобы узнать, какая иконка соответствует данному расширению имени), либо прочитать этот файл, чтобы сгенерировать подходящую иконку. Многие пользователи предпочли бы обойтись без иконок, но в большинстве систем отключить их вывод невозможно.
Отношение к раздуванию ПО
Пользователи, как правило, относятся к раздутому ПО отрицательно. По мнению Джоэла Спольски, зря[8] по следующим причинам:
- С прогрессом микроэлектроники аппаратное обеспечение, на котором новая версия способна работать, часто оказывается даже дешевле. Например, Excel 1.0 потреблял 36 долл. дискового пространства по ценам 1993 года, Excel 2000 — 1,03 долл. по ценам 2000 года.
- Оптимизация экономически оправдана только в ключевых точках программы. Вовремя вышедшая программа важнее хорошо оптимизированной (в крайнем случае можно выпустить патч).
- Хотя типичный пользователь использует 20 % функций, у разных пользователей эти 20 % разные. Поэтому, если написать облегчённую программу, в которой реализованы только 20 % функций, есть риск, что она нужна будет только разработчику и больше никому.
Кроме того, как заметил Реймонд Чен, пользователь часто не замечает усовершенствованные «внутренности» ПО. Например, калькулятор Windows часто ругали за потерю точности. В какой-то момент стандартную библиотеку работы с числами с плавающей запятой в формате IEEE заменили на библиотеку с поддержкой чисел произвольной точности, но это мало кто заметил.[9]
Альтернативы раздутому ПО
- Модульный принцип — к основной программе подключается дополнительная функциональность в виде плагинов. Это позволит исключить из основной поставки редкоиспользуемую функциональность.
- Написание ПО по хорошо проработанному техническому заданию, без «функций для галочки».
- Открытое ПО может скрывать редкоиспользуемые функции с помощью директив препроцессора (см.: Условная компиляция). Например, в n».
Сходные явления
Функции для галочки
С раздуванием программного обеспечения связан такой феномен, как «функции для галочки». Этим термином называют функции, наспех сделанные исключительно для того, чтобы указать в рекламном проспекте, что эта функция есть.
Раздувание кода
Программный код, который пишется несколькими людьми (или одним в течение длительного времени) часто подвержен раздуванию. Признаками этого являются:
- Спагетти-код (даже если нет ни одного
- Неиспользуемые функции.
- Повторное вычисление одного и того же.
- Повторное написание одной и той же функциональности.
Причинами могут быть:
- Недостаточное взаимодействие между программистами, плохая координация действий группы.
- Непрофессиональный программист.
- Неразбериха в начале проекта, смена технического задания.
Против раздувания кода помогает серьёзный рефакторинг — но затраты на него могут быть настолько велики, что приходится держать «взрывоопасный» код «до последнего».
Фичакрип, или «раздувание функциональности»
К концу разработки выясняется, что для сдачи законченного продукта требуется реализовать всё больше и больше функций, «и все нужны».[10] Это и есть фичакрип (англ. feature creep). Предполагается, что это главная причина невыхода программных продуктов и превышения бюджета.
Примечания
- ↑ Один из авторов Netscape Navigator. См.: Jargon File.
- ↑ Microsoft KB: Windows 95 Installation Requirements. Microsoft (???). Проверено ???.
- ↑ Требования к аппаратному обеспечению для установки Windows 98. Microsoft (???). Проверено ???.
- ↑ Минимальные аппаратные требования для установки Microsoft Windows Millennium Edition. Microsoft (???). Проверено ???.
- ↑ System requirements for Microsoft Windows 2000 operating systems. Microsoft (???). Проверено ???.
- ↑ Системные требования для операционных систем Windows ХР. Microsoft (???). Проверено ???.
- ↑ Системные требования для Windows Vista. Microsoft (???). Проверено ???.
- ↑ Strategy Letter IV: Bloatware and the 80/20 Myth
- ↑ When you change the insides, nobody notices (англ.). MSDN Blogs (25 мая 2004). Проверено 16 декабря 2008.
- ↑ Featurecreep на gamedev.ru
- Основной причиной этого является добавление в программы всё новых функций и возможностей, в том числе и не являющихся абсолютно необходимыми для работы.
Wikimedia Foundation. 2010.