Cómo escribir un documento de requerimientos de Software para desarrollar una aplicación

En 1994, Intel enfrentó un problema de reputación cuando se descubrió un error en su procesador Pentium, les costo $475 MILLONES de dólares reemplazar todos los procesadores defectuosos. El error fue originado debido a un problema en la especificación de los requisitos de software. Intel podría haberse ahorrando millones de dólares si especificaba bien desde el principio.

Hojas que deben incluirse en la especificación de requerimientos de software

 

La documentación de requisitos de software es fundamental ya que, permite que los desarrolladores entiendan las necesidades y requerimientos de los usuarios para así poder crear una aplicación que satisfaga todas sus necesidades.

En este artículo, te mostraré cómo escribir un documento de requerimientos de software para desarrollar una aplicación, incluyendo consideraciones importantes aprendidas en mi experiencia construyendo productos los últimos 10 años. Además incluiré algunas herramientas útiles, para hacerte la vida más fácil.

I. Quién debe crear la hoja de especificación de requerimientos de software

La hoja de especificación de requerimientos de software debe ser creada por un equipo que incluya al propietario del producto, al analista de negocios, al arquitecto de soluciones y al equipo de desarrollo. Cada uno de estos miembros del equipo aportará perspectivas y conocimientos únicos que ayudarán a garantizar que la especificación de requerimientos sea completa y precisa.

II. Qué incluir en la hoja de especificación de requerimientos de software

La hoja de especificación de requerimientos de software debe incluir varios componentes clave. A continuación, se detallan los componentes principales que se deben incluir en la especificación:

Requerimientos funcionales

Los requerimientos funcionales describen las acciones que la aplicación debe realizar, es decir describen las características básicas sobre qué es lo que debe ser capaz de hacer tu aplicación. Para escribirlos, se deben utilizar declaraciones claras y concisas. Especificar el comportamiento en diferentes escenarios del “User Journey” por ejemplo:

Ejemplos de requerimientos funcionales
Ejemplos de requerimientos funcionales

Requerimientos no funcionales

Los requerimientos no funcionales describen cómo deben realizarse las tareas que tu sistema será capaz de hacer. Algunos ejemplos de requerimientos no funcionales pueden ser:

  • La aplicación debe ser compatible con los navegadores web más populares (Chrome, Firefox, Safari, etc.).
  • El tiempo de carga de la página no debe exceder los 3 segundos.
  • La aplicación debe ser fácil de usar para personas con discapacidades visuales.

Especificación de producto

La especificación de producto describe los componentes y características del producto, incluyendo la arquitectura, la plataforma y los requisitos de rendimiento. La especificación de producto también puede incluir detalles sobre los aspectos técnicos de la aplicación, cómo los lenguajes de programación utilizados y las herramientas utilizadas para el desarrollo.

diagrama de arquitectura de software

Requerimientos de usuario

Normalmente las empresas recopilan requerimientos de los usuarios finales, para recopilar estas especificaciones se hace en un proceso previo de validación y UX Research. Luego, en este apartado se describen las expectativas de los usuarios, es decir cómo esperan que la aplicación funcione y las características más importantes para ellos.

Si quieres tener una idea de cómo hacer UX Research puedes leer:

https://www.linkedin.com/pulse/los-beb%C3%A9s-entienden-el-concepto-de-gravedad-c%C3%B3mo-aplicar-puente

De forma parecida a los requerimientos de diseño, se puede incluir en esta sección características particulares como requisitos de accesibilidad. Por ejemplo, la especificación de que la aplicación será usada es para no videntes.

Requerimientos de sistema

Los requerimientos de sistema se refieren a los requisitos técnicos del sistema en el que se ejecutará la aplicación, como el hardware y el software necesarios para que la aplicación funcione correctamente. Estos requisitos pueden incluir detalles del sistema operativo, las integraciones que deben implementarse, etc.

Especificaciones de diseño

En esta sección se especifica la forma en que se diseñará la aplicación en cuanto a su arquitectura, además de las consideraciones adicionales como usabilidad, copy, flujos, dispositivos para los cuales se optimizará y otros, esto permite tomar decisiones en cuanto al diseño del producto según los lineamientos de la empresa y de marca en el caso de las interfaces de usuario.

Ejemplo de interfaz de usuario
Ejemplo de interfaz de usuario

Algunos ejemplos de detalles de especificaciones de diseño de software son:

  • La interfaz de usuario debe ser intuitiva y fácil de usar, además de que el diseño debe utilizar nuestros colores corporativos, el tono del copy debe de ser serio y orientado a la venta B2B.
  • La aplicación debe ser compatible con dispositivos móviles y de escritorio.
  • Se espera ampliar la funcionalidad de la aplicación por los siguientes 5 años, añadiendo features nuevos cada trimestre, por lo que se necesita una arquitectura robusta, flexible y escalable.

Timeline y backlog esperado

En esta sección se describe el cronograma de desarrollo del proyecto y los hitos importantes que se deben alcanzar. También se incluyen los elementos del backlog que se esperan completar durante cada etapa del proyecto.

Como se ve un timeline
Timeline

Viabilidad y factibilidad

Esta sección se agrega por el equipo técnico después de leer las especificaciones preparadas por el cliente. Se analizan los tiempos y costos considerando las expectativas del cliente. En el análisis se incluyen los desafíos técnicos, comerciales y legales, esto permite entender los problema y los caminos alternativos para entregar el proyecto con éxito.

Detalle de presupuesto y forma de pago

Por último, se especifican los detalles del presupuesto para el proyecto, incluyendo los costos estimados de desarrollo y los costos de cualquier herramienta o tecnología adicional necesaria para la creación de la aplicación. También se incluyen los términos de pago y cualquier otra información financiera importante.

III. Herramientas para crear una hoja de requerimientos de software

Para crear una hoja de requerimientos de software se pueden utilizar diversas herramientas. Algunas de las herramientas más populares incluyen:

  • Microsoft Excel: Es una herramienta muy útil para la creación de hojas de cálculo y puede ser utilizada para la creación de una hoja de requerimientos de software.
  • Google Sheets: Es una herramienta en línea que permite la creación y colaboración en hojas de cálculo. Es una buena opción para equipos distribuidos geográficamente.
  • Jira: Es una herramienta de gestión de proyectos ágil que se puede utilizar para crear y gestionar historias de usuarios y requerimientos de software.
  • Trello: Es una herramienta de gestión de proyectos basada en tableros visuales que puede ser utilizada para la gestión de requerimientos de software.

IV. Cuatro historias y casi $800 millones perdidos, el costo de no especificar requerimientos

Nasa pierde cohete por especificar kilometros en vez de millas
Captura de uno de los titulares que se mostraron en prensa a causa del error en las especificaciones técnicas.
  1. Mars Climate Orbiter: En 1999, la NASA perdió un satélite de USD 327.6 millones debido a un error en la especificación de los requisitos de software. Los ingenieros que trabajaron en el proyecto utilizaron unidades métricas, mientras que los equipos de seguimiento de la misión utilizaron unidades imperial es, lo que provocó que el satélite se quemara en la atmósfera.
No hay texto alternativo para esta imagen
Source: Slideplayer.com

2. Knight Capital Group: En 2012, esta firma perdió $10 MILLONES de USD por minuto. Perdiendo en total alrededor de $440 millones de dólares, debido a un error en su software de negociación. El problema fue que un programador no eliminó completamente una función obsoleta al actualizar el software, lo que provocó que se generaran miles de órdenes de compra y venta no deseadas.

Fallas en las pruebas

  1. BitPay: En 2017, la empresa de pagos con criptomonedas BitPay no consideró una brecha de seguridad que permitió que los atacara para robar más de $1.8 millones de dólares en bitcoin. El problema se originó debido a una vulnerabilidad en el software de la empresa, que permitió a los hackers acceder a las claves privadas de las cuentas de los usuarios.
  2. Therac-25: En la década de 1980, la empresa canadiense AECL desarrolló el equipo de radioterapia Therac-25 para tratar el cáncer. Sin embargo, el dispositivo tuvo graves problemas de seguridad que provocaron la muerte de varios pacientes. El problema fue debió a errores en el diseño y la implementación del software de control del dispositivo, que tuvo como resultado que se emitieran dosis letales de radiación.

V. Libros recomendados

Para profundizar en el tema de análisis y especificación de requerimientos, te recomiendo los siguientes libros:

  • “Software Requirements”, de Karl Wiegers y Joy Beatty
  • “Mastering the Requirements Process”, de Suzanne Robertson y James Robertson
  • “Writing Effective Use Cases”, de Alistair Cockburn

VI. Mejores prácticas

Para asegurar que la hoja de especificación de requerimientos de software sea eficaz, se recomienda seguir las siguientes prácticas:

  • Recolectar información y validarla con usuarios reales antes de pensar en crear código. En este artículo hablo como hacer esto con UX Research, incluye entrevistas con stakeholders y un análisis comercial de tu producto.
  • Comunica clara y constantemente tus prioridades al equipo de desarrollo, si el equipo es in house porfa usa una metodología ágil y una herramienta para seguir y administrar el proceso.
  • El lenguaje para escribir la especificación de requerimientos debe ser claro y conciso.
  • Prioriza los requerimientos de acuerdo a su importancia y factibilidad.

VII. Conclusiones

En resumen, el análisis y especificación de requisitos es un paso crucial en el desarrollo de software, puede ayudarte a ahorrar dinero, limitar los alcances de tu proyecto, entender lo tiempos de desarrollo y optimizar los procesos para construir una aplicación.

Un punto clave es asegurarte de que todo el equipo comprenda los requisitos de los usuarios, las especificaciones del producto, las limitaciones técnicas y de presupuesto. Esto permitirá que tu equipo técnico pueda diseñar una estrategia que le permita lograr los objetivos y adaptarse de ser necesario.

No construyas sin validar.

Construir software es caro en el corto plazo, pero puede hacer que pierdas muchísimo dinero si antes no validaste la aceptación del mercado, así como la tecnología es capaz de acelerar el crecimiento, mal pensada y mal estructurada puede llevarte a la quiebra.

En conclusión, el proceso de análisis y especificación de requisitos es un paso crítico y debe ser realizado con cuidado. Si se toman en cuenta todos los factores y se realiza de manera adecuada, puede garantizar un proyecto exitoso y una aplicación de software bien diseñada y satisfactoria para el cliente.

Leave a Reply

Your email address will not be published. Required fields are marked *