Powered by

CRM para Hoteles

La importancia de los requisitos en un proyecto de software

3 comentarios

13 julio 2011 a las 7:00, por

data-base-diccionario-software

mandiberg. Flickr

Hoy damos la bienvenida a Abián Ruiz como nuevo autor del Blog TRW. Junto con Yeray Santana y David Frigolet, forma parte del eje de tecnología del TRE. Este será el primero de varios posts dedicados al desarrollo de software.

Siempre que vamos a desarrollar un proyecto Software empezamos por el mismo sitio: los requisitos.

Los requisitos se han convertido en un punto clave en el desarrollo de las aplicaciones informáticas. Un gran número de proyectos  software naufragan debido a una mala definición, especificación o administración de requisitos. Factores tales como requisitos incompletos o mal manejo de los cambios de los requisitos, llevan a proyectos completos al fracaso total.

Usando terminología de Ingeniería del Software (IEEE: Standard Glossary of Software Engineering Terminology) podemos definir un requisito como:

  1. Condición o capacidad que necesita un usuario para resolver un problema o lograr un objetivo.
  2. Condición o capacidad que tiene que ser alcanzada o poseída por un sistema o componente de un sistema para satisfacer un contrato, estándar, u otro documento impuesto formalmente.
  3. Una representación en forma de documento de una condición o capacidad como las expresadas en 1 o en 2.

¿Y por qué son tan importantes los requisitos de un proyecto software?

Roger S. Pressman, conocido ingeniero de software y autor de varios libros de Ingeniería del Software,  expresa que, para que un esfuerzo de desarrollo de software tenga éxito, es esencial comprender perfectamente los requisitos del software. Independientemente de lo bien diseñado o codificado que esté un programa, si se ha analizado y especificado pobremente, decepcionará al usuario y desprestigiará al que lo ha desarrollado.

La parte más difícil en la construcción de sistemas software es decidir precisamente qué construir. Ninguna otra parte del trabajo conceptual es tan ardua como establecer los requisitos técnicos detallados, incluyendo todas las interfaces con las personas que lo van a usar  y otros sistemas. Ninguna otra parte del trabajo puede perjudicar tanto el resultado final si se realiza de forma errónea. Ninguna otra parte es tan difícil de rectificar posteriormente.

La calidad con que se realice la captura de los requisitos va a influenciar en todo el proceso de desarrollo del software, repercutiendo en el resto de las fases de desarrollo del mismo. Una definición eficiente de los requisitos permite mostrar un nivel de disciplina en el proceso de desarrollo, dar un mejor soporte a la Gestión de Cambios y ganar una mayor eficiencia en las pruebas, reduciendo el riesgo, mejorando la calidad y permitiendo la automatización. Además,  contribuye a tomar mejores decisiones de diseño y de arquitectura. También le permite al equipo de desarrollo reducir los problemas de mantenimiento. En resumen, una buena definición de requisitos nos da más posibilidades de lograr un producto de completo de software.

¿Qué debemos evitar?

problemas de comunicacion en desarrollo de software

Haz click para ampliar

A diario, en los proyectos de desarrollo de software, por falta de información o de conocimiento acerca del tema, se cometen errores con respecto a los requisitos. Entre los más comunes se encuentra la implicación insuficiente del cliente, ya que estos no comprenden la importancia de trabajar con rigor en la obtención de los requisitos para garantizar la calidad de los resultados, trayendo consigo a largo plazo problemas en la validación del producto obtenido. Otro de los defectos son los requisitos crecientes y cambiantes. Esto puede incrementar o modificar funcionalidades ya implementadas, desbordando costos y agendas planificadas, generándose también parches de programación que pueden trastocar principios básicos de diseño y degradar la arquitectura del sistema, obteniéndose finalmente un producto con serias deficiencias técnicas.

La ambigüedad es un problema habitual en las especificaciones de requisitos. Esta crea expectativas diferentes entre las partes del proyecto, y hace que los desarrolladores programen funcionalidades que no se ajustan a lo que los usuarios necesitan (re-programación), ocasionando la pérdida de tiempo en re-codificación, influyendo negativamente en el tiempo de entrega del producto al cliente final.

Es frecuente la tendencia de algunos desarrolladores a incluir funcionalidades que no figuran en la especificación de requisitos, suponiendo que los usuarios lo agradecerán y que en su mayoría quedan programadas pero sin uso, suponiendo un coste de desarrollo innecesario. También es frecuente que el cliente pida funcionalidades que en realidad no añaden valor al producto, suponiendo un esfuerzo importante de desarrollo.

En ocasiones, el cliente tiene tan sólo el concepto general del producto que desea. La tentación en estos casos es partir de una descripción mínima e ir preguntando y revisando conforme el desarrollo avanza. Las estimaciones prematuras, basadas en información limitada, pueden fácilmente desbordarse en más del doble. Siempre que sea preciso ofrecer valoraciones previas, es conveniente ofrecer varias posibilidades o incluir un porcentaje posible de error probable.

Para concluir, podemos asegurar que una eficiente gestión de requisitos a lo largo de todo el ciclo de vida del proyecto contribuye eficazmente a la calidad del producto final y al grado de satisfacción del cliente.

También te puede interesar