Раздувание программного обеспечения | это... Что такое Раздувание программного обеспечения? (original) (raw)
Раздува́ние програ́ммного обеспе́чения (англ. software bloat, bloatware) — тенденция новых программ быть больше по объёму и требовать больше системных ресурсов по сравнению со старыми[источник не указан 267 дней].
Никлаус Вирт в 1996 году написал статью «Долой „жирные программы“», подняв проблему программ, для которых рост требований к ресурсам превышает рост их функциональности и производительности.[1] Термин «жирные программы» (fatware) позаимствован из статьи Э. Перраторе 1993 года.[2]
Содержание
- 1 Причины
- 2 Пример 1: системные требования Microsoft Windows
- 3 Пример 2: вывод списка файлов
- 4 Отношение к раздуванию ПО
- 5 Альтернативы раздутому ПО
- 6 Сходные явления
- 7 Примечания
Причины
![]() |
Возможно, этот раздел содержит оригинальное исследование. Добавьте ссылки на источники, в противном случае он может быть удалён.Дополнительные сведения могут быть на странице обсуждения. |
---|
Юмористический закон
Каждая программа расширяется, пока она не сможет читать почту. Программы, которые не могут читать почту, заменяются теми, которые могут.
Закон экстенсивного программирования
Джейми Завинского[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]
Примечания
- ↑ Никлаус Вирт. Долой «жирные» программы.
- ↑ E. Perratore и др. Fighting Fatware // Byte. — апрель 1993. — Vol. 18. — № 4. — P. 98—108.
- ↑ Один из авторов Netscape Navigator. См.: Jargon File.
- ↑ Microsoft KB: Windows 95 Installation Requirements. Microsoft (23 апреля 2007). Архивировано из первоисточника 15 марта 2012. Проверено ???.
- ↑ Требования к аппаратному обеспечению для установки Windows 98. Microsoft (30 декабря 2004). Архивировано из первоисточника 15 марта 2012. Проверено ???.
- ↑ Минимальные аппаратные требования для установки Microsoft Windows Millennium Edition. Microsoft (3 октября 2004). Архивировано из первоисточника 15 марта 2012. Проверено ???.
- ↑ System requirements for Microsoft Windows 2000 operating systems. Microsoft (13 ноября 2007). Архивировано из первоисточника 15 марта 2012. Проверено ???.
- ↑ Системные требования для операционных систем Windows ХР. Microsoft (25 января 2006). Архивировано из первоисточника 15 марта 2012. Проверено ???.
- ↑ Системные требования для Windows Vista. Microsoft (28 мая 2007). Архивировано из первоисточника 15 марта 2012. Проверено ???.
- ↑ Системные требования для седьмой винды 7. Архивировано из первоисточника 5 февраля 2012.
- ↑ Strategy Letter IV: Bloatware and the 80/20 Myth
- ↑ Featurecreep GameDev.ru