Ingeniería de Software


INGENIRÍA DE REQUERIMIENTOS – INGENIERÍA DE SOFTWARE 


A través de los años se ha podido constatar que los requerimientos o requisitos son la pieza fundamentalen 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 yes contra lo que se va a estar verificando si se están cumpliendo las metas trazadas. 

Es muy frecuente escuchar entre los conocedores del desarrollo de software (programas de computadoras), que un gran número de los proyectos de software fracasan por no realizar una adecuada definición, especificación, y administración de los requerimientos. Dentro de esa mala administración se pueden encontrar factores como la falta de participación del usuario, requerimientos incompletos y el mal manejo del cambio a los requerimientos. 

La Ingeniería de Requerimientos (IR) cumple un papel primordial en el proceso de producción de software, ya que se enfoca un área fundamental: la definición de lo que se desea producir. Su principal area 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; de esta manera, se pretende minimizar los problemas relacionados por la mala gestión de los requerimientos en el desarrollo de sistemas. 



Ingeniería de requerimientos: Conceptos y características.

Como se menciono anteriormente, la ingeniería de requerimientos sirve como una base sólida en el proceso de desarrollo de software, por lo que antes de pasar a tratar los aspectos referentes a la administración adecuada de los requerimientos, es importante primero definir lo que es un requerimiento y cuales serían las características deseables que deberían de tener. 


Pero... ¿Qué son Requerimientos? 

Se presenta a continuación la definición existente en el glosario de la IEEE de lo que es un“Requerimiento”: 

1. “Una condición o necesidad de un usuario para resolver un problema o alcanzar unobjetivo”. (Std 610.12-1900, IEEE: 62) 

2. “Una condición o capacidad que debe estar presente en un sistema o componentes desistema para satisfacer un contrato, estándar, especificación u otro documento formal”.(Std 610.12-1900, IEEE: 62) 

También, Ian Sommerville presenta una definición acerca de lo que es un “Requerimiento”: 

3. “Un requerimiento es simplemente una declaración abstracta de alto nivel de un servicio que debe proporcionar el sistema o una restricción de éste”. (Sommerville, 2005: 108) 

Analizando las definiciones anteriores, un requerimiento es una descripción de una condición o capacidad que debe cumplir un sistema, ya sea derivada de una necesidad de usuario identificada, o bien, estipulada en un contrato, estándar, especificación u otro documento formalmente impuesto al inicio del proceso. 



Tipos de Requerimientos 

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.


Fuente:
      http://paulsitemas.blogspot.com/2012/10/ingenieria-de-requisitos.html