Contexto
La boda de tu mejor amigo se acerca y deseas verte lo más elegante posible, así que decides ir a que te confeccionen un traje a la medida. El sastre te hará algunas preguntas sobre el tipo de evento al que irás, tomará algunas medidas y te mostrará algunas telas o modelos ya hechos para que puedas tomar una mejor decisión. Todo ello forma parte de la información que él recaba para producir una prenda de vestir que cumpla o exceda tus expectativas, de esa manera estará seguro que volverás en alguna otra ocasión y será una buena recomendación para tus amigos.
El proceso que lleva el sastre para confeccionar trajes a la medida es muy similar al de elaborar un software. Se requiere hacer ciertas preguntas para saber qué es lo que quiere el cliente, conocer sus preferencias, consultar algunos detalles que podrían ayudar a generar un producto satisfactorio.
El proyecto actual arrancó hace un mes. Sus ejecutivos de venta, gerentes, contadores y almacenistas han contestado una serie de cuestionarios y asistido a algunas reuniones propuestas por la empresa de software para recopilar información que sirve para el sistema.
El dueño del negocio se pregunta si el esfuerzo realizado por la empresa de software y de su equipo de trabajo ha sido adecuado para recabar las necesidades y requerimientos del sistema. A la vez se pregunta si habrán pasado por alto información importante que sea útil en resolver sus principales problemas.
¿Qué tipo de documento podría esperar el dueño del negocio para revisar si todos sus requerimientos están claros y completos? ¿Cuál será el alcance del proyecto?, ¿Podrán reutilizar el equipo y el sistema actual para realizar el desarrollo?
Explicación
13.1 Documento de requerimientos
En los temas anteriores has analizado algunos modelos y técnicas para detallar los requerimientos. El resultado de todo ese trabajo debe ser incluido en un documento al que se le llama especificación de requerimientos de software o SRS (Software Requirements Specifications) o simplemente documento de requerimientos.
Este documento contendrá todo el trabajo del análisis del sistema: los modelos, las descripciones de los requerimientos, reglas de negocio, prioridades del usuario. Más adelante podrás conocer un formato con las partes que lo componen.
El SRS constituye el alcance del proyecto y será la base de trabajo para las siguientes etapas del desarrollo. En algunos modelos ágiles, como el XP, el documento de especificaciones es sustituido por tarjetas que contienen escenarios del usuario, ya que permiten documentar especificaciones de una forma muy sencilla y rápida, evitando un documento formal que pudiera alargar el desarrollo y hacerse obsoleto por la rapidez que se necesita.
En opinión de Sommerville (2011) el documento de especificaciones es indispensable para proyectos de sistemas para negocios donde los requerimientos son inestables.
El documento de requerimientos debe ser escrito para un grupo muy diverso de usuarios, desde el dueño de la empresa que está aceptando financiar el proyecto, hasta los ingenieros responsables del desarrollo del sistema.
Usos del documento de requerimientos.
Fuente: Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson.
Dada la diversidad de usuarios, el lenguaje debe ser entendido tanto por el personal que no reconoce términos de software como por técnicos que esperan obtener todo el detalle posible. El ingeniero de requerimientos debe elegir el conjunto de modelos y técnicas de descripción más apropiados, sobre todo cuando el desarrollo será realizado por un tercero, ya que el mismo documento de requerimientos es parte del contrato del sistema por desarrollar.
Según la guía SWEBOK V3 (2014), la especificación de requerimientos de software permite lo siguiente:
13.2 Tipos de documentación
Haz clic en cada uno de los actores para revisar su descripción
13.3 Formato de especificaciones de requerimientos
Utilizar un formato de especificaciones de requerimiento permite establecer una estructura muy completa al proyecto de desarrollo; su contenido dependerá del tipo de software y su enfoque.
Cada equipo de ingeniería de software debe plantear los apartados necesarios antes de iniciar el proyecto. Por ejemplo, si se estima que el desarrollo equivale a 3 meses de trabajo y se utilizará un modelo ágil de desarrollo, generar un documento muy detallado sería una carga excesiva. En ese caso se podrían omitir ciertos apartados o bien sólo describir a grosso modo los requerimientos, esperando que en las siguientes iteraciones se describan con mayor detalle.
Por otro lado, cuando el software es parte de un proyecto que estima un mayor esfuerzo horas-hombre, el documento de especificaciones de requerimientos es fundamental, sobre todo cuando existe un proveedor que se hará cargo de todo el desarrollo.
A continuación, puedes ver las partes de un formato de especificaciones de requerimientos tomando en consideración la opinión de Pressman (2010), Sommerville (2011) y Wiegers (1999)
Haz clic en cada uno de los actores para revisar su descripción
Incluye el título “Especificaciones de requerimientos de software”, Nombre del sistema o proyecto, fecha de elaboración, la versión del documento, autor, nombre de la organización.
Se incluyen los títulos y subtítulos de todo el documento. Como recomendación, pueden utilizarse hipervínculos que lleven al lector directamente al apartado indicado.
Se incluye la siguiente tabla describiendo los cambios que ha sufrido el documento. Las modificaciones leves se indican en el decimal de la versión, por ejemplo, 1.1 a 1.2; mientras que nuevos requerimientos, eliminaciones o cambios fuertes al documento, provocan se indican en la versión, por ejemplo 2.0 a 3.0
Autor |
Fecha |
Razones del cambio |
Versión |
Persona responsable del cambio |
Fecha del cambio |
Descripción de los cambios realizados |
Versión del documento. |
Incluye la definición de los términos técnicos que contiene el documento.
Es una descripción breve de las funciones del sistema y la forma en la que cumple con los objetivos estratégicos de la organización que solicita el software.
1.1 Propósito: Se define la razón fundamental del documento, el objetivo y sus intenciones.
1.2 Convenciones del documento: Se describen los estándares de documentación, el método de priorización de requerimientos, y cualquier otra convención tipográfica utilizada.
1.3 Destinatarios y sugerencias de lectura: se listan las personas a las que está dirigido el documento: usuarios, programadores, arquitectos, u otros.
1.4 Alcance del producto. Se describe el marco de referencia en el que se desarrollará el sistema, así una breve descripción de los beneficios esperados y alineación con la estrategia del negocio.
1.5 Referencias: Cualquier documento que se deba tomar en cuenta para el trabajo de desarrollo: guías de estilo de interfaz, estándares, contratos, políticas, procesos. Es importante que se incluya la versión del documento y su ubicación.
2.1 Producto Perspectiva: Se describe si el producto de software tiene relación con algún software existente, o se trata de un producto nuevo, independiente.
2.2 Funciones del producto. Se hace una descripción general de los requerimientos funcionales y no funcionales del sistema, los detalles se añaden más adelante. Es posible, además de hacer una descripción en lenguaje natural, incluir diagramas y anotaciones que puedan ser útiles para comprender el requerimiento al cliente. En esta sección también se describen los estándares del producto y procedimientos a seguir.
2.3 Arquitectura del sistema: Incluye una arquitectura de alto nivel prevista para el sistema. Aquí es donde se pueden describir detalles de la arquitectura actual y cómo se espera que se integre una posible nueva arquitectura.
2.4 Diseño e implementación de restricciones: Se describen detalles que pudieran limitar las opciones del diseño o construcción del sistema como políticas corporativas de desarrollo de software, idioma, seguridad, protocolos de comunicación y uso de tecnología específica.
2.5 Documentación del usuario: Cualquier manual de usuario, tutorial, material de capacitación, información de sistemas existentes y estándares de documentación.
2.6 Supuestos y dependencias: Descripción de factores o hechos conocidos que podrían afectar el desarrollo del sistema. Por ejemplo una posible integración con otro sistema que se esté desarrollando en paralelo, infraestructura con capacidad suficiente o personal técnico capacitado.
3.1 Interfaces de usuario: algunas organizaciones tienen un estándar para las interfaces gráficas del usuario que deben considerarse para el desarrollo del nuevo sistema, por ejemplo, colores, íconos, botones y administración de ventanas.
3.2 Interfaces de hardware: En este caso se pudieran incluir características de las interfaces que deben existir entre componentes del hardware. Este apartado es muy importante ya que es posible que el cliente utilice equipo de arquitectura cerrada o poco común que trae consigo problemas de compatibilidad e interoperabilidad.
3.3 Software interfaces: Se describen posibles requerimientos de conexiones con productos de software existentes. Por ejemplo, una integración con un sistema de contabilidad o un sistema ERP.
3.4 Comunicaciones Interfaces: Se incluye la descripción de necesidades de comunicación, como el uso de correo electrónico, mensajes de notificaciones SMS, protocolos de intercambio de archivos (FTP) o cualquier necesidad de cifrado (SSH).
En este apartado se hace una descripción detallada de cada uno de los requerimientos
4.1. Requerimientos funcionales
4.2. Requerimientos no funcionales
Este apartado servirá para incluir cualquier modelo del sistema (basados en escenarios de clases, flujo de datos o comportamiento)
Se describe como se prevé que el sistema pueda irse adaptando a cambios en el hardware o nuevas necesidades del cliente.
Información detallada relacionada con la aplicación.
En el índice se incluyen los listados de los diagramas, funciones, figuras, tablas y otros elementos.
Observa que este formato establece claramente toda la información relevante para desarrollar un sistema. Su contenido permite que el usuario valide todos sus requerimientos y sea una guía para el resto del equipo de desarrollo.
Cierre
La empresa desarrolladora de software contratada por la agencia de autos para resolver algunos de sus principales problemas de operación ha generado el documento de especificaciones de requerimiento de software (ERS). En él se especifican todos los requerimientos del sistema en construcción sugeridos por el equipo de trabajo de la agencia. Será entregado por fases, reutilizará el hardware existente y sustituirá el sistema anterior a través de un proceso de migración de datos.
Al leer el documento, el dueño se siente más confiado al saber que la opinión de sus empleados ha sido tomada en cuenta. Reconoce que faltan algunos detalles que se pueden agregar para que el sistema pueda adaptarse mejor a los cambios que espera a corto y mediano plazo.
Por otro lado, la empresa desarrolladora basa sus estimaciones de costo y tiempo del proyecto a partir del documento de especificaciones. Calcula que la primera fase podrá ser entregada en corto tiempo y considera que los resultados finales esperados del software excederán las expectativas del cliente.
Como puedes ver, el documento de especificaciones ayuda tanto al cliente para validar sus requerimientos y el alcance del proyecto, como al equipo que desarrollará el software para saber las funciones que deberá construir y estimar el esfuerzo.
Checkpoint
Referencias
Glosario
Modelo ágil XP: es un modelo de desarrollo de software ágil, proviene de las palabras eXtreme Programming.
SWEBOK: Es el acrónimo de Software Engineering Body of Knowledge, un documento generado por la IEEE en el que expresa las mejores prácticas en cuanto a la ingeniería de Software. Este documento ha sido revisado por aproximadamente 150 personas de 33 países.