Раздувание программного обеспечения — это процесс, при котором последующие версии компьютерной программы становятся заметно медленнее, используют больше памяти, дискового пространства или вычислительной мощности или имеют более высокие требования к оборудованию, чем предыдущая версия, при этом внося только сомнительные, заметные пользователю улучшения или страдая от наплыва функций . Термин не применяется последовательно; он часто используется конечными пользователями как уничижительное слово , в том числе для описания нежелательных изменений пользовательского интерфейса, даже если эти изменения мало или совсем не повлияли на требования к оборудованию. В долгоживущем программном обеспечении воспринимаемое раздувание может происходить из-за того, что программное обеспечение обслуживает большой, разнообразный рынок со множеством различных требований. Большинство конечных пользователей будут считать, что им нужно только ограниченное подмножество доступных функций, и будут считать другие ненужными раздуваниями, даже если конечным пользователям с другими требованиями требуются эти функции.
Фактическое (измеримое) раздувание может произойти из-за снижения акцента на алгоритмической эффективности в пользу других проблем, таких как производительность разработчика, или, возможно, из-за введения новых уровней абстракции, таких как виртуальная машина или другой скриптовый движок, для удобства, когда ограничения разработчика уменьшаются. Восприятие повышения производительности разработчика, в случае практики разработки в средах виртуальных машин, происходит от того, что разработчики больше не принимают во внимание ограничения ресурсов и их использование во время проектирования и разработки; это позволяет быстрее завершить продукт, но в результате это приводит к увеличению требований к оборудованию конечного пользователя и/или снижению производительности.
Термин «bloatware» также используется для описания нежелательного предустановленного программного обеспечения или программ-пакетов . [1]
В компьютерном программировании раздувание кода означает наличие программного кода (исходного или машинного кода), который воспринимается как неоправданно длинный, медленный или иным образом нерациональный по использованию ресурсов.
Разработчики программного обеспечения, работавшие в этой отрасли в 1970-х годах, имели серьезные ограничения по вычислительной мощности, дисковому пространству и памяти. Каждый байт и тактовый цикл учитывались, и много работы было потрачено на то, чтобы втиснуть программы в доступные ресурсы. Достижение этой эффективности было одной из самых высоких ценностей программистов, и лучшие программы часто назывались « элегантными », термин, используемый математиками для описания доказательства, которое является аккуратным, экономным и мощным.
К 21 веку ситуация изменилась на противоположную. Ресурсы воспринимались как дешевые, а скорость кодирования и основные функции для маркетинга рассматривались как приоритеты. [2] Отчасти это связано с тем, что с тех пор технологические достижения увеличили производительность обработки и плотность хранения на порядки, одновременно снизив относительные затраты на аналогичные порядки (см. закон Мура ). Кроме того, распространение компьютеров на всех уровнях бизнеса и домашней жизни привело к тому, что индустрия программного обеспечения стала во много раз больше, чем в 1970-х годах. Программы теперь обычно штампуются командами, направляемыми комитетами в студиях разработки программного обеспечения (также известных как дома программного обеспечения или фабрики программного обеспечения), где каждый программист работает только над частью целого, над одной или несколькими подпрограммами . [ необходима ссылка ]
Наконец, инструменты и подходы к разработке программного обеспечения часто приводят к изменениям по всей программе для размещения каждой функции, что приводит к крупномасштабному включению кода, который влияет на основную работу программного обеспечения и требуется для поддержки функций, которые сами по себе могут использоваться лишь изредка. В частности, прогресс в доступных ресурсах привел к появлению инструментов, которые позволяют упростить разработку кода, опять же с меньшим приоритетом, отдаваемым конечной эффективности.
Другой причиной раздувания являются независимо конкурирующие стандарты и продукты, которые могут создать спрос на интеграцию. Сейчас существует больше операционных систем, браузеров, протоколов и форматов хранения, чем раньше, что приводит к раздуванию программ из-за проблем с совместимостью. Например, программа, которая раньше могла сохранять только в текстовом формате, теперь должна сохранять в HTML, XML, XLS, CSV, PDF, DOC и других форматах.
Никлаус Вирт подытожил ситуацию в законе Вирта , который гласит, что скорость программного обеспечения снижается быстрее, чем увеличивается скорость оборудования.
В своем эссе 2001 года «Strategy Letter IV: Bloatware and the 80/20 Myth» [ 3] Джоэл Спольски утверждает, что хотя 80% пользователей используют только 20% функций (вариация принципа Парето ), каждый из них использует разные функции. Таким образом, «облегченные» версии программного обеспечения оказываются бесполезными для большинства, поскольку в них отсутствуют одна или две специальные функции, которые присутствуют в «раздутой» версии. Спольски подводит итог статьи цитатой Джейми Завински, ссылающейся на Mozilla Application Suite (который позже стал SeaMonkey ):
«Хотя это было бы удобно, если бы было правдой, Mozilla не велика, потому что она полна бесполезного хлама. Mozilla велика, потому что ваши потребности велики. Ваши потребности велики, потому что Интернет велик. Существует множество маленьких, простых веб-браузеров, которые, кстати, не делают почти ничего полезного. [...] Но быть сверкающим бриллиантом совершенства не было целью, когда мы писали Mozilla». [4]
Раздувание программного обеспечения также может быть симптомом эффекта второй системы , описанного Фредом Бруксом в книге «Мифический человеко-месяц» .
«Bloatware» — это программное обеспечение, которое стало раздутым из-за неэффективности или увеличения функций, как описано выше. [3] Этот термин также широко используется для обозначения предустановленного на устройстве программного обеспечения , как правило, производителем оборудования, которое в большинстве случаев нежелательно для покупателя.
Термин может также применяться к накоплению нежелательных и неиспользуемых элементов программного обеспечения, которые остаются после частичной и неполной деинсталляции . Эти элементы могут включать целые программы, библиотеки, связанную информацию о конфигурации или другие данные. Производительность может ухудшиться в целом из-за таких остатков, так как нежелательное программное обеспечение или компоненты программного обеспечения могут занимать как память жесткого диска, так и оперативную память, тратить время обработки, добавлять дисковый ввод-вывод и вызывать задержки при запуске и завершении работы системы. В худшем случае оставшееся программное обеспечение может мешать правильной работе нужного программного обеспечения. [5]
На устройствах Android часть вредоносного ПО можно скрыть от учетной записи пользователя с помощью ADB , хотя это не удаляет приложение и все равно занимает место на диске, оно не будет запускаться и замедлять работу системы. [6] [7] Разблокировав загрузчик , пользователи могут удалить файлы вредоносного ПО, установить пользовательскую прошивку или получить права root, что позволяет полностью удалить приложение. [8]
iTunes от Apple обвиняют в раздутии из-за попыток превратить его из простого медиаплеера в платформу электронной коммерции и рекламы, [18] [19] а бывший редактор PC World Эд Ботт обвинил компанию в лицемерии в ее рекламных атаках на Windows за аналогичные практики. [20] В 2019 году Apple объявила о предстоящем закрытии программы, шаг, который комментатор из The Guardian охарактеризовал как «давно назревший», заявив, что программа «стала барочно раздутой, поразительная аномалия для компании, которая гордится элегантным и функциональным дизайном». [21]
Microsoft Windows также критиковали за раздутость — ссылаясь на Windows Vista и обсуждая новые, значительно урезанные основные компоненты Windows 7 , инженер Microsoft Эрик Траут прокомментировал, что «Это ядро Windows 7. Это набор компонентов, которые мы убрали. Многие думают о Windows как о действительно большой, раздутой операционной системе, и это может быть справедливой характеристикой, я должен признать. Она большая. Она содержит в себе много всего. Но в своей основе ядро и компоненты, составляющие само ядро операционной системы, на самом деле довольно оптимизированы». [22] [23] Эд Ботт также выразил скептицизм, отметив, что почти каждая операционная система, которую когда-либо продавала Microsoft, подвергалась критике за «раздутость» при первом выпуске, даже те, которые сейчас считаются полной противоположностью, например, MS-DOS . [24] Цитируя Пола Террота, Ботт согласился, что причиной раздувания являются многочисленные функции корпоративного уровня, включенные в операционную систему, которые по большей части не имеют значения для обычного домашнего пользователя.
Приложения для записи компакт-дисков и DVD, такие как Nero Burning ROM, подвергаются критике за раздутость. [25] Излишние функции, не предназначенные специально для конечного пользователя, иногда устанавливаются по умолчанию с помощью экспресс-установок.
Ряд технологических блогов также освещали проблему увеличения количества раздутого ПО на мобильных телефонах. Однако они ссылаются на другую проблему, а именно на проблему беспроводных операторов, загружающих телефоны с программным обеспечением, которое во многих случаях не может быть легко удалено, если вообще может быть удалено. Это чаще всего упоминалось в отношении устройств Android , хотя это явление существует и на телефонах, работающих под управлением многих других операционных систем. [26] [27]
Некоторые из самых популярных современных приложений для обмена сообщениями , которые ранее были сосредоточены только на обмене мгновенными сообщениями , подверглись критике за раздутость из-за нагромождения функций. [28] [29] [30] [31] WeChat добавил дополнительные функции, такие как игры, подписные сервисы, электронный кошелек WeChat Pay , [28] агрегатор новостей , центр электронной коммерции , функцию электронного правительства , [29] систему бронирования кино, поиск ресторанов и компанию по совместному использованию поездок , [31] что увеличило размер приложения с 2 МБ в 2011 году до 58 МБ в 2018 году. [ необходима ссылка ] Facebook Messenger , который был отделен от приложения Facebook , также подвергается критике за добавление дополнительных функций, таких как игры, боты и функции, скопированные из Snapchat, такие как Messenger Day (истории), фильтры для лица, камера с возможностью редактирования фотографий, рисование каракулей и добавленные эмодзи и стикеры. [32] [33] В январе 2018 года глава Facebook Messaging Дэвид А. Маркус признал, что само приложение чрезвычайно раздутое, и пообещал переработать все приложение, чтобы удалить ненужные функции и упростить его. [30] Переработанное и оптимизированное приложение Facebook Messenger было анонсировано в октябре 2018 года, в котором его функции сведены к сообщениям, историям, вкладке «Обзор» и камере. [34]
Некоторые приложения, такие как GIMP и программное обеспечение с дополнительными функциями из подключаемых модулей , используют расширения или надстройки, которые загружаются отдельно от основного приложения. Они могут быть созданы как разработчиком программного обеспечения, так и сторонними разработчиками. Подключаемые модули, расширения и надстройки добавляют дополнительную функциональность, которая в противном случае могла бы быть упакована в основную программу.
Разрешение этих плагинов, расширений и/или надстроек уменьшает пространство, используемое на любой машине, поскольку, хотя приложение, «интерфейс плагина» и все плагины вместе взятые больше, чем та же функциональность, скомпилированная в одно монолитное приложение, это позволяет каждому пользователю устанавливать только те конкретные дополнительные функции, которые ему требуются, вместо того, чтобы заставлять каждого пользователя устанавливать гораздо большее монолитное приложение, которое включает все доступные функции. Это приводит к «урезанному» или «готовому к использованию» приложению, которое поставляется в компактном пакете, но готово для добавления пользователями любых недостающих функций.
Программное обеспечение с открытым исходным кодом может использовать похожую технику, используя директивы препроцессора для выборочного включения функций во время компиляции. Это проще реализовать и более безопасно, чем система плагинов, но имеет тот недостаток, что пользователь, которому нужен определенный набор функций, должен скомпилировать программу из исходного кода.
Иногда программное обеспечение становится раздутым из-за « ползучего фитуризма » [35] ( закон Завински о программном окружении ). Один из способов уменьшить такое раздувание описывается философией Unix: «написание программ, которые делают одну вещь и делают это хорошо», и разбиение того, что было бы единым сложным фрагментом программного обеспечения, на множество более простых компонентов, которые можно объединить с помощью каналов , сценариев оболочки или других форм межприкладного взаимодействия .
Раздувание программного обеспечения может привести к большему количеству уязвимостей из-за повышения сложности управления большим количеством кода и зависимостей. Кроме того, это может затруднить понимание разработчиками программного обеспечения кода, который они отправляют, увеличивая сложность обнаружения и исправления уязвимостей. [36] [37]
Хотя вредоносное ПО не является разновидностью вредоносного ПО и не предназначено для вредоносных целей, оно может непреднамеренно создавать некоторые уязвимости и повышать риск заражения компьютера пользователя компьютерными вирусами или программами-вымогателями . [38] [39]
8 Release Preview отлично работает на том же оборудовании, что и Windows 7
{{cite news}}
: CS1 maint: unfit URL (link)Некоторые вредоносные программы также создают уязвимости в вашем компьютере, что может облегчить заражение вредоносным ПО, включая программы-вымогатели или программы-шпионы.}