Requerimientos: Los requerimientos especifican qué es lo que el sistema debe hacer (sus
funciones) y sus propiedades esenciales y deseables. La captura de los requerimientos tiene
como objetivo principal la comprensión de lo que los clientes y los usuarios esperan que
haga el sistema. Los requerimientos identifican el qué del sistema,
mientras que el diseño establece el cómo del sistema.
La captura y el análisis de los requerimientos del sistema es una de las fases más importantes para que el proyecto tenga éxito. Como regla de modo empírico, el costo de reparar un error se incrementa en un factor de diez de una fase de desarrollo a la siguiente, por lo tanto la preparación de una especificación adecuada de requerimientos reduce los costos y el riesgo general asociado con el desarrollo [Norris & Rigby, 1994].
Análisis de requerimientos: Es el conjunto de técnicas y procedimientos que nos permiten
conocer los elementos necesarios para definir un proyecto de software. Es una tarea de
ingeniería del software que permite especificar las características operacionales del
software, indicar la interfaz del software con otros elementos del sistema y establecer las
restricciones que debe cumplir el software.
La especificación de requerimientos suministra al técnico y al cliente, los medios para
valorar el cumplimiento de resultados, procedimientos y datos, una vez que se haya
construido.
La tarea de análisis de los requerimientos es un proceso de descubrimiento y refinamiento, el cliente intenta plantear un sistema que en muchas ocasiones es confuso para él.
El objetivo es que el desarrollador actúe como un
negociador, un interrogador, un consultor, o sea, como persona que consulta y propone para
resolver las necesidades del cliente.
El análisis de requerimientos proporciona una vía para que los clientes y lo
desarrolladores lleguen a un acuerdo sobre lo que debe hacer el sistema.
Según el estándar internacional de Especificación de Requerimientos IEEE830, los
documentos de definición y especificación de requerimientos deben contemplar los
siguientes aspectos resumidos por [Pfleeger, 2002] como se indica a continuación:
Ambiente físico - ¿Dónde esta el equipo que el sistema necesita para funcionar?
- ¿Existe una localización o varias?
- ¿Hay restricciones ambientales como temperatura, humedad o interferencia
magnética?
Interfaces
- ¿La entrada proviene de uno o más sistemas?
- ¿La salida va a uno o más sistemas?
- ¿Existe una manera preestablecida en que deben formatearse los datos?
Usuarios y factores humanos
- ¿Quien usará el sistema?
- ¿Habrá varios tipos de usuario?
- ¿Cuál es el nivel de habilidad de cada tipo de usuario?
- ¿Qué clase de entrenamiento requerirá cada tipo de usuario?
- ¿Cuán fácil le será al usuario comprender y utilizar el sistema?
- ¿Cuán difícil le resultará al usuario hacer uso indebido del sistema?
Funcionalidad
- ¿Qué hará el sistema?
- ¿Cuándo lo hará?
- ¿Existen varios modos de operación? - ¿Cómo y cuando puede cambiarse o mejorarse un sistema?- ¿Existen restricciones de la velocidad de ejecución, tiempo de respuesta o
rendimiento? Documentación
- ¿Cuánta documentación se requiere?
- ¿Debe estar en línea, en papel o en ambos?- ¿A que audiencia está orientado cada tipo de información?
Datos - ¿Cuál será el formato de los datos, tanto para la entrada como para la salida?
- ¿Cuán a menudo serán recibidos o enviados? - ¿Con qué grado de precisión deben hacerse los cálculos?
- ¿Cuántos datos fluyen a través del sistema?- ¿Debe retenerse algún dato por algún período de tiempo? Recursos
- ¿Qué recursos materiales, personales o de otro tipo se requieren?
- ¿Qué habilidades deben tener los desarrolladores?
- ¿Cuáles son los requerimientos de energía, calefacción o acondicionamiento de
aire?
- ¿Existe un cronograma prescrito para el desarrollo?
- ¿Existe un límite sobre la cantidad de dinero a gastar en el desarrollo o en
hardware y software?
Seguridad
- ¿Debe controlarse el acceso al sistema o a la información?
- ¿Cómo se podrán aislar los datos de un usuario de los de otros?
- ¿Cómo podrán aislarse los programas de usuario de los otros programas y del
sistema operativo?
- ¿Con qué frecuencia deben hacerse copias de respaldo?
- ¿Las copias de respaldo deben almacenarse en un lugar diferente?
- ¿Deben tomarse precauciones contra el fuego, el daño provocado por agua o el
robo?
Aseguramiento de la calidad
- ¿Cuáles son los requerimientos para la confiabilidad, disponibilidad, facilidad de
mantenimiento, seguridad y demás atributos de calidad?
- ¿Cómo deben demostrarse las características del sistema a terceros?
- ¿El sistema debe detectar y aislar defectos?
- -¿Existe un tiempo máximo permitido para la recuperación del sistema después de
una falla?
- ¿El mantenimiento corregirá los errores, o incluirá también el mejoramiento del
sistema?
- ¿Qué medidas de eficiencia se aplicarán al uso de recursos y al tiempo de
respuesta?
- ¿Cuán fácil debe ser mover el sistema de una ubicación a otra o de un tipo de
computadora a otro?