Buscar este blog

martes, 10 de agosto de 2010

INGENIERIA DE REQUISITOS

Introduccion:



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 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; de esta manera, se pretende minimizar los problemas relacionados por la mala gestión de los requerimientos en el desarrollo de sistemas.



Definicion: Requerimientos



• Una condición o necesidad de un usuario para resolver un problema o alcanzar un objetivo. [Std 610.12-1900, IEEE: 62]



• Una condición o capacidad que debe estar presente en un sistema o componentes de sistema para satisfacer un contrato, estándar, especificación u otro documento formal. [Std 610.12-1900, IEEE: 62]



• 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]



Definicion: Ingenieria de Requerimientos



• Ingeniería de Requerimientos ayuda a los ingenieros de software a entender mejor el problema en cuya solución trabajarán. Incluye el conjunto de tareas que conducen a comprender cuál será el impacto del software sobre el negocio, qué es lo que el cliente quiere y cómo interactuarán los usuarios finales con el software. [Pressman, 2006: 155]



• La ingeniería de requerimientos es el proceso de desarrollar una especificación de software. Las especificaciones pretender comunicar las necesidades del sistema del cliente a los desarrolladores del sistema. [Sommerville, 2005: 82]



• La Ingeniería de Requerimientos se define, como un conjunto de actividades en las cuales, utilizando técnicas y herramientas, se analiza un problema y se concluye con la especificación de una solución (a veces más de una). [Ortas 1997]



Actividades de la Ingenieria de Requerimientos:



• Extracción: Esta fase representa el comienzo de cada ciclo. Extracción es el nombre comúnmente dado a las actividades involucradas en el descubrimiento de los requerimientos del sistema.



• Análisis: Sobre la base de la extracción realizada previamente, comienza esta fase en la cual se enfoca en descubrir problemas con los requerimientos del sistema identificados hasta el momento.



• Especificación: En esta fase se documentan los requerimientos acordados con el cliente, en un nivel apropiado de detalle.



• Validación: La validación es la etapa final de la IR. Su objetivo es, ratificar los requerimientos, es decir, verificar todos los requerimientos que aparecen en el documento especificado para asegurarse que representan una descripción, por lo menos, aceptable del sistema que se debe implementar. Esto implica verificar que los requerimientos sean consistentes y que estén completos.



Técnicas y Herramientas utilizadas en las actividades de Ingenieria de Requerimientos:



• Entrevistas y cuestionarios



• Sistemas existentes



• Grabaciones de video y de audio



• Brainstorming (tormenta de ideas)



• Arqueología de documentos



• Aprendiz.



• Observación



• Run Use Case WorkShop (talleres de trabajo basados en los Casos de Uso)



• Prototipos



• Análisis FODA (Fortalezas, Oportunidades, Debilidades y Amenazas)



• Cadena de valor



• Modelo de clase conceptual, Diagrama Conceptual, Diagrama de Clases Conceptual



• Diagrama de pescado (Ishikawa Diagram, Cause-and-Effect o Fishbone Diagram)



• Glosario



• Diagrama de actividad



• Documento ESRE, Casos de uso



• Lista de requerimientos



• Casos de uso



• Casa de calidad o QFD (Quality Function Deployment)



• Checklist (lista de verificación)







 Proceso de estudio de las necesidades de los usuarios con el objeto de llegar a una definición del sistema hw/sw.


 Condición o aptitud necesaria para resolver un problema o alcanzar un objetivo.



 Condición o facilidad que debe proporcionar un sistema o algunos de sus subsistemas para satisfacer un contrato, norma, especificación o cualquier otra condición impuesta formalmente a través de un documento.

Tipos de requisitos




  • Funcionales : Describen los servicios o funciones del sistema.




  • No funcionales: Describen las restricciones del sistema o del proceso de desarrollo: Niveles de servicio, interfaz, atributos de calidad, etc. En general, los requisitos no funcionales son más difíciles de cuantificar.



Recoleccion de Requisitos



 Definición de requisitos



Expresa en lenguaje natural o con diagramas los servicios y restricciones operacionales del sistema. Se genera con la información proporcionada por el cliente.



 Especificación de Requisitos



Documento estructurado que describe con detalle los servicios del sistema. A veces llamado especificación funcional. Escrito como contrato con el cliente.



 Especificación de software




Escrito para los diseñadores. Sirve de base para el diseño y desarrollo del sistema.





En la actualidad, son muchos los procesos de desarrollo de software que existen. Con el pasar de los años, la Ingeniería de Software ha introducido y popularizado una serie de estándares para medir y certificar la calidad, tanto del sistema a desarrollar, como del proceso de desarrollo en sí. Se han publicado muchos libros y artículos relacionados con este tema, con el modelado de procesos del negocio y la reingeniería. Un número creciente de herramientas automatizadas han surgido para ayudar a definir y aplicar un proceso de desarrollo de software efectivo. Hoy en día la economía global depende más de sistemas automatizados que en épocas pasadas; esto ha llevado a los equipos de desarrollo a enfrentarse con una nueva década de procesos y estándares de calidad.



Sin embargo, ¿cómo explicamos la alta incidencia de fallos en los proyectos de software? ¿Por qué existen tantos proyectos de software víctimas de retrasos, presupuestos sobregirados y con problemas de calidad? ¿Cómo podemos tener una producción o una economía de calidad, cuando nuestras actividades diarias dependen de la calidad del sistema?



Tal vez suene ilógico pero, a pesar de los avances que ha dado la tecnología, aún existen procesos de producción informales, parciales y en algunos casos no confiables.



La Ingeniería de Requerimientos cumple un papel primordial en el proceso de producción de software, ya que enfoca 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, el comportamiento del sistema; de esta manera, se pretende minimizar los problemas relacionados al desarrollo de sistemas.



La razón principal para escoger este tema se fundamentó en la gran cantidad de proyectos de software que no llegan a cumplir sus objetivos. En nuestro país somos partícipes de este problema a diario, en donde se ha vuelto común la compra de sistemas extranjeros, para luego "personalizarlos" supuestamente a la medida de las empresas.



Tal "personalización", la mayoría de las veces, termina retrasando el proyecto en meses, o incluso en años. La problemática del año 2000 trajo como consecuencia una serie de cambios apresurados en los sistemas existentes; cambios que, desde mi punto de vista, no fueron bien planificados.



El reemplazo de plataformas y tecnologías obsoletas, la compra de sistemas completamente nuevos, las modificaciones de todos o de casi todos los programas que forman un sistema, entre otras razones, llevan a desarrollar proyectos en calendarios sumamente ajustados y en algunos casos irreales; esto ocasiona que se omitan muchos pasos importantes en el ciclo de vida de desarrollo, entre estos, la definición de los requerimientos.



Estudios realizados muestran que más del 53% de los proyectos de software fracasan por no realizar un estudio previo de requisitos. Otros factores como falta de participación del usuario, requerimientos incompletos y el cambio a los requerimientos, también ocupan sitiales altos en los motivos de fracasos.



Con este trabajo se pretende alcanzar los siguientes objetivos:



• Resaltar la importancia que tiene la Ingeniería de Requerimientos dentro del ciclo de desarrollo.



• Dar a conocer las diferentes alternativas que existen para identificar requerimientos.



• Ayudar a comprender la diferencia que existe entre las diferentes técnicas utilizadas en la IR.



• Minimizar las dudas que se tiene sobre los casos de uso.



• Mostrar la utilización de herramientas CASE dentro de la administración de requisitos.

No hay comentarios:

Publicar un comentario