El deslizamiento de características es la expansión continua excesiva o la adición de nuevas características en un producto, [1] especialmente en software de computadora , videojuegos y electrónica comercial y de consumo . Estas características adicionales van más allá de la función básica del producto y pueden resultar en un software inflado y una complicación excesiva, en lugar de un diseño simple.
La definición de lo que se califica como "aumento de características" varía entre los usuarios finales, donde lo que algunos usuarios perciben como tal puede ser considerado una funcionalidad práctica por otros. [2]
Causas
La causa más común del deslizamiento de características es el deseo de proporcionar al consumidor un producto más útil o deseable, con el fin de aumentar las ventas o la distribución. Sin embargo, una vez que el producto alcanza el punto en el que hace todo lo que está diseñado para hacer, el fabricante tiene la opción de agregar funciones que algunos usuarios podrían considerar innecesarias (a veces a costa de la eficiencia) y quedarse con la versión anterior. (a costa de una percepción de falta de mejora).
Otra causa importante del deslizamiento de funciones podría ser un compromiso de un comité que decide implementar múltiples puntos de vista o casos de uso diferentes en el mismo producto. Luego, a medida que se agregan más funciones para respaldar cada enfoque, puede ser necesario tener funciones de conversión cruzada entre los múltiples paradigmas, lo que complica aún más las funciones totales.
Las causas comunes de la variación de características durante una fase de desarrollo incluyen [3] :
- Falta de un alcance de trabajo escrito
- Comunicación insuficientemente alta
- Perdió de vista el valor
- Demasiados cocineros
- Enfrentamiento de competencia
Caracteristicas
El deslizamiento de funciones es una de las fuentes más comunes de sobrecostos de costos y cronogramas. [4] [ verificación necesaria ] Por lo tanto, pone en peligro e incluso puede matar productos y proyectos.
Control
Existen varios métodos para controlar el deslizamiento de las características, que incluyen: límites estrictos para las características permitidas, múltiples variaciones y poda de las características en exceso.
Separación
La tentación de un deslizamiento posterior de características puede evitarse hasta cierto punto basando el diseño inicial en fundamentos sólidos del software, como la separación lógica de la funcionalidad y el acceso a los datos, por ejemplo, utilizando submenús a los que pueden acceder opcionalmente los usuarios avanzados que desean más funcionalidad y una mayor verbosidad de la información. . Puede controlarse activamente con una gestión de cambios rigurosa y retrasando los cambios en las fases posteriores de entrega de un proyecto. [5]
Variaciones y opciones
Otro método para controlar el deslizamiento de características es mantener múltiples variaciones de productos, donde las características se mantienen limitadas y reducidas en las variaciones más básicas, por ejemplo, en las ediciones de Microsoft Windows . Para las interfaces de usuario del software , se pueden utilizar modos de visualización o modos de funcionamiento (por ejemplo, modo básico o modo experto), entre los cuales los usuarios pueden seleccionar para satisfacer sus propias necesidades.
Tanto en muchas interfaces gráficas de usuario y las interfaces de línea de comandos , los usuarios son capaces de optar en un nivel de detalle superior de forma manual. En el último caso, en muchos programas de línea de comandos, agregar una opción -v
o --verbose
manualmente, muestra información más detallada que puede ser menos relevante para un mínimo de usuarios, pero útil para usuarios avanzados o con fines de depuración y resolución de problemas.
Debido a que la adición cada vez mayor y en constante expansión de nuevas funciones puede exceder los recursos disponibles, se puede mantener una versión "básica" mínima de un producto por separado, para garantizar el funcionamiento en entornos operativos más pequeños. Usando la " regla 80/20 ", las variaciones más básicas del producto podrían satisfacer las necesidades de la mayoría (por ejemplo, ~ 80%) de los usuarios, por lo que no estarían sujetos a la complejidad (o gasto adicional) de las funciones solicitadas por el avanzado el 20% de los usuarios. Las funciones adicionales todavía están disponibles, pero son opcionales y están listas para ser utilizadas por quienes las soliciten, pero no se han implementado en las versiones básicas de los productos.
Modularidad
Otra solución para el deslizamiento de características es la modularidad. Los usuarios avanzados que requieren más funcionalidad pueden actualizar las funciones necesarias descargando módulos de software, complementos , complementos (también conocidos como complementos) y temas personalizados para que coincidan con sus requisitos personales.
Poda
En algún momento, el costo de mantener un subconjunto particular de características puede volverse prohibitivo y se puede utilizar la poda. Una nueva versión del producto podría simplemente omitir las características adicionales, o quizás se usaría un período de transición, donde las características antiguas quedaron en desuso antes de su eventual eliminación del sistema. Si hay múltiples variaciones de productos, es posible que algunos de ellos se eliminen gradualmente. Un ejemplo importante es el Samsung Galaxy S6 , lanzado en marzo de 2015, del cual se eliminaron significativamente muchas características de software / menú y también algunas características de hardware. No se ha lanzado una variación "más funcional".
Consecuencias
Ampliación de alcance
Ocasionalmente, el arrastre incontrolado de características puede llevar a productos mucho más allá del alcance de lo que se pretendía originalmente; esto se conoce como fluencia del alcance . Sin embargo, una consecuencia más común del deslizamiento de funciones es un retraso o cancelación del producto, que puede resultar más caro de lo que se pretendía originalmente. [ cita requerida ]
Retrasos
A menudo, un proyecto de software con funciones razonablemente completas, o uno con cantidades moderadas de arrastre de funciones, puede sobrevivir e incluso prosperar a través de muchas iteraciones, pero su lanzamiento sucesor puede sufrir retrasos sustanciales una vez que se toma la decisión de reescribir todo el código base además de introduciendo nuevas tecnologías. Por ejemplo, se planeó que Windows Vista de Microsoft fuera una versión menor entre Windows XP y su sucesor con nombre en código Windows "Blackcomb" , pero después de adaptar más y más funciones de Blackcomb (muchas de las cuales finalmente se cancelaron), Vista resultó ser una de las principales. lanzamiento que tomó cinco años de desarrollo.
Netscape 6 sufrió un destino similar , que originalmente se suponía que era Netscape 5 . La decisión de 1998 de Netscape Communications de abrir el código abierto de su navegador Netscape Navigator y la suite Communicator Internet (ambos con nombre en código Mozilla) pronto hizo evidente que el código subyacente era demasiado difícil y requería una reescritura completa de Mozilla, lo que fomentó la creación de el marco de aplicación de Mozilla . Esto provocó retrasos importantes, se saltó Netscape 5 y AOL compró la empresa. El lanzamiento posterior de Netscape 6.00 en 2000 fue ampliamente criticado como código de nivel alfa, y el proyecto alcanzó la estabilidad de Netscape 6.1 en 2001, tres años después de la decisión de reelaborar la suite de Internet. Para entonces, el navegador Internet Explorer de Microsoft había eclipsado a Netscape en el uso compartido, que había disminuido a un solo dígito.
Incluso después de alcanzar la estabilidad y obtener algunas características nuevas necesarias, el Mozilla Application Suite de código abierto (entonces llamado simplemente Mozilla), en el que AOL construyó Netscape, fue visto como " inflado ". 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 de Kickstarter de Double Fine Adventures, Broken Age, es otro ejemplo de un proyecto que se retrasa debido a la pérdida de características. Originalmente se suponía que tenía una fecha de lanzamiento de octubre de 2012, la primera mitad del juego se lanzó en enero de 2014, mientras que la segunda mitad siguió a fines de abril de 2015 y requirió dos rondas de financiación separadas para completar. [6]
Alimentando el creaturismo
El deslizamiento de funciones combinado con plazos cortos a menudo conducirá a una "solución pirata" . 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 la fecha límite requiere que los desarrolladores simplemente "lo hagan funcionar" con un enfoque menos elegante. El buen humor spoonerism "feeping creaturism" fue acuñado para enfatizar la aversión de un programador de esta situación, [7] que personifica el producto alcance, se arrastró como "una criatura deforme de hacks ... rondando en la oscuridad", [8] y el precursor de más creep por venir. [9] ("Feeping" es un sinónimo de jerga de "pitido"). [10]
Ver también
- Elegancia escalofriante
- Documento de diseño
- Acaparamiento digital
- Emacs , un editor de texto que se ha ampliado para realizar muchas otras tareas.
- Décima regla de Greenspun
- Principio KISS
- Minimalismo en informática
- Ampliación de la misión
- Sobreingeniería
- Fluencia del alcance
- Efecto de segundo sistema
- Hinchazón de software
- Plug-in (informática)
- Filosofía Unix
- Ley de envoltura de software de Zawinski
Referencias
- ^ JM Sullivan (8-10 de junio de 2005). "Impedimentos e incentivos para la automatización en la Fuerza Aérea". Actas. 2005 Simposio internacional sobre tecnología y sociedad, 2005. Armas y cables: prevención y seguridad en tiempos de miedo. ISTAS 2005 . 2005 Simposio Internacional de Tecnología y Sociedad . págs. 101-110. doi : 10.1109 / ISTAS.2005.1452719 . ISBN 0-7803-9284-1. S2CID 21079766 .
- ^ Featuritis (o rasgos rastreros) .
- ^ "Los entresijos de los MVP: cómo evitar el arrastre de funciones en el desarrollo de su producto | Innovolo Ltd" . Consultado el 27 de abril de 2021 .
- ^ Davis, FD; Venkatesh, V. (febrero de 2004), "Hacia las pruebas de aceptación del usuario del preprototipo 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
- ^ Kenneth S. Norton (2001), Applying Cross-Functional Evolutionary Methodologies to Web Development , artículo en Web Engineering: Managing Diversity and Complexity of Web publicado por Springer, ISBN 3-540-42130-0
- ^ Double Fine divide Broken Age a la mitad para financiar la finalización , Por Kris Ligman, 2013-07-02, Gamasutra
- ^ alimentando el creaturismo , 2016-05-27, FOLDOC.org - El diccionario gratuito en línea de la informática
- ^ Raymond, Eric S .; et al. (29 de diciembre de 2003). "alimentando el creaturismo" . El archivo de jerga . Ver. 4.4.7 . Consultado el 20 de junio de 2017 .
- ^ Raymond, Eric S .; et al. (29 de diciembre de 2003). "criatura que se alimenta" . El archivo de jerga . Ver. 4.4.7 . Consultado el 20 de junio de 2017 .
- ^ Raymond, Eric S .; et al. (29 de diciembre de 2003). "feep" . El archivo de jerga . Ver. 4.4.7 . Consultado el 20 de junio de 2017 .
enlaces externos
- Creeping Featuritis , ContentCreationWiki (registrado a más tardar el 23 de octubre de 1995 ).