Software development specification

Es importante que su equipo de desarrollo de software disponga de toda la información posible sobre su futuro producto para poder ofrecer estimaciones precisas.

A veces, una característica que parece menor e insignificante puede tener un gran impacto en su presupuesto y en los plazos. Por eso es tan importante una especificación detallada para cualquier proyecto de desarrollo de software a medida.

¿Qué es una especificación?

Todo el mundo tiene que ocuparse de la planificación en algún momento de su vida: compras, viajes, eventos, renovaciones, etc. En la mayoría de los casos, pensamos primero en el “panorama general” -lo que queremos conseguir, cuánto nos costará- pero solemos pensar poco o nada en los detalles antes de lanzarnos a ello.

Para la mayoría de los asuntos cotidianos, esto no es un gran problema: basta con elegir entre las opciones que se le presenten (pollo o ternera, primera clase o vagón, primera fila o balcón, etc.)

A veces, sin embargo, se enfrenta a un escenario en el que sus opciones no están tan claras: necesita una solución a medida para sus necesidades específicas, y acudir sin una
visión clara de lo que quiere o necesita exactamente es una receta segura
receta segura para acabar con mucho retraso y por encima del presupuesto.

Esa visión, formalizada en un documento, es la especificación de su proyecto.

Ejemplos de vida

  1. Digamos que quiere crear una tienda online. Hasta ahora sólo tiene diseñada la página principal, pero le gustaría estimar cuánto le costaría desarrollar un sitio así.

    Todas las páginas que necesita son perfectamente estándar (categorías, búsqueda, carrito, etc.), la plantilla de diseño está completa… a primera vista, parece que sus desarrolladores deberían tener todo lo que necesitan saber para hacer una estimación, pero ¿qué aspecto tiene una página de productos? ¿Qué formato deben tener los resultados de la búsqueda?

    Si no proporciona las respuestas que sus desarrolladores necesitan para hacer una estimación precisa, podría llevarse una costosa sorpresa más adelante.

  2. O digamos que quiere crear una aplicación móvil para publicar fotos: cualquiera puede hacer una, ¿verdad? Pero hay una gran diferencia si quiere alojar las fotos en el teléfono del usuario o en un servidor en algún lugar.
  3. O digamos que ya tiene un sitio web o una aplicación que le gustaría retocar: añadir algunas funciones nuevas, actualizar la interfaz de usuario, etc. No se sorprenda cuando su nuevo equipo de desarrollo le pregunte qué tecnologías se han utilizado para desarrollarla, o le diga que necesita información de acceso. Si no tiene respuestas a estas preguntas, su proyecto simplemente no avanzará.
  4. O digamos que quiere una nueva aplicación similar a una ya existente. Podría esperar que fuera una simple cuestión de señalar ejemplos y decirle a su equipo de desarrollo “quiero algo como esto”, pero a estas alturas probablemente pueda adivinar que no será tan fácil. Tendrá que especificar qué es exactamente lo que hace que su aplicación sea diferente del resto, y esas diferencias tendrán un impacto en el presupuesto final, incluso si son tan pequeñas como una página adicional o un menú extra.
  5. O digamos que quiere algún tipo de integración con las redes sociales en su producto, como hacen muchas aplicaciones y sitios web hoy en día. Esto es algo que debe dejar absolutamente claro a sus desarrolladores por adelantado. Y si quiere la posibilidad de conectarse a través de Twitter o Facebook además de poder publicar en ellos, eso es otro elemento para el presupuesto.
Scheme
También es importante decidir el origen del contenido de su sitio web o aplicación.

Si quiere mostrar feeds, actualizaciones, gráficos, diagramas o mensajes en determinadas páginas o interfaces, sus desarrolladores deben saber de dónde deben proceder los datos mostrados o qué usuarios/administradores/etc. deben poder crearlos.

No es ningún secreto que los desarrolladores operan en un campo de juego completamente diferente cuando consideran los requisitos de los clientes. Cuando usted dice “quiero que mis usuarios puedan ponerse en contacto conmigo a través de mi sitio web”, ellos oyen “formulario de contacto, envío, servidor de correo, validación”

Para los que no son expertos en tecnología, suena casi como un idioma extranjero, ¿verdad? Por eso, en lugar de hablar con los desarrolladores directamente, normalmente se comunicará con ellos a través de los analistas de negocio y, sí, de su especificación. Piense en la especificación como una piedra Rosetta que permite a los desarrolladores y a los clientes entenderse.

Software development ideas

Por último, es importante que describa los casos de uso de su producto: quién lo utilizará, qué función tendrá para ellos, qué esperarán los usuarios de él, etc. Cuando su equipo de desarrollo tenga una imagen sólida de quién quiere que utilice su producto y por qué, será más probable que esté en la misma página que usted y menos probable que se desvíe de su visión.

Tipos de requisitos

Notas de reflexión

Se trata del borrador inicial de la especificación, normalmente en forma de breves notas y bocetos de la interfaz. Se trata de una descripción cruda y general de la idea en su forma más embrionaria, antes de que la mayoría de los detalles hayan empezado a cuajar.

Requisitos basados en ejemplos

Estos requisitos consisten en enlaces u otros ejemplos que muestran aplicaciones o productos similares al que quieren desarrollar.

Requisitos empresariales

Se trata de requisitos de alto nivel que describen el concepto y la finalidad de la aplicación, así como su funcionalidad general, sin entrar en detalles técnicos.

Requisitos funcionales

Se trata de requisitos técnicos de bajo nivel, el mínimo necesario para que los desarrolladores puedan hacer estimaciones y comenzar el desarrollo.

Casos de uso

Para entender mejor al futuro usuario de la aplicación, es fundamental que los desarrolladores y arquitectos conozcan los principales escenarios de uso de la aplicación realizados por diferentes tipos de usuarios. No hay reglas férreas sobre la cantidad de detalles que deben figurar en estos requisitos, pero cuanta más información se proporcione aquí, mejor será el producto final.

¿Por qué es tan importante?

Para calcular la cantidad de tiempo y dinero que se necesita para desarrollar un proyecto, hay que formalizar los requisitos, es decir, traducirlos en una especificación. Aunque este proceso es a menudo tedioso y requiere mucho tiempo, es vital para garantizar que la descripción de su proyecto -por muy abstracta que sea- se convierta en algo que su proveedor entienda y sea capaz de utilizar para desarrollar precisamente lo que usted desea sin errores ni falta de comunicación.

El primer paso para componer una especificación es determinar los componentes básicos de su proyecto para los que necesitará presupuestos. Por ejemplo, una lista típica de componentes para una tienda online tiene este aspecto:

  • Registro/inicio de sesión/cuenta de usuario;
  • Cesta de la compra;
  • Categorías de productos;
  • Página de productos;
  • Sistema(s) de pago;
  • Panel de administración.

El siguiente paso es describir los detalles de cada componente. Digamos que quiere que los nuevos usuarios reciban un código de cupón tras el registro, o elementos de animación en su lista de categorías: estas son cosas que deben figurar en su especificación. También es útil que proporcione wireframes (es decir, diseños de ejemplo) de las páginas de su sitio o de las pantallas de su aplicación para que los desarrolladores tengan una mejor idea de los elementos que desea y de cómo los quiere dispuestos.

Wireframe in software development specification / Redwerk's blog

Este es el aspecto de un wireframe.

Formalizar su concepto como una especificación le dará una visión más clara de lo que quiere. Dividir su proyecto en componentes le ayudará a comprender qué elementos necesita absolutamente en su primera versión y cuáles pueden esperar hasta más adelante. En muchos casos, simplemente tiene más sentido lanzarse sólo con la funcionalidad principal y añadir gradualmente características adicionales con el tiempo. Por ejemplo, podría lanzar su tienda en línea sin la función por la que los nuevos usuarios reciben cupones e introducirla unos meses más tarde como una bonificación para sus clientes. Esto le ayudará a hacer un mejor uso de su presupuesto y a mejorar la fidelidad de los clientes: ¡una situación en la que todos ganan, si es que hay alguna!

La especificación del desarrollo del software es fundamental para interactuar con su equipo de desarrollo y solucionar problemas. Si algo no se ha implementado en su producto, su especificación proporciona una prueba irrefutable.

Descripción no técnica

Describa el propósito del proyecto y quiénes deben ser sus usuarios finales. Además, describa en qué se diferencia su proyecto de otros similares, si es que los hay.

Componentes de terceros

Describa todos los componentes de terceros que desea integrar en su producto, por ejemplo, redes sociales, análisis de terceros, mapas, etc.

Diseño / Wireframe / Descripción de páginas/pantallas

Sus desarrolladores necesitarán descripciones claras de todos los componentes que formarán parte de su proyecto. Cuanta más información proporcione, más preciso será el presupuesto que reciba. Deberá proporcionar información sobre cada una de las interfaces que tendrá su producto. Si su producto tendrá varios formularios/páginas/pantallas del mismo tipo, no es necesario que los describa individualmente; basta con que indique cuántos debe haber. Las interfaces con una funcionalidad real (formularios, calculadoras, etc.) necesitan más detalles que los formularios con un mero contenido estático (por ejemplo, “Sobre nosotros”). También, además de los diseños y las descripciones, debe proporcionar una explicación de cómo deben interactuar los elementos entre sí: la “lógica empresarial” que hay detrás de su producto.

Tecnologías

Proporcione información al equipo de desarrollo sobre cualquier tecnología que prefiera utilizar (o evitar utilizar).

Descripción de los componentes existentes

Si tiene un producto existente que desea modificar de alguna manera (por ejemplo, reskinning, funcionalidad adicional, etc.), el equipo de desarrollo necesita toda la información que pueda proporcionar sobre él: tecnologías, documentación, código fuente, todo.

Preguntas y respuestas rápidas

¿Por qué necesito proporcionar una especificación?

Cuanto más detalles proporcione sobre su proyecto, menos probable será que su equipo de desarrollo subestime o sobreestime algo en su presupuesto. Todo lo que no esté claro en su especificación es algo en lo que puede tener que perder tiempo y dinero más tarde, ya sea para aclarar lo que quería o para solucionar problemas que no eran obvios al principio. Tener unos requisitos claros desde el principio le permitirá dedicar más tiempo y presupuesto a su proyecto y menos a martillear los detalles. Sin embargo, si no tiene muchos conocimientos de tecnología o quiere la opinión de un experto, puede que tenga que gastar más en un consultor informático para asegurarse de que sus requisitos no sólo son claros, sino también razonables.

¿Pero qué pasa si aún no conozco todos los detalles?

No hay problema Sólo tiene que proporcionar a su proveedor todo lo que tenga sobre los requisitos. Los analistas empresariales pueden ocuparse incluso de los requisitos mínimos, y los consultores le harán todas las preguntas necesarias para rellenar las lagunas. Cuantos menos detalles tenga para empezar, más largo será el proceso, pero el resultado final será el mismo: una estimación detallada con un presupuesto y un calendario claros. Por otro lado, si su proyecto es bastante grande y el tiempo es escaso, es posible contratar a un equipo que pueda empezar a trabajar con unos requisitos mínimos.

¿Por qué no hacer un proyecto sin especificaciones?

Si comienza el desarrollo con sólo un esbozo general de su producto y sin aclarar los detalles, lo más probable es que el producto final se parezca poco a su concepto: su equipo de desarrollo no puede leer su mente; sólo puede seguir lo que usted pone en la especificación, y todo lo que no ponga en la especificación es juego limpio para que ellos lo interpreten a su manera. Y lo que es peor, no podrá demostrar que no desarrollaron la aplicación que usted quería porque nunca escribió sus requisitos en detalle.

¿Qué es lo mínimo que debe incluir mi especificación?

Como mínimo, su especificación debe incluir requisitos de bajo nivel para su producto, como por ejemplo

  • Descripciones/diseños de todos los formularios/páginas/pantallas;
  • Servicios/bibliotecas de terceros preferidos/requeridos (por ejemplo, REST, Google Apps, PayPal, etc.);
  • Descripciones detalladas de toda la lógica empresarial: fórmulas, diagramas, funcionalidad, etc.

(Tenga en cuenta que la “lógica empresarial” no tiene que ver necesariamente con el “negocio”; las condiciones de victoria de un juego, por ejemplo, cuentan como parte de su “lógica empresarial”)

Nuestra experiencia

EL PROCESO
Entendemos lo importante que es contar con una especificación detallada, pero también comprendemos que no siempre es fácil para nuestros clientes realizar dicha especificación por sí mismos. Por eso contamos con especialistas en nuestra empresa que destacan en la elaboración de especificaciones. Estaremos encantados de ayudarle a formalizar su proyecto y a elaborar la documentación adecuada. Nos tomamos la especificación muy en serio para asegurarnos de que nuestros clientes obtengan siempre el presupuesto más preciso posible.
Redwerk team
Podemos trabajar con varios tipos de requisitos:

  • Notas de reflexión;
  • Requisitos basados en ejemplos;
  • Requisitos empresariales;
  • Requisitos funcionales;
  • Casos de uso.

Si a los requisitos les falta alguna información, enviaremos al cliente una lista de preguntas aclaratorias. Intentamos que no falte nada importante, pero también sabemos que nadie quiere tener que digerir 60 páginas de descripción técnica, especialmente en la fase inicial de la planificación del proyecto. Por eso intentamos que las especificaciones sean breves y estén escritas en un lenguaje no técnico fácil de entender. También enviamos todas las especificaciones al cliente para que las apruebe antes de empezar a trabajar.

Pero eso no quiere decir que evitemos por completo las discusiones técnicas: también podemos ofrecer a los clientes propuestas sobre la forma óptima de implementar ciertas características o recomendar tecnologías a utilizar.

El proceso suele ser así:

  • El cliente nos proporciona toda la información sobre el proyecto;
  • Hacemos preguntas sobre las características y los componentes que podrían afectar al presupuesto;
  • Si no se proporciona ninguna especificación, redactamos una con la aprobación del cliente;
  • Proporcionamos el presupuesto final.

Póngase en contacto

¿Necesita ayuda con los requisitos y la especificación del producto? Los analistas de negocio de Redwerk tienen mucha experiencia en este campo para todo tipo de proyectos, y siempre nos aseguramos de que la especificación de su producto es exactamente lo que usted quiere construir.
Póngase en contacto con nosotros ahora para un análisis gratuito de los requisitos

Proyectos que hemos realizado

Escuche a nuestro cliente

“Cuando necesitábamos acceder a una pieza de hardware con un protocolo no documentado, acudimos a Redwerk y lo hicieron. Cuando necesitábamos una aplicación web masivamente concurrente, acudimos de nuevo a Redwerk y lo hicieron. Cuando necesitábamos un conocimiento profundo de diferentes sistemas operativos, acudimos a Redwerk y lo volvieron a hacer. Eso es tranquilizador. ¿A quién cree que acudiremos con nuestro próximo proyecto desafiante?” — Darius Popa, propietario de DigitAIR

Acerca de Redwerk

Redwerk es una empresa de desarrollo de productos de software en el extranjero con una imponente experiencia en la prestación de servicios de desarrollo de software subcontratado en todo el mundo para las empresas de diversos sectores y tamaños, como Startups & Innovation, E-government, Business Automation, Healthcare, E-commerce, Media & Entertainment, Data Mining, Game Development. El equipo de desarrolladores dedicados a la subcontratación ofrece una gama completa de servicios de desarrollo de aplicaciones web, móviles y de escritorio, así como de revisión de código. Redwerk alberga a expertos con experiencia práctica real en el desarrollo de productos, el diseño UI/UX, los servicios de garantía de calidad y el mantenimiento de software, lo que garantiza una calidad absoluta del resultado.