You are on page 1of 25

Clase II

Antecedentes
La parte ms difcil de construir un sistema es precisamente

saber qu construir. Ninguna otra parte del trabajo conceptual es tan difcil como establecer los requerimientos tcnicos detallados, incluyendo todas las interfaces con gente, mquinas y otros sistemas. Ninguna otra parte del trabajo afecta tanto el sistema si es hecha mal. Ninguna es tan difcil de corregir ms adelante Entonces, la tarea ms importante que el ingeniero de software hace para el cliente es la extraccin iterativa y el refinamiento de los requerimientos del producto. [Frederick P. Brooks, 1987]

Introduccin
Es muy frecuente escuchar entre los conocedores del

desarrollo de software (programas de computadoras), que un gran nmero de los proyectos de software fracasan por no realizar una adecuada definicin, especificacin, y administracin de los requerimientos. Dentro de esa mala administracin se pueden encontrar factores como la falta de participacin del usuario, requerimientos incompletos y el mal manejo del cambio a los requerimientos.

La Ingeniera de Requerimientos
La Ingeniera de Requerimientos (IR) cumple un papel

primordial en el proceso de produccin de software, ya que se enfoca un rea fundamental: la definicin de lo que se desea producir. Su principal tarea consiste en la generacin de especificaciones correctas que describan con claridad, sin ambigedades, en forma consistente y compacta, las necesidades de los usuarios o clientes, en el desarrollo de sistemas.

Definicin: Requerimientos
Una condicin o necesidad de un usuario para resolver

un problema o alcanzar un objetivo. [Std 610.12-1900, IEEE: 62] Una condicin o capacidad que debe estar presente en un sistema o componentes de sistema para satisfacer un contrato, estndar, especificacin u otro documento formal. [Std 610.12-1900, IEEE: 62] Un requerimiento es simplemente una declaracin abstracta de alto nivel de un servicio que debe proporcionar el sistema o una restriccin de ste. [Sommerville, 2005: 108]

Definicin de Ing. Requerimientos


Ingeniera de Requerimientos ayuda a los ingenieros

de software a entender mejor el problema en cuya solucin trabajarn. Incluye el conjunto de tareas que conducen a comprender cul ser el impacto del software sobre el negocio, qu es lo que el cliente quiere y cmo interactuarn los usuarios finales con el software. [Pressman, 2006: 155]

Definicin de Ing. Requerimientos


La ingeniera de requerimientos es el proceso de

desarrollar una especificacin de software. Las especificaciones pretender comunicar las necesidades del sistema del cliente a los desarrolladores del sistema. [Sommerville, 2005: 82] La Ingeniera de Requerimientos se define, como un conjunto de actividades en las cuales, utilizando tcnicas y herramientas, se analiza un problema y se concluye con la especificacin de una solucin (a veces ms de una). [Ortas 1997]

Caractersticas de requerimientos
Necesario: Un requerimiento es necesario si su

omisin provoca una deficiencia en el sistema a construir, y adems su capacidad, caractersticas fsicas o factor de calidad no pueden ser reemplazados por otras capacidades del producto o del proceso. Conciso: Un requerimiento es conciso si es fcil de leer y entender. Su redaccin debe ser simple y clara para aquellos que vayan a consultarlo en un futuro.

Caractersticas de requerimientos
Completo: Un requerimiento est completo si no necesita

ampliar detalles en su redaccin, es decir, si se proporciona la informacin suficiente para su comprensin. Consistente: Un requerimiento es consistente si no es contradictorio con otro requerimiento. No ambiguo: Un requerimiento no es ambiguo cuando tiene una sola interpretacin. El lenguaje usado en su definicin, no debe causar confusiones al lector. Verificable: Un requerimiento es verificable cuando puede ser cuantificado de manera que permita hacer uso de los siguientes mtodos de verificacin: inspeccin, anlisis, demostracin o pruebas.

Tipos de requerimientos
Los requerimientos funcionales definen las funciones

que el sistema ser capaz de realizar. Describen las transformaciones que el sistema realiza sobre las entradas para producir salidas.

Tipos de requerimientos
Los requerimientos no funcionales tienen que ver con

caractersticas 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, estndares, etc.

Dificultades para definir req.


Los requerimientos no son obvios y vienen de muchas

fuentes. Son difciles de expresar en palabras (el lenguaje es ambiguo). Existen muchos tipos de requerimientos y diferentes niveles de detalle. La cantidad de requerimientos en un proyecto puede ser difcil de manejar. Nunca son iguales. Algunos son ms difciles, ms riesgosos, ms importantes o ms estables que otros.

Dificultades para definir req.


Los requerimientos estn relacionados unos con otros,

y a su vez se relacionan con otras partes del proceso. Cada requerimiento tiene propiedades nicas y abarcan reas funcionales especficas. Un requerimiento puede cambiar a lo largo del ciclo de desarrollo. Son difciles de cuantificar, ya que cada conjunto de requerimientos es particular para cada proyecto.

Actividades de la Ingenieria de Requerimientos:


Extraccin: Esta fase representa el comienzo de cada

ciclo. Extraccin es el nombre comnmente dado a las actividades involucradas en el descubrimiento de los requerimientos del sistema. Anlisis: Sobre la base de la extraccin realizada previamente, comienza esta fase en la cual se enfoca en descubrir problemas con los requerimientos del sistema identificados hasta el momento.

Actividades de la Ingeniera de Requerimientos:


Especificacin: En esta fase se documentan los

requerimientos acordados con el cliente, en un nivel apropiado de detalle. Validacin: La validacin 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 descripcin, por lo menos, aceptable del sistema que se debe implementar. Esto implica verificar que los requerimientos sean consistentes y que estn completos.

Tcnicas y Herramientas utilizadas en las actividades


Entrevistas y cuestionarios
Sistemas existentes Grabaciones de video y de audio Brainstorming (tormenta de ideas) Arqueologa de documentos Observacin Run Use Case WorkShop (talleres de trabajo basados

en los Casos de Uso) Prototipos

Tcnicas y Herramientas utilizadas en las actividades


Anlisis FODA (Fortalezas, Oportunidades, Debilidades y

Amenazas) 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 verificacin)

Sistema de entrevistas
adecuado para las primeras tomas de contacto conveniente comenzar por preguntas de contexto libre, para entender el problema, personas interesadas en la solucin, naturaleza de sta, y efectividad de la reunin preguntas centradas en el cliente, objetivos globales y beneficios quin solicita el trabajo? quin utilizar la solucin? cul ser el beneficio econmico de una buena solucin? existen otras alternativas a esta solucin? preguntas sobre el problema y la solucin qu entiende el cliente por una solucin correcta? qu problemas afrontar esta solucin? en qu entorno se va a implantar la solucin? existen restricciones o aspectos de rendimiento importantes?

Sistema de entrevistas

preguntas sobre la efectividad de la reunin es usted la persona adecuada para responder a estas preguntas? Sus respuestas son oficiales? son relevantes mis preguntas para su problema? hay alguien ms que pueda proporcionar informacin adicional? hay algo ms que debera preguntar?

problemas de las entrevistas malentendidos omisin de informacin mala relacin de trabajo (nosotros-ellos)

Personal involucrado en la Ingeniera de Requerimientos


Realmente, son muchas las personas involucradas en

el desarrollo de los requerimientos de un sistema. Es importante saber que cada una de esas personas tienen diversos intereses y juegan roles especficos dentro de la planificacin del proyecto; el conocimiento de cada papel desempeado, asegura que se involucren a las personas correctas en las diferentes fases del ciclo de vida, y en las diferentes actividades de la IR.

Los roles ms importantes


Usuario final: Son las personas que usarn el sistema

desarrollado. Ellos estn relacionados con la usabilidad, la disponibilidad y la fiabilidad del sistema; estn familiarizados con los procesos especficos que debe realizar el software, dentro de los parmetros de su ambiente laboral. Sern quienes utilicen las interfaces y los manuales de usuario. Usuario Lder: Son los individuos que comprenden el ambiente del sistema o el dominio del problema en donde ser empleado el software desarrollado. Ellos proporcionan al equipo tcnico los detalles y requerimientos de las interfaces del sistema.

Los roles ms importantes


Personal de Mantenimiento: Para proyectos que requieran

un mantenimiento eventual, stas personas son las responsables de la administracin de cambios, de la implementacin y resolucin de anomalas. Su trabajo consiste en revisar y mejorar los procesos del producto ya finalizado. Analistas y programadores: Son los responsables del desarrollo del producto en s; ellos interactan directamente con el cliente. Personal de pruebas: Se encargan de elaborar y ejecutar el plan de pruebas para asegurar que las condiciones presentadas por el sistema son las adecuadas. Son quienes van a validar si los requerimientos satisfacen las necesidades del cliente.

Quines se vern afectados ?


Quin usar el sistema que se va a construir? Quin desarrollar el sistema? Quin probar el sistema? Quin documentar el sistema? Quin dar soporte al sistema? Quin dar mantenimiento al sistema? Quin mercadear, vender, y/o distribuir el sistema? Quin se beneficiar por el retorno de inversin del sistema?

Beneficios
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 estimacin de costos, tiempo y recursos necesarios. Disminuye los costos y retrasos del proyecto: Muchos estudios han demostrado que reparar errores por un mal desarrollo no descubierto a tiempo, es sumamente caro; especialmente aquellas decisiones tomadas durante la RE.

Beneficios
Mejora la calidad del software: La calidad en el software

tiene que ver con cumplir un conjunto de requerimientos (funcionalidad, facilidad de uso, confiabilidad, desempeo, etc.). Mejora la comunicacin entre equipos: La especificacin de requerimientos representa una forma de consenso entre clientes y desarrolladores. Si este consenso no ocurre, el proyecto no ser exitoso. Evita rechazos de usuarios finales: La ingeniera de requerimientos obliga al cliente a considerar sus requerimientos cuidadosamente y revisarlos dentro del marco del problema, por lo que se le involucra durante todo el desarrollo del proyecto.