La hinchazón del software es un proceso por el cual las versiones sucesivas de un programa informático se vuelven perceptiblemente más lentas, utilizan más memoria, espacio en disco o potencia de procesamiento, o tienen mayores requisitos de hardware que la versión anterior, mientras que solo realizan mejoras dudosas perceptibles para el usuario o sufren una expansión de funciones . El término no se aplica de manera consistente; los usuarios finales lo utilizan a menudo de manera peyorativa , incluso para describir cambios no deseados en la interfaz de usuario , incluso si esos cambios tuvieron poco o ningún efecto en los requisitos de hardware. En el software de larga duración, la hinchazón percibida puede ocurrir porque el software atiende a un mercado grande y diverso con muchos requisitos diferentes. La mayoría de los usuarios finales sentirán que solo necesitan un subconjunto limitado de las funciones disponibles y considerarán las demás como una hinchazón innecesaria, incluso si los usuarios finales con diferentes requisitos requieren esas funciones.
La hinchazón real (medible) puede ocurrir debido a la falta de énfasis en la eficiencia algorítmica a favor de otras preocupaciones como la productividad del desarrollador, o posiblemente a través de la introducción de nuevas capas de abstracción como una máquina virtual u otro motor de scripting con fines de conveniencia cuando se reducen las limitaciones del desarrollador. La percepción de una mayor productividad del desarrollador, en el caso de practicar el desarrollo dentro de entornos de máquinas virtuales, proviene de que los desarrolladores ya no tienen en cuenta las limitaciones y el uso de los recursos durante el diseño y el desarrollo; esto permite que el producto se complete más rápido, pero da como resultado aumentos en los requisitos de hardware del usuario final y/o un rendimiento comprometido como resultado.
El término "bloatware" también se utiliza para describir software preinstalado no deseado o programas incluidos en el paquete . [1]
En programación informática, la hinchazón de código se refiere a la presencia de código de programa (código fuente o código de máquina) que se percibe como innecesariamente largo, lento o que desperdicia recursos.
Los desarrolladores de software que trabajaron en la industria durante la década de 1970 tenían limitaciones severas en cuanto a potencia de procesamiento, espacio en disco y memoria. Se tenía en cuenta cada byte y ciclo de reloj , y se dedicaba mucho trabajo a adaptar los programas a los recursos disponibles. Lograr esta eficiencia era uno de los valores más importantes de los programadores informáticos, y los mejores programas solían llamarse " elegantes ", un término utilizado por los matemáticos para describir una prueba ordenada, parsimoniosa y potente.
En el siglo XXI, la situación se había revertido. Los recursos se consideraban baratos y la rapidez de codificación y las características principales para el marketing se consideraban prioridades. [2] En parte, esto se debe a que los avances tecnológicos han aumentado desde entonces la capacidad de procesamiento y la densidad de almacenamiento en órdenes de magnitud, al tiempo que han reducido los costos relativos en órdenes de magnitud similares (véase la ley de Moore ). Además, la difusión de las computadoras en todos los niveles de la vida empresarial y doméstica ha producido una industria del software mucho más grande que en la década de 1970. Ahora los programas suelen ser producidos en serie por equipos, dirigidos por comités en estudios de desarrollo de software (también conocidos como casas de software o fábricas de software) donde cada programador trabaja solo en una parte del todo, en una o más subrutinas . [ cita requerida ]
Por último, las herramientas y los enfoques de desarrollo de software suelen dar lugar a cambios en todo el programa para dar cabida a cada característica, lo que lleva a una inclusión a gran escala de código que afecta al funcionamiento principal del software y es necesario para dar soporte a funciones que, por sí mismas, pueden utilizarse sólo en raras ocasiones. En particular, los avances en los recursos disponibles han dado lugar a herramientas que permiten un desarrollo más sencillo del código, una vez más con menos prioridad dada a la eficiencia final.
Otra causa de la saturación son los estándares y productos que compiten de forma independiente, lo que puede generar una demanda de integración. Ahora hay más sistemas operativos, navegadores, protocolos y formatos de almacenamiento que antes, lo que provoca saturación en los programas debido a problemas de interoperabilidad. Por ejemplo, un programa que antes solo podía guardar en formato de texto ahora debe guardarlo en HTML, XML, XLS, CSV, PDF, DOC y otros formatos.
Niklaus Wirth resumió la situación en la ley de Wirth , que establece que la velocidad del software disminuye más rápidamente de lo que aumenta la velocidad del hardware.
En su ensayo de 2001 Strategy Letter IV: Bloatware and the 80/20 Myth [3] , Joel Spolsky sostiene que, si bien el 80% de los usuarios solo utiliza el 20% de las funciones (una variante del principio de Pareto ), cada uno utiliza funciones diferentes. Por lo tanto, las ediciones de software "lite" resultan inútiles para la mayoría, ya que carecen de una o dos funciones especiales que están presentes en la versión "hinchada". Spolsky resume el artículo con una cita de Jamie Zawinski que hace referencia a Mozilla Application Suite (que luego se convirtió en SeaMonkey ):
"Aunque sería conveniente si fuera cierto, Mozilla no es grande porque esté lleno de basura inútil. Mozilla es grande porque tus necesidades son grandes. Tus necesidades son grandes porque Internet es grande. Hay muchos navegadores web pequeños y simples que, por cierto, no hacen casi nada útil. [...] Pero ser una joya brillante de la perfección no era un objetivo cuando escribimos Mozilla". [4]
La hinchazón del software también puede ser un síntoma del efecto del segundo sistema , descrito por Fred Brooks en The Mythical Man-Month .
El "bloatware" es un software que se ha vuelto demasiado pesado debido a la ineficiencia o la acumulación de funciones como se describió anteriormente. [3] El término también se usa comúnmente para el software preinstalado incluido en un dispositivo, generalmente por el fabricante del hardware, que en su mayoría no es deseado por el comprador.
El término también puede aplicarse a la acumulación de elementos de software no deseados y sin usar que quedan después de una desinstalación parcial e incompleta . Estos elementos pueden incluir programas completos, bibliotecas, información de configuración asociada u otros datos. El rendimiento puede deteriorarse en general como resultado de dichos restos, ya que el software no deseado o los componentes de software pueden ocupar tanto la memoria del disco duro como la RAM, desperdiciar tiempo de procesamiento, agregar E/S de disco y causar demoras en el inicio y apagado del sistema. En los peores casos, el software restante puede interferir con el funcionamiento correcto del software deseado. [5]
En los dispositivos Android , parte del bloatware se puede ocultar de una cuenta de usuario con ADB , aunque esto no elimina la aplicación y seguirá ocupando espacio en el disco, no se ejecutará y ralentizará el sistema. [6] [7] Al desbloquear el gestor de arranque , los usuarios pueden eliminar los archivos del bloatware, instalar un firmware personalizado u obtener privilegios de root que permiten desinstalar la aplicación por completo. [8]
Se ha acusado a iTunes de Apple de estar inflado por los esfuerzos para convertirlo de un simple reproductor multimedia a una plataforma de comercio electrónico y publicidad, [18] [19] y el ex editor de PC World, Ed Bott, acusó a la compañía de hipocresía en sus ataques publicitarios a Windows por prácticas similares. [20] En 2019, Apple anunció el cierre inminente del programa, una medida descrita por un comentarista de The Guardian como "muy esperada", afirmando que el programa se había "vuelto barrocamente hinchado, una anomalía sorprendente para una empresa que se enorgullece de su diseño elegante y funcional". [21]
Microsoft Windows también ha sido criticado por estar inflado: con referencia a Windows Vista y discutiendo los nuevos y muy reducidos componentes centrales de Windows 7 , el ingeniero de Microsoft Eric Traut comentó que "Este es el núcleo de Windows 7. Esta es una colección de componentes que hemos eliminado. Mucha gente piensa en Windows como este sistema operativo realmente grande e inflado, y esa puede ser una caracterización justa, tengo que admitirlo. Es grande. Contiene muchas cosas en él. Pero en su núcleo, el núcleo y los componentes que forman el núcleo mismo del sistema operativo en realidad están bastante optimizados". [22] [23] Ed Bott también expresó escepticismo, señalando que casi todos los sistemas operativos que Microsoft ha vendido han sido criticados por estar "inflados" en su primer lanzamiento, incluso aquellos que ahora se consideran exactamente lo opuesto, como MS-DOS . [24] Citando a Paul Thurrott, Bott estuvo de acuerdo en que la hinchazón se debe a numerosas características de nivel empresarial incluidas en el sistema operativo que eran en gran medida irrelevantes para el usuario doméstico promedio.
Las aplicaciones de grabación de CD y DVD como Nero Burning ROM han sido criticadas por ser demasiado pesadas. [25] A veces se instalan de forma predeterminada funciones superfluas que no están diseñadas específicamente para el usuario final a través de configuraciones rápidas.
Varios blogs de tecnología también han abordado el problema del aumento del bloatware en los teléfonos móviles. Sin embargo, se refieren a un problema diferente, en concreto, el de las compañías de telefonía móvil que cargan los teléfonos con software que, en muchos casos, no se puede eliminar fácilmente, si es que se puede. Esto se ha citado con más frecuencia en relación con los dispositivos Android , aunque este fenómeno existe en teléfonos que utilizan muchos otros sistemas operativos. [26] [27]
Algunas de las aplicaciones de mensajería actuales más populares , que anteriormente solo se centraban en la mensajería instantánea , han sido criticadas por estar infladas debido a la acumulación de funciones. [28] [29] [30] [31] WeChat agregó funciones adicionales como juegos, servicios de suscripción, billetera electrónica WeChat Pay , [28] un agregador de noticias , centro de comercio electrónico , función de gobierno electrónico , [29] sistema de reserva de cine, buscador de restaurantes y empresa de viajes compartidos , [31] lo que aumentó el tamaño de la aplicación de 2 MB en 2011 a 58 MB en 2018. [ cita requerida ] Facebook Messenger , que se ha separado de la aplicación de Facebook , es criticado de manera similar por agregar funciones adicionales como juegos, bots y funciones copiadas de Snapchat como Messenger Day (Stories), filtros faciales, una cámara con la capacidad de editar fotos, dibujar garabatos y agregar emojis y calcomanías. [32] [33] En enero de 2018, el jefe de mensajería de Facebook, David A. Marcus , admitió que la aplicación en sí está extremadamente inflada y prometió rediseñar toda la aplicación para eliminar funciones innecesarias y simplificarla. [30] La aplicación Facebook Messenger rediseñada y simplificada se anunció en octubre de 2018, en la que sus funciones se reducen a mensajería, historias, pestaña de descubrimiento y cámara. [34]
Algunas aplicaciones, como GIMP y el software con funciones adicionales a través de complementos , utilizan extensiones o complementos que se descargan por separado de la aplicación principal. Estos pueden ser creados por el desarrollador del software o por desarrolladores externos. Los complementos, extensiones y complementos agregan funciones adicionales que, de otro modo, podrían haber estado incluidas en el programa principal.
Permitir estos complementos, extensiones y/o complementos reduce el espacio utilizado en cualquier máquina, porque aunque la aplicación, la "interfaz del complemento" y todos los complementos combinados son más grandes que la misma funcionalidad compilada en una aplicación monolítica, permite a cada usuario instalar solo las características del complemento que necesita, en lugar de obligar a cada usuario a instalar una aplicación monolítica mucho más grande que incluye todas las características disponibles. Esto da como resultado una aplicación "reducida" o "lista para usar" que se entrega en un paquete compacto pero que está lista para que los usuarios agreguen cualquier funcionalidad faltante.
El software de código abierto puede utilizar una técnica similar, utilizando directivas de preprocesador para incluir funciones en tiempo de compilación de forma selectiva. Esto es más fácil de implementar y más seguro que un sistema de complementos, pero tiene la desventaja de que un usuario que desea un conjunto específico de funciones debe compilar el programa desde el código fuente.
A veces, el software se vuelve inflado debido a un " funcionalismo progresivo " [35] ( ley de Zawinski sobre la envoltura del software ). Una forma de reducir ese tipo de hinchazón se describe mediante la filosofía Unix de "escribir programas que hagan una cosa y la hagan bien", y dividir lo que sería una única y complicada pieza de software en numerosos componentes más simples que se pueden encadenar entre sí mediante tuberías , scripts de shell u otras formas de comunicación entre aplicaciones .
La saturación del software puede generar más vulnerabilidades debido a la dificultad de gestionar una gran cantidad de código y dependencias. Además, puede dificultar que los desarrolladores de software comprendan el código que envían, lo que aumenta la dificultad de detectar y solucionar vulnerabilidades. [36] [37]
Aunque el bloatware no es un malware y no está diseñado con fines maliciosos, puede introducir algunas vulnerabilidades de manera involuntaria y puede hacer que la computadora del usuario tenga un mayor riesgo de infectarse con un virus informático o ransomware . [38] [39]
La versión preliminar de Windows 8 funciona perfectamente en el mismo hardware que utiliza Windows 7.
{{cite news}}
: CS1 maint: unfit URL (link)Algunos bloatware también introducen vulnerabilidades en el equipo que pueden facilitar su infección con malware, incluido ransomware o scareware.}