La claridad en la definición y comprensión de lo que tus clientes esperan es la base de la calidad de tus soluciones de software. Especificar y validar estos requisitos permitirá a tu equipo ser más creativo y productivo, a la vez que facilita la gestión del proyecto.
En este artículo, veremos cómo deben ser estos requisitos para elaborar el documento que los recopile.
El desarrollo de software sigue siendo una actividad con gran componente artesanal, científico y comunicativo.
Es artesanal porque una parte importante se hace manualmente, una gran cantidad de las instrucciones de código se realizan letra a letra por parte del programador, si bien es cierto que los compiladores hacen una parte del trabajo, la más importante la realiza el programador, me refiero a la parte funcional de acuerdo con los requerimientos del cliente.
Es científica porque requiere de conocimientos técnicos acerca de cómo funciona el hardware sobre el que funcionará el producto desarrollado, ya sea un servidor, un móvil, una computadora o una red de comunicaciones.
Pero, también tiene un componente comunicativo porque el producto final dependerá mucho de la capacidad que tenga el usuario de definir adecuadamente sus necesidades y esto generalmente no sucede.
Lo más común es que el usuario perfile una aplicación, primero desde el punto de vista funcional y segundo con algunos requerimientos de diseño gráfico. Características como la seguridad y funcionalidad operativa consistente en que el producto desarrollado cuente con suficientes mensajes de alerta para indicar al usuario cuando se ha ingresado un dato con formato incorrecto o se ha realizado una violación a alguna regla operativa, que son importantísimas en cualquier software, tienden a ser omitidas por el usuario.
Además, generalmente las empresas no cuentan con un "dueño de producto" (product owner), es decir una persona experta en la solución buscada que conozca completamente las políticas, restricciones operativas y necesidades que debe cubrir el software, deja muchas de estas responsabilidades al grupo de desarrollo, que finalmente es el que menos conoce de estos aspectos del producto que se le ha solicitado desarrollar.
Esto finalmente genera dificultades, contratiempos y mutuos reclamos entre el grupo de desarrollo y los usuarios del software, provocando que la mayoría de los proyectos sean un continuo y constante flujo de quejas y descalificaciones entre los miembros del grupo de trabajo del proyecto.
De ahí que a nivel global solamente el 20% de los proyectos de software sean exitosos, es decir que terminan a tiempo, en costos y con la funcionalidad aceptada por el cliente, el 68% restante tienen desviaciones en alguno de los aspectos mencionados y el 12% son fracasos (es decir son abandonados) y como ya lo vimos en una entrada anterior a nuestro blog (Aspectos de la Calidad en el Desarrollo de Software) eso representa pérdidas de 300,000 millones de dólares.
La Especificación de Requisitos de Software (ERS o SRS por las siglas en inglés de Software Requirements Specification) es el documento que describe los requisitos de un sistema de software a desarrollar en 3 niveles:
Al combinar las especificaciones de los tres niveles, se otorga a todas las partes interesadas una comprensión clara del proyecto y los entregables medibles, por eso este documento debe ser accesible para todos ellos: inversores, administrador de proyectos, programadores, diseñadores, etc.
Esto es especialmente importante si se está subcontratando el proyecto; un documento completo de SRS permite que una agencia de subcontratación comunique los requisitos de su proyecto de manera clara y precisa a su propio equipo.
Con la siguiente tabla obtendrás una idea más detallada de cómo un SRS mejora la comunicación y la colaboración entre las partes:
Miembro del grupo de trabajo | Actividad |
Desarrollador de software | Deben utilizar el SRS para estimar con precisión el alcance del proyecto. |
Gerente de proyecto | Deben utilizar el SRS para planificar el trabajo. |
Diseñador | Con base en el SRS, deben poder interpretar y definir las características visuales del proyecto. |
Probador (tester) | Con base en el SRS deben tener la capacidad de planear los Casos de Prueba necesarios. |
Usuarios y dueño del producto | Utilizan el SRS para validar al grupo de desarrollo que ha comprendido completamente desde el punto de vista funcional y operativo los requerimientos solicitados. |
Hay muchas historias de terror sobre desarrolladores de software y clientes que chocan con los requisitos del proyecto, y una de las causas más comunes de tales disputas es el lenguaje ambiguo.
Términos vagos como "urgente", "pendiente", "lo antes posible", etc., pueden significar algo diferente para el cliente y para la empresa de desarrollo o entre el usuario y el grupo de desarrollo.
O, quizás, las partes involucradas tienen una impresión diferente de las funcionalidades prioritarias del producto. No es culpa de ninguna de las partes, per se, sólo están hablando idiomas diferentes, en cierto sentido.
El cliente tiene una idea del producto, sus funciones y el aspecto que podría tener la interfaz de usuario. Pero los desarrolladores generalmente están pensando en el "detrás de escena" del proyecto, cómo escribir un código escalable y legible, garantizar la seguridad, hacer que una solución funcione, minimizar errores, etc.
Cuando hay una desconexión entre ambos puntos de vista, puede generar trabajo adicional, dinero desperdiciado, estrés e incluso un producto final deficiente. Pero, afortunadamente, hay una manera de evitar tales malentendidos desde el principio: las especificaciones de los requisitos del software.
Para que un SRS sea útil para todas las partes involucradas, debe tener los siguientes elementos o secciones básicos:
Es importante aclarar que cuando se habla de grupo de trabajo se está incluyendo al usuario o al dueño del producto y no solamente hablo del grupo de técnico, por lo tanto, un buen documento SRS debe cumplir con las siguientes características:
Ya que has visto todo lo que comprende un documento SRS para lograr un exitoso proyecto de software casi te aseguro (no conozco tu realidad para asegurártelo al 100%), que han sido muy pocas las ocasiones en que has desarrollado un SRS completo.
Es muy probable que la mayoría de tus proyectos de software hayan sido una constante de malentendidos entre el usuario y el grupo técnico de desarrollo, retrasos debidos a retrabajos y una infinidad de reuniones de trabajo para aclaraciones y dudas, para que finalmente los proyectos casi siempre sean entregados con algún retraso, ya sea significativo o aceptable.
Estas experiencias, que claramente no son placenteras, se deben a que no se realiza un documento de proyecto o SRS como debe ser.
Intenta con persistencia desarrollar tus SRS como te lo he descrito, no omitas nada y te aseguro que el resultado y la experiencia de tu próximo proyecto de software, si bien no será tejer y cantar sí será un proyecto con una sensación de productividad y eficiencia que pocas veces has experimentado.
¡Inténtalo! ¡Persiste hasta lograrlo!