El desarrollo de un software o una aplicación puede generar la aparición de una serie de problemáticas e imprevistos que afecten a la propia evolución del proyecto y al resultado final. Para intentar evitarlo, o minimizar su posible impacto, es imprescindible llevar a cabo una serie de buenas prácticas. En este post expondremos algunas de las claves a tener en cuenta exclusivamente en la fase previa al inicio del proyecto.
Hemos de tener en cuenta una consideración inicial. Los rápidos avances tecnológicos y el surgimiento de nuevos modelos de negocio y de comercialización han impulsando la necesidad de nuevas soluciones personalizadas y/o la transformación digital de los sistemas existentes.
Por este motivo, es necesario encontrar un proveedor que sea capaz de desarrollar una aplicación funcional, flexible, escalable, personalizable y de calidad en un proceso que sea capaz de reducir el tiempo de comercialización.
Accensit puede ayudarle a desarrollar un software desde cero o a adaptar el que ya esté en uso a sus necesidades. Tanto sea el diseño e implementación de aplicaciones móviles mediante Android e IOS como aplicaciones web utilizando Single Page Applications, HTML 5.0, Web 2.0, Ajax, etc.
Para lograr este objetivo debe plantearse un desarrollo eficiente de estas aplicaciones. De esta manera será posible respetar los tiempos establecidos de implementación y comercialización de una aplicación. Cabe recordar que la tecnología es el medio y no la finalidad.
SPD, Proceso de Desarrollo Software
Podemos afirmar que el SDP (Proceso de Desarrollo de Software) contempla el qué, quién, cuándo y el cómo basándose en 4 fases fundamentales y generales a este tipo de proyectos:
- Especificación
- Desarrollo
- Validación
- Evolución
Los modelos genéricos del proceso de desarrollo de software son básicamente 3:
- Cascada (waterfall): Se definen las etapas de especificación, desarrollo, validación y evolución para, posteriormente, representarlas como fases separadas del proceso.
- Incremental: El objetivo es vincular las fases de especificación, desarrollo y validación mediante el desarrollo de una serie de versiones incrementables, con lo que cada nueva propuesta suma funcionalidades extra a la versión anterior.
- Ingeniería dirigida a la reutilización: Existe una amplia cantidad de elementos reutilizables y el objetivo es integrarlos en un sistema en vez de desarrollarlo desde cero.
Sin embargo, sea cual sea el método elegido, hay que tener en cuenta una serie de premisas claras:
- Saber cuáles son los requerimientos y necesidades reales del cliente. Para ello llevar a cabo un briefing exhaustivo y un intercambio de información lo más amplio posible es esencial. No han de quedarse en el tintero requisitos ocultos que el cliente no comentó, pero estaban implícitos.
- Una vez queda clara la problemática a la que dar respuesta debe evitarse un análisis erróneo o incompleto de estas necesidades que no tenga en cuenta toda la complejidad del proyecto. Por lo tanto es imprescindible definir bien las especificaciones, el diseño y las pruebas.
- Construcción evolutiva / Agile. El equipo de desarrolladores diseñan entregables que no son la solución completa, pero que el cliente va validando y junto a la empresa se va decidiendo si llevar a cabo o no ciertos requerimientos. Mediante la presentación de mockups y wireframes el cliente puede hacerse una idea real de la interface y de su funcionamiento antes de la fase final de programación.
- Diseño enfocado al MVP (Minimum Viable Product), es decir, al producto mínimo viable. La recomendación es orientar el desarrollo a lo esencial del diseño, aquello que aporta valor. Obtener la cantidad máxima de conocimiento validado sobre los clientes con el menor esfuerzo.
- Verificación del comportamiento correcto de la app.
De esta manera lograremos obtener una solución realmente idónea.
Generalizando, podríamos definir el ciclo de desarrollo de una aplicación en las siguientes fases:
- Definición del producto mínimo viable así como funcionalidades adicionales que se desean en el producto final.
- Desarrollo inicial (Waterfall) del producto mínimo viable que ofrecerá una base para el desarrollo de nuevas funcionalidades.
- Priorización y desarrollo Agile de las funcionalidades adicionales de acuerdo con una priorización marcada por el negocio así como mantenimiento evolutivo de la aplicación.
Problemáticas
Este planteamiento puede minimizar riesgos que tradicionalmente tenían como consecuencia el alargamiento de los plazos de entrega debido a factores como:
- La realidad del proyecto cambia durante la creación del producto
- El cliente aprende más de su realidad a medida que se va desarrollando el producto
- Establecer tiempos de implementación irreales
- Perfiles profesionales poco cualificados
Por este motivo es importante decidir la mejor estrategia en función de la tipología de aplicación, de empresa y de las necesidades a las que encontrar solución.
Una necesidad, una solución
Según sus requisitos, Accensit puede configurar un equipo de desarrollo dedicado que trabaje exclusivamente en los proyectos o un equipo de multidisciplinar compartido que puede ser altamente rentable para un presupuesto limitado.
Trabajando de una manera cercana y colaborativa con el cliente pueden crearse aplicaciones personalizadas a partir de una idea simple o, al contrario, rehacer una aplicación existente con características mejoradas para actualizar su diseño o funcionalidad.
Es importante poder beneficiarse del diseño, creación, implementación y mantenimiento de una aplicación como una solución llave en mano.
En el desarrollo de esta tipología de soluciones es necesario el trabajo y la coordinación de un equipo multidisciplinar formado por, entre otros, el diseñador (arquitecto), el implementador (programador), el definidor de funcionalidades (product owner) y el manager del proyecto.