sábado, 10 de diciembre de 2011

El retorno de los productos software?

La situación económica actual está cambiando el mundo tal y como lo conocíamos, y el sector TIC no es una excepción. 

De manera análoga a la financiación económica, en los últimos años, el software ha vivido una etapa de barra libre, dónde se podía pedir lo que se deseaba, tantas veces como se quería. 

Actualmente, la financiación es un bien escaso. Si seguimos con la analogía inicial... el software también?
Es evidente que el sector de la ingeniería del software no volverá a ser lo que era hasta dentro de muchos años. Se acabaron los productos software a medida, dónde toda petición es atendida, a gusto del consumidor. Pocos serán los clientes que puedan permitirse ese lujo.


Por otro lado, todos estamos de acuerdo en que el software es algo esencial hoy en día. El software está en todos sitios. Sin el software, prácticamente nada funcionaría. El mundo quedaría paralizado. En definitiva, el software es esencial, pero el desarrollo de software no puede ser tan costoso. Qué solución se le puede dar?

La solución fácil y rápida (la typical spanish) a este problema es reducir costes de personal creando software factories en países dónde se cobre menos. Bien, esa es una solución a corto plazo (a cambio de una pérdida de calidad), aunque tarde o temprano el problema de los costes volverá a aparecer (lo normal sería que los sueldos en esos países vayan evolucionando). Lo que se conoce como una patada hacia delante (post-poner la solución al problema). Por otro lado, existen propuestas de futuro para esta problemática, soluciones innovadoras.

En primer lugar, una posible solución es desarollar productos mediante iteraciones, y cuya venta se realice bajo el sistema de implantación parametrizada. Este tipo de productos suelen denominarse Enterprise Resource Planning o ERPs. Este mecanismo permite explotar la inversión del desarrollo de un producto mediante diversas instalaciones en clientes distintos. Desde un punto de vista técnico, esto obliga a que los productos sean fácilmente integrables con otros sistemas, así como que estén dotados de un sistema de parametrización flexible, de manera que las necesidades particulares de cada cliente queden totalmente cubiertas. Uno de los principales riesgos de este tipo de productos es que deben ser atractivos para los clientes potenciales a los que implantarlo y, por tanto, deben ofrecer mucha funcionalidad, ser robustos, fácilmente ampliables y parametrizables. Este tipo de productos suelen estar orientados a clientes de un mismo sector económico, por lo que deberán tener mucha operativa común. 


Otro mecanismo para proporcionar productos software a bajo coste es el software como servicio (Software as a Service, o SaaS), que permite a los usuarios pagar por el uso del producto software (mediante cuotas, a modo de alquiler) sin ser los propietarios del mismo. Uno de los principales handicaps de este tipo de software es que es el mismo para todos los usuarios (salvo la parametrización que se pueda realizar para cada cliente). Los datos, normalmente, estarán alojados en los servidores del proveedor y las adaptaciones sobre el producto serán mínimas, dado que deben ser aplicables a todos los usuarios del mismo. A cambio, los usuarios ganan flexibilidad en su uso, y no deben preocuparse del mantenimiento ni ampliación de la aplicación. Por su naturaleza, los productos software ofrecidos como servicio suelen proporcionar funcionalidades básicas de gestión, y es por eso que están muy orientados al público en general, o como soporte a empresas para tareas de gestión básicas. Desarrollar este tipo de software requiere de una inversión de alto riesgo (por su orientación a funcionalidades genéricas). La promoción y marketing es esencial para el éxito en la explotación de un producto software como servicio. 


Finalmente, existe otro mecanismo de desarrollo de productos software que permite reducir los costes de producción del mismo: el desarrollo dirigido por modelo (Model Driven Development). Esta metodología en la ingeniería del software permite automatizar gran parte del proceso de desarrollo de software, usando como input un modelo del sistema, y generando como output la aplicación software con su funcionalidad parcialmente desarrollada. Sin entrar en demasiado detalle sobre esta metodología (hablaré sobre este tema en futuras entradas), lo que permite este mecanismo es industrializar parcialmente el desarrollo del software, evitando que el proceso sea totalmente artesanal e incrementando notablemente la productividad. Creo que el índice de Pareto puede ser idóneo para esta metodología (generar el 80% de la aplicación automáticamente y realizar de forma artesanal el 20% restante, aproximadamente). El principal handicap de esta estrategia para desarrollar productos software es que requiere una fuerte inversión inicial para obtener un generador (aunque con la regla de 20/80 se puede simplificar mucho y se puede obtener un equilibrio productivo entre artesanal/generado). El software generado mediante esta metodología puede ser a medida, implantable, como servicio... en general, se puede obtener cualquier tipo de software de gestión, de una forma mucho más eficiente y gracias a una inversión previa en innovación. 


En definitiva, la etapa actual en la ingeniería del software requiere de un gran esfuerzo para reducir costes de desarrollo, pero ese esfuerzo es necesario para garantizar que el software es de calidad, que sigue facilitándonos la vida, que es capaz de agilizar procesos, de aumentar la productividad de las empresas y de mejorar la competitividad de las mismas. A pesar de ese esfuerzo por reducir costes, los consumidores del software también deberán adaptarse a esta nueva etapa, en la que es mejor aceptar un producto que funciona, es útil y no es caro, que no malgastar una gran cantidad de recursos (escasos actualmente) en desarrollar productos a medida.