archivo

Archivo de la etiqueta: software inflado

Es un caso particular del antipatrón “software inflado“, en el que se invierte más esfuerzo del necesario en hacer los productos más robustos, seguros y complejos de lo que realmente necesitan.

Pero, ¿es malo que un software sea más robusto o más seguro? En absoluto, siempre y cuando no olvidemos cuáles son sus prioridades, es decir, si hacerlo más robusto o seguro de lo que necesita implica que tengamos que invertir esfuerzo en estas actividades y restarlo de la adecuada evolución del producto, no solo no estamos haciendo un uso eficiente del presupuesto, ya que lo invertimos en actividades que proporcionan menos valor, sino que además podemos poner en riesgo la propia línea de desarrollo del sistema, si es que nos quedamos sin dinero y no hemos cubierto las necesidades funcionales más prioritarias.

A lo anterior, hay que sumarle el riesgo de que se produzca un incremento de la complejidad del producto, ya que querer hacer el sistema más robusto o más seguro, no implica que se acierte con la estrategia, técnica o programación utilizada, lo que implica que aunque se consiga ese objetivo es posible que el producto sea más complicado de evolucionar (mayor deuda técnica) o que incluso se haya invertido un esfuerzo y que el sistema se haya quedado más o menos como estaba.

Otro aspecto que no hay que perder de vista, es que llega a un momento en el que no es posible mejorar la robustez, seguridad o complejidad del sistema, ya que lo que se termina mejorando en un punto, se termina estropeando en otro (ver Ley de Tesler).

El antipatrón software inflado hace referencia a múltiples circunstancias que se pueden producir en un proyecto de desarrollo de software, aquí os indico algunas de ellas:

– Desarrollar un software sin tener en cuenta una utilización adecuada de los recursos.

Es cierto que el precio de los recursos hardware y los avances tecnológicos dan mucho margen de maniobra, sin embargo esto no quita que el mantenimiento de un CPD sea caro, que en entornos de producción coexisten multitud de aplicaciones que comparten recursos y que un uso inadecuado de los mismos por parte de una puede provocar problemas de disponibilidad y/o rendimiento en las otras.

Por tanto, es un antipatrón desarrollar sin tener en cuenta que es necesario optimizar la utilización de recursos externos al sistema (incluyendo, también, ¿por qué no? recursos software).

Pero no todo es software y hardware. También están las personas y un software desarrollado con alta deuda técnica también se debe considerar un software inflado porque el coste de mantenimiento del mismo será muy importante en relación al costo del mismo. Además, hay que tener en cuenta que muy probablemente el software que presente este tipo de características, hará un uso no adecuado de los recursos hardware y software.

– Desarrollar un software con más funcionalidades de las precisas o con complejidad adicional que no resultaba necesaria. (Otros antipatrones asociados: Ancla de barco, lava seca, complejidad no indispensable y funcionalitis acechante).

Abandonar el objetivo de simplicidad en el desarrollo del producto software lleva a esto, a matar moscas a cañonazos o a desarrollar funcionalidades o módulos que no se van a utilizar o que van a tener un uso residual. Es cierto, que muchas veces, a priori, determinadas funcionalidades parecen ser necesarias y que es tras el uso del sistema por parte del usuario cuando se descartan, sin embargo, en lugar de eliminarlas del producto software aprovechando alguna de las evoluciones del sistema, se dejan en el sistema de información.