Con el paso
de los años se ha podido constatar que los requerimientos o requisitos son esenciales
en un proyecto de desarrollo de software, ya que es el mecanismo que permite
entender lo que el cliente quiere, analizar sus necesidades, evaluar la
factibilidad, especificar las necesidades de manera no ambigua, validarlas, y
administrar estos requerimientos conforme evoluciona el desarrollo del proyecto.
Gran número
de los proyectos de software fracasan por no realizar una adecuada definición,
especificación, y administración de los requerimientos. La administración inadecuada puede
desencadenar problemas como la falta de participación del usuario, requerimientos
incompletos y una rastreabilidad errada de los mismos.
Con el paso
de los años se ha podido constatar que los requerimientos o requisitos son esenciales
en un proyecto de desarrollo de software, ya que es el mecanismo que permite
entender lo que el cliente quiere, analizar sus necesidades, evaluar la
factibilidad, especificar las necesidades de manera no ambigua, validarlas, y
administrar estos requerimientos conforme evoluciona el desarrollo del proyecto.
Gran número
de los proyectos de software fracasan por no realizar una adecuada definición,
especificación, y administración de los requerimientos. La administración inadecuada puede
desencadenar problemas como la falta de participación del usuario, requerimientos
incompletos y una rastreabilidad errada de los mismos.
La
Ingeniería de Requerimientos cumple un papel primordial en el proceso de
producción de software, ya que se enfoca en un área fundamental: la definición de lo que se desea producir.
Su principal tarea consiste en la generación de especificaciones correctas que
describan con claridad, sin ambigüedades, en forma consistente y compacta, las
necesidades de los usuarios o clientes, minimizando problemas originados por la
mala gestión de los requerimientos en el desarrollo de sistemas.
“La
Ingeniería de requerimientos se entiende como el proceso de descubrimiento y
comunicación de las necesidades de clientes y usuarios y la gestión de los
cambios de dichas necesidades”
Según IEEE un “Requerimiento” es:
“Una
condición o capacidad que necesita el usuario para resolver un problema o
conseguir un objetivo determinado”. (Std 610.12-1900, IEEE: 62). Por extensión el término requisito se aplica
a las condiciones “que debe cumplir o
poseer un sistema o uno de sus componentes para satisfacer un contrato, una
norma o una especialización”
Estos
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.
Los requerimientos no funcionales: son características que de una u
otra forma puedan limitar el sistema, por ejemplo, el rendimiento (en tiempo y
espacio), interfaces de usuario, fiabilidad (robustez del sistema,
disponibilidad de equipo), mantenimiento, seguridad, portabilidad, etc.