Articulo de referencia

Crecimiento de funcionalidades

La expansión excesiva de funcionalidades es la adición continua y excesiva de nuevas características en un producto, [ 1 ] especialmente en software , videojuegos (donde no debe...

La expansión excesiva de funcionalidades es la adición continua y excesiva de nuevas características en un producto, [ 1 ] especialmente en software , videojuegos (donde no debe confundirse con la expansión excesiva de potencia ) y electrónica de consumo y empresarial . Estas funcionalidades adicionales van más allá de la función básica del producto y pueden resultar en un software inflado y excesivamente complicado, en lugar de un diseño simple.

La definición de lo que se considera "expansión de funcionalidades" varía entre los usuarios finales , ya que lo que algunos perciben como tal puede ser considerado funcionalidad práctica por otros. [ 2 ] La expansión de funcionalidades se considera la causa más común de sobrecostos y retrasos en los plazos de entrega. [ 3 ] Por lo tanto, pone en peligro e incluso puede acabar con productos y proyectos.

Causas

La incorporación de nuevas funcionalidades puede surgir del deseo de ofrecer al consumidor un producto más útil o atractivo para aumentar las ventas o la distribución. Una vez que un producto cumple con todas sus funciones, el fabricante puede añadir funciones que algunos usuarios consideren innecesarias (a veces a costa de la eficiencia) o continuar con la versión original (a costa de una percepción de falta de mejora).

La acumulación de características también puede surgir como resultado de un compromiso de un comité que implementa varios puntos de vista o casos de uso diferentes en el mismo producto, incluso por razones oportunistas. [ 4 ] A medida que se agregan más características para respaldar cada enfoque, las características de conversión cruzada entre los múltiples paradigmas pueden complicar aún más el conjunto total de características.

Control

Existen varios métodos para controlar la proliferación de funcionalidades, entre ellos: límites estrictos para las funcionalidades permitidas, múltiples variaciones y la eliminación de funcionalidades sobrantes.

Separación

La acumulación de funcionalidades posteriores puede evitarse basando el diseño inicial en sólidos fundamentos de software, como la separación lógica de la funcionalidad y el acceso a los datos, por ejemplo, mediante el uso de submenús a los que los usuarios avanzados puedan acceder opcionalmente para obtener más funcionalidades y mayor detalle de la información. Esto puede controlarse activamente con una gestión de cambios rigurosa y retrasando los cambios a fases posteriores de la entrega del proyecto. [ 5 ]

Dado que la constante incorporación de nuevas funciones podría exceder los recursos disponibles, se puede mantener por separado una versión básica del producto para garantizar su funcionamiento en entornos operativos más reducidos. Aplicando la regla del 80/20, las versiones más básicas del producto podrían satisfacer las necesidades de la mayoría (aproximadamente el 80%) de los usuarios, evitando así la complejidad (o el coste adicional) de las funciones solicitadas por el 20% restante. Estas funciones adicionales siguen estando disponibles, pero son opcionales y pueden ser utilizadas por quienes las soliciten, aunque no se han implementado en las versiones básicas del producto.

Variaciones y opciones

Otro método para controlar la proliferación de funciones es mantener múltiples variantes de productos, donde las funciones se limitan y reducen en las versiones más básicas, como por ejemplo las ediciones de Microsoft Windows . En el caso de las interfaces de usuario de software , se pueden utilizar modos de visualización o de operación (por ejemplo, modo básico o modo experto), entre los que los usuarios pueden elegir según sus necesidades.

Tanto en muchas interfaces gráficas de usuario como en las interfaces de línea de comandos , los usuarios pueden activar manualmente un nivel de detalle mayor. En este último caso, en muchos programas de línea de comandos, añadir manualmente una opción -vo --verbosemuestra información más detallada que puede ser menos relevante para usuarios principiantes, pero útil para usuarios avanzados o para la depuración y resolución de problemas.

Modularidad

Otra solución para la acumulación de funciones es la modularidad . Los usuarios avanzados que requieren más funcionalidades pueden incorporar las características necesarias descargando módulos de software, complementos , extensiones (también conocidas como add-ons) y temas personalizados que se ajusten a sus necesidades.

Poda

En algún momento, el costo de mantener un subconjunto específico de funciones podría volverse prohibitivo, y se podría recurrir a la eliminación de funciones. Una nueva versión del producto podría omitir las funciones adicionales, o quizás se podría utilizar un período de transición, durante el cual las funciones antiguas se descontinuarían antes de su eliminación definitiva del sistema. Si existen varias versiones de un producto, algunas de ellas podrían dejar de utilizarse. Un ejemplo importante es el Samsung Galaxy S6 , lanzado en marzo de 2015, del cual se eliminaron muchas funciones de software/menú y también algunas de hardware. Aún no se ha lanzado una versión "más funcional".

Consecuencias

Ampliación del alcance

En ocasiones, la incorporación incontrolada de funcionalidades puede dar lugar a productos que superan el alcance previsto inicialmente; esto se conoce como desviación del alcance . Una consecuencia común de esta desviación es el retraso o la cancelación del producto, que puede resultar más caro de lo previsto.

Retrasos

A menudo, un proyecto de software con funcionalidades razonablemente completas, o con una cantidad moderada de nuevas funcionalidades, puede sobrevivir e incluso prosperar a través de muchas iteraciones, pero su sucesor puede sufrir retrasos sustanciales una vez que se decide reescribir todo el código base, además de introducir nuevas tecnologías. Por ejemplo, Windows Vista de Microsoft se planeó como una versión menor entre Windows XP y su sucesor, cuyo nombre en clave era Windows "Blackcomb" (lanzado como Windows 7), pero después de adaptar cada vez más funciones de Blackcomb (muchas de las cuales finalmente se cancelaron), Vista se convirtió en una versión principal que requirió cinco años de desarrollo.

Un destino similar sufrió Netscape 6 , que originalmente iba a ser Netscape 5. La decisión de Netscape Communications en 1998 de liberar el código fuente de su navegador Netscape Navigator y su suite de Internet Communicator (ambos con nombre en clave Mozilla) pronto puso de manifiesto que el código subyacente era demasiado complejo y requería una reescritura completa de Mozilla, lo que impulsó la creación del marco de aplicaciones de Mozilla . Esto provocó importantes retrasos, se omitió Netscape 5 y la empresa fue adquirida por AOL. El lanzamiento posterior de Netscape 6.00 en 2000 fue ampliamente criticado por ser un código en fase alfa, y el proyecto alcanzó la estabilidad con Netscape 6.1 en 2001, tres años después de la decisión de rediseñar la suite de Internet. Para entonces, el navegador Internet Explorer de Microsoft ya había superado con creces a Netscape en cuota de mercado, que se había reducido a un solo dígito.

Incluso después de alcanzar la estabilidad y obtener algunas nuevas funciones necesarias, la suite de aplicaciones de código abierto Mozilla (entonces llamada simplemente Mozilla), sobre la cual AOL construyó Netscape, fue vista como " excesiva ". Tan solo un año después, un grupo de desarrolladores de Mozilla decidió separar el componente del navegador, que finalmente se convirtió en Firefox .

El proyecto Broken Age de Double Fine Adventures, financiado a través de Kickstarter, es otro ejemplo de un proyecto que se retrasa por la incorporación de nuevas características. Originalmente previsto para octubre de 2012, la primera mitad del juego se lanzó en enero de 2014, mientras que la segunda llegó a finales de abril de 2015, y requirió dos rondas de financiación separadas para su finalización. [ 6 ]

Creaturismo de la fiebre

La acumulación de funcionalidades combinada con plazos de entrega ajustados suele conducir a una «solución chapucera» . El cambio deseado puede ser lo suficientemente grande como para justificar un rediseño de la base del proyecto existente, pero la presión de los plazos obliga a los desarrolladores a apresurarse y lanzar un producto menos refinado. El juego de palabras «feeping creaturism» se acuñó para enfatizar el disgusto de los desarrolladores ante esta situación, [ 7 ] personificando el producto con alcance descontrolado como «una criatura deforme de chapuzas... merodeando en la oscuridad», [ 8 ] y presagio de más complicaciones por venir. [ 9 ] («Feeping» es un sinónimo de jerga de «beeping»). [ 10 ]

Véase también

Referencias

  1. JM Sullivan (8–10 de junio de 2005). «Obstáculos e incentivos para la automatización en la Fuerza Aérea». Actas del Simposio Internacional de Tecnología y Sociedad de 2005. Armas y cables: prevención y seguridad en tiempos de temor. ISTAS 2005. págs. 101–110 . doi : 10.1109/ISTAS.2005.1452719 . ISBN  0-7803-9284-1. S2CID 21079766 . 
  2. Featuritis (o featurismo rastrero) . Enero de 2024.
  3. Davis, FD; Venkatesh, V. (febrero de 2004), "Hacia las pruebas de aceptación del usuario de preprototipos de nuevos sistemas de información: implicaciones para la gestión de proyectos de software", IEEE Transactions on Engineering Management , 51, 51 (1): 31– 46, doi : 10.1109/TEM.2003.822468 , ISSN 0018-9391 , S2CID 1204079  
  4. Krystallis, Ilias; Locatelli, Giorgio (2022-09-01). "Normalización de la mala conducta de cuello blanco en empresas de servicios profesionales" . Journal of Management in Engineering . 38 (5): 04022049. doi : 10.1061/(ASCE)ME.1943-5479.0001079 . hdl : 11311/1228318 . ISSN 1943-5479 . S2CID 250326876 .  
  5. Kenneth S. Norton (2001), Aplicación de metodologías evolutivas multifuncionales al desarrollo web , artículo en Ingeniería web: Gestión de la diversidad y complejidad de la web, publicado por Springer, ISBN 3-540-42130-0{{citation}}: CS1 mantenimiento: ubicación del editor ( enlace )
  6. Double Fine divide Broken Age por la mitad para financiar su finalización , por Kris Ligman, 2 de julio de 2013, Gamasutra
  7. feeping creaturism , 27/05/2016, FOLDOC.org - El diccionario en línea gratuito de informática
  8. Raymond, Eric S.; et al. (29 de diciembre de 2003). "feeping creaturism" . The Jargon File . Versión 4.4.7 . Consultado el 20 de junio de 2017 . 
  9. Raymond, Eric S.; et al. (29 de diciembre de 2003). "feeping creature" . The Jargon File . Versión 4.4.7 . Consultado el 20 de junio de 2017 . 
  10. Raymond, Eric S.; et al. (29 de diciembre de 2003). "feep" . The Jargon File . Versión 4.4.7 . Consultado el 20 de junio de 2017 . 
  • Creeping Featuritis , ContentCreationWiki (registrado como muy tarde el 23 de octubre de 1995 ).