INTRODUCCIÓN
A través de los años se ha podido constatar que los requerimientos o requisitos son
la pieza fundamental en un proyecto de desarrollo de software, ya que marcan el
punto de partida para actividades como la planeación, básicamente en lo que se
refiere a las estimaciones de tiempos y costos, así como la definición de recursos
necesarios y la elaboración de cronogramas que será uno de los principales
mecanismos de control con los que se contará durante la etapa de desarrollo.
Además la especificación de requerimientos es la base que permite verificar si se
alcanzaron o no los objetivos establecidos en el proyecto ya que estos son un reflejo
detallado de las necesidades de los clientes o usuarios del sistema y es contra lo que
se va a estar verificando si se están cumpliendo las metas trazadas.
¿Qué es un Requerimiento?
Puede variar desde unos estatutos abstractos en alto nivel de un servicio o unas
restricciones del sistema hasta una especificación funcional matemática detallada.
Los Requerimientos pueden servir como una función dual
Puede ser la base para la declaración de un contrato, por lo tanto, deber estar
abierto a interpretación.
Puede ser la base para el contrato en sí, por lo tanto, debe ser definido en
detalle.
Ambas declaraciones serán llamadas Requerimientos.
Los requerimientos pueden dividirse en requerimientos funcionales y requerimientos
no funcionales.
Un requerimiento de software define las funciones, capacidades o
atributos de cualquier sistema de software.
También representan:
Factores de calidad del sistema que permitirán evaluar su utilidad a un cliente o
usuario.
Los datos de entrada al proceso de desarrollo de software y representan lo que se
requiere implementar.
Una descripción de cómo el sistema deberá comportarse, describe información del
dominio de la aplicación, describe restricciones de la operación del sistema y
especifica atributos ó propiedades del sistema.
Un problema por resolver.
Los requerimientos de software pueden dividirse en 2 categorías: requerimientos
funcionales y requerimientos no funcionales.
Los requerimientos funcionales son los que definen las funciones que el sistema será
capaz de realizar, describen las transformaciones que el sistema realiza sobre las
entradas para producir salidas. Es importante que se describa el ¿Qué? y no el ¿Cómo?
se deben hacer esas transformaciones.
Estos requerimientos al tiempo que avanza el proyecto de software se convierten en los
algoritmos, la lógica y gran parte del código del sistema.
Por otra parte los requerimientos no funcionales tienen que ver con características que de
una u otra forma puedan limitar el sistema, como por ejemplo, el rendimiento (en tiempo y
espacio), interfaces de usuario, fiabilidad (robustez del sistema, disponibilidad de equipo),
mantenimiento, seguridad, portabilidad, estándares, etc.
Tipos De Requerimientos de Sistema †Software
Tipos De Requerimientos de Sistema †Software †
Software
Requerimientos Funcionales: Define que hace el sistema, es decir, las funciones
del sistema. †
Describen las transformaciones que el sistema realiza sobre las entradas para producir
salidas.
Requerimientos No Funcionales: Definen los atributos que le indican al sistema
como realizar su trabajo (eficiencia, hardware, software, interfaces, usabilidad, etc.). Es
el como, cuando y cuanto del que. †
Hardware ††
Restricciones: tipo de maquina, Desempeño, tiempo, carga, etc.
Dificultades para definir los requerimientos
Durante la etapa de especificación de requerimientos se pueden presentar muchos
inconvenientes los cuales son importantes de identificar y prevenir, a continuación se
presenta un listado con los problemas más comunes en este proceso:
Los requerimientos no son obvios y vienen de muchas fuentes.
Son difíciles de expresar en palabras (el lenguaje es ambiguo).
La cantidad de requerimientos en un proyecto puede ser difícil de manejar.
Un requerimiento puede cambiar a lo largo del ciclo de desarrollo.
El usuario no puede explicar lo que hace Tiende a recordar lo excepcional y olvidar lo
rutinario
Hablan de lo que no funciona Los usuarios tienen distinto vocabulario que los
desarrolladores
Importancia de la ingeniería de requerimientos
Según la autora Lizka Johany Herrera en su documento de la ingeniería de requerimientos, los
principales beneficios que se obtienen de la Ingeniería de Requerimientos son
Permite gestionar las necesidades del proyecto en forma estructurada:
Cada actividad de la IR consiste de una serie de pasos organizados y bien definidos.
Mejora la capacidad de predecir cronogramas de proyectos, así como sus resultados:
La IR proporciona un punto de partida para controles subsecuentes y actividades de
mantenimiento, tales como estimación de costos, tiempo y recursos necesarios.
Disminuye los costos y retrasos del proyecto: es sabido que reparar errores por un mal
desarrollo no descubierto a tiempo, es sumamente caro; especialmente aquellas decisiones
tomadas durante la IR, ya que es una de las etapas de mayor importancia en el ciclo de
desarrollo de software y de las primeras en llevarse a cabo.
Mejora la calidad del software: La calidad en el software tiene que ver con cumplir un conjunto
de requerimientos (funcionalidad, facilidad de uso, confiabilidad, desempeño, etc.).
Caracteristicas de los Requerimientos
En principio los requerimientos deben ser precisos, completos y consistentes.
Precisos
Deben extraer con precision lo que se desea del sistema
Completos
Deben incluir todas las descripciones y componentes requeridos
Consistente
No debe haber conflictos o contradicciones en las descripciones de los requerimientos
En la practica es dificil producir un documento con estas caracteristicas.
Requerimientos Definición/Especificación
Definición de Requerimientos
Una declaración en un Lenguaje Natural incluye los diagramas de los servicios
del sistema y sus límites operacionales. Escrito para clientes.
Especificación de Requerimientos
Un documento estructurado con descripción o detalle de los servicios del
sistema. Escrito como un contrato entre el cliente y el contratista.
Especificación de Software
Descripción detallada de software, la cual, puede servir como una base para
diseño o implementación. Escrito para desarrolladores.
Definiciones y Especificaciones
Definición de Requerimientos
. El Software proporciona significado de representación y acceso a
archivos externos creados por otras herramientas.
Especificación de Requerimientos
El usuario debe proporcionar facilidades para definir el tipo de archivos externos.
Cada tipo de archivo externo puede tener una herramienta asociada. La cual, será
aplicada para el archivo.
Cada tipo de archivo externo será representado como un icono específico mostrado al
usuario.
Las facilidades proporcionadas para la representación del icono en un tipo de archivo
externo será definido por el usuario.
Cuando un usuario selecciona una representación de icono de un archivo externo, el efecto
de la selección es aplicar las herramientas asociadas con el tipo de archivo externo al archivo
representado por la selección del icono.
Clases de Requerimientos
Requerimientos Perdurables.
Requerimientos estables derivados de las actividades de la organización del cliente.
Por ejemplo, un hospital siempre tendrá doctores, enfermeras, etc. Puede ser
derivado de modelos de dominio.
Requerimientos Volátiles.
Los requerimientos cambian durante el desarrollo o cuando el sistema está en uso.
En un hospital, los requerimientos se derivan de las políticas salud-cuidados.
Clasificación de Requerimientos
Requerimientos Cambiantes.
Los requerimientos que cambian por el ambiente del sistema.
Requerimientos Emergentes.
Requerimientos que surgen como una comprensión del desarrollo del sistema.
Requerimientos de Consecuencias.
Requerimientos que resultan de la introducción del sistema computacional.
Requerimientos de Compatibilidad.
Requerimientos que dependen de otros sistemas o de otros procesos de la
organización.
REQUERIMIENTOS FUNCIONALES:
Son declaraciones de los servicios que debe proporcionar el sistema, de la manera en que
éste debe reaccionar a entradas particulares y de cómo se debe comportar en situaciones
particulares. En algunos casos, los requerimientos funcionales de los sistemas también
pueden declarar explícitamente lo que el sistema no debe hacer.
EJEMPLOS
El usuario deberá tener la posibilidad de buscar en el conjunto inicial de la base de datos o
seleccionar un subconjunto de ella
El sistema deberá proporcionar visores adecuados para que el usuario lea documentos en
el almacén de datos
A cada periodo se le deberá asignar un identificador único, que el usuario podrá copiar al
área de almacenamiento permanente de la cuenta
REQUERIMIENTOS NO FUNCIONALES:
Son restricciones de los servicios o funciones ofrecidos por el sistema. Incluyen
restricciones de tiempo, sobre el proceso de desarrollo y estándares. Los
requerimientos no funcionales a menudo se aplican al sistema en su totalidad.
Normalmente apenas se aplican a características o servicios individuales del sistema.
EJEMPLOS
La interfaz de usuario se implementara como HTML simple sin marcos o applets java.
El proceso de desarrollo del sistema y los documentos a entregar deberán ajustarse al
proceso y a los productos a entregar.
El sistema no deberá revelar al personal de la biblioteca que lo utilice ninguna información
personal de los usuarios del sistema aparte de su nombre y número de referencia de la
biblioteca.
La evolución de los estudios encarados por la Ingeniería de Requerimientos se fue dando
paulatinamente. Sin embargo, a partir de los 90, los esfuerzos se concentraron en la
búsqueda de técnicas, métodos y herramientas que pudieran ser aplicados durante el
proceso de definición de requerimientos para arribar a una etapa de diseño exitosa,
dejando de lado la obtención de una metodología capaz de adaptarse a cualquier tipo de
sistema y paradigma, brindando un marco de trabajo referencial, independiente del método
a aplicar. Es muy importante mencionar que el poder formular una especificación de
requerimientos completa y consistente, es un paso muy importante para evitar cometer
errores en la definición de los requerimientos, ya que los mismos pueden resultar muy
caros de corregir una vez desarrollado el sistema. De ahí, la vital importancia que tiene la
ingeniería de requerimientos en generar una adecuada especificación que contemple
claramente y sin ambigüedades los requerimientos del sistema a desarrollar, con el fin
primordial de evitar que los proyectos fracasen debido a una mala elaboración de la
definición y especificación de requerimientos.
CONCLUSIÓN