HOJA DE INFORMACIÓN - Semana 03
HOJA DE INFORMACIÓN - Semana 03
HOJA DE INFORMACIÓN - Semana 03
1. Introducción
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 crecientede
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 consistentey
compacta, el comportamiento del sistema; de esta manera, se pretende minimizar los problemas relacionadosal
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.
Normalmente, un tema de la Ingeniería de Software tiene diferentes significados. De las muchas definiciones que
existen para requerimiento, ha continuación se presenta la definición que aparece en el glosario de la IEEE1.
(1) Una condición o necesidad de un usuario para resolver un problema o alcanzar un objetivo. (2) 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. (3) Una representación documentada de una condición o
capacidad como en (1) o (2).
Los requerimientos 2 puedes dividirse en requerimientos funcionales y requerimientos no funcionales. 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. Los
requerimientos no funcionales tienen que ver con características que de una u otra forma puedan limitar elsistema,
como, por ejemplo, el rendimiento (en tiempo y espacio), interfaces de usuario, fiabilidad (robustez delsistema,
disponibilidad de equipo), mantenimiento, seguridad, portabilidad, estándares, etc.
Características de los requerimientos
Las características de un requerimiento son sus propiedades principales. Un conjunto de requerimientos en
estado de madurez, deben presentar una serie de características tanto individualmente como en grupo. A
continuación, se presentan las más importantes.
Necesario: Un requerimiento es necesario si su omisión provoca una deficiencia en el sistema a construir, y
además su capacidad, características físicas o factor de calidad no pueden ser reemplazados por otras
capacidades del producto o del proceso.
Conciso: Un requerimiento es conciso si es fácil de leer y entender. Su redacción debe ser simple y clara para
aquellos que vayan a consultarlo en un futuro.
Completo: Un requerimiento está completo si no necesita ampliar detalles en su redacción, es decir, si se
proporciona la información suficiente para su comprensión.
Consistente: Un requerimiento es consistente si no es contradictorio con otro requerimiento.
No ambiguo: Un requerimiento no es ambiguo cuando tiene una sola interpretación. El lenguaje usado en su
definición no debe causar confusiones al lector.
Verificable: Un requerimiento es verificable cuando puede ser cuantificado de manera que permita hacer uso de
los siguientes métodos de verificación: inspección, análisis, demostración o pruebas.
Dificultades para definir los requerimientos
• Los requerimientos no son obvios y vienen de muchas fuentes.
• Son difíciles 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 difícil de manejar.
• Nunca son iguales. Algunos son más difíciles, más riesgosos, más importantes o estables que otros.
• Los requerimientos están relacionados unos con otros, y a su vez se relacionan con otras partes del
proceso.
• Cada requerimiento tiene propiedades únicas y abarcan áreas funcionales específicas.
• Un requerimiento puede cambiar a lo largo del ciclo de desarrollo.
• Son difíciles de cuantificar, ya que cada conjunto de requerimientos es particular para cada proyecto.
Ingeniería de Requerimientos vs. Administración de Requerimientos
El proceso de recopilar, analizar y verificar las necesidades del cliente para un sistema es llamado Ingeniería de
Requerimientos. La meta de la ingeniería de requerimientos (IR) es entregar una especificación de requisitos de
software correcta y completa.
No conocer estos intereses puede ocasionar una comunicación poco efectiva entre clientes y desarrolladores,
que a la vez traería impactos negativos tanto en tiempo como en presupuesto. Los roles más importantes pueden
clasificarse como sigue:
• Usuario final: Son las personas que usarán el sistema desarrollado. Ellos están relacionados con la
usabilidad, la disponibilidad y la fiabilidad del sistema; están familiarizados con los procesos específicos
que debe realizar el software, dentro de los parámetros de su ambiente laboral. Serán quienes utilicen las
interfaces y los manuales de usuario.
• Usuario Líder: 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 técnico los detalles y
requerimientos de las interfaces del sistema.
3 El“cliente” puede ser interpretado como un usuario de contabilidad, el grupo de mercadeo, otra organización
interna o un cliente externo.
• Personal de Mantenimiento: Para proyectos que requieran un mantenimiento eventual, estas personas son
las responsables de la administración de cambios, de la implementación y resolución de anomalías. 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 interactúan
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.
Otras personas que pueden estar involucradas, dependiendo de la magnitud del proyecto, pueden ser:
administradores de proyecto, documentadores, diseñadores de base de datos, entre otros.
Diferentes puntos de vistas también pueden tener consecuencias negativas, tales como datos redundantes,
inconsistentes y ambiguos.
El tamaño y complejidad de los requerimientos ocasiona desentendimiento, dificultad para enfocarse en un solo
aspecto a la vez y dificultad para visualizar relaciones existentes entre requerimientos.
• Barreras de comunicación
La ingeniería de requerimientos depende de una intensa comunicación entre clientes y analistas de
requerimientos; sin embargo, existen problemas que no pueden ser resueltos mediante la
comunicación.
Para remediar esto, se deben abordar nuevas técnicas operacionales que ayuden a superar estas
barreras y así ganar experiencia dentro del marco del sistema propuesto.
• Evolución e integración del sistema
Pocos sistemas son construidos desde cero. En la práctica, los proyectos se derivan de sistemas ya
existentes. Por lo tanto, los analistas de requerimientos deben comprender esos sistemas, que por lo
general son una integración de componentes de varios proveedores.
Para encontrar una solución a problemas de este tipo, es muy importante hacer planeamientos entre
los requerimientos y la fase de diseño; esto minimizará la cantidad de fallas directas en el código.
• Documentación de requerimientos
Los documentos de ingeniería de requerimientos son largos. La mayoría están compuestos de cientos
o miles de páginas; cada página contiene muchos detalles que pueden tener efectos profundos en el
resto del sistema.
Normalmente, las personas se encuentran con dificultades para comprender documentos de este
tamaño, sobre todo si lo leen cuidadosamente. Es casi imposible leer un documento de especificación
de gran tamaño, pues difícilmente una persona puede memorizar los detalles del documento. Esto
causa problemas y errores que no son detectados hasta después de haberse construido el sistema.
Estudio y
evaluación del
diseño
Verificación
física
Control
A continuación, se explicará cada una de ellas, presentándolas en el orden en que deben ser aplicadas para un
nuevo proyecto.
Análisis del Problema
El objetivo de esta actividad es entender las verdaderas necesidades del negocio.
Antes de describir qué pasos deben cumplirse en esta actividad, debemos tener una definición clara del término
“Problema”.
“Un problema puede ser definido como la diferencia entre las cosas como se perciben y las cosas como se
desean” 4. Aquí vemos nuevamente la importancia que tiene una buena comunicación entre desarrolladores y
clientes; de esta comunicación con el cliente depende que entendamos sus necesidades.
A través de la definición de problema, podemos ver entonces que la actividad de “Análisis del Problema”5 tiene
por objetivo que se comprendan los problemas del negocio, se evalúen las necesidades iniciales de todos los
involucrados en el proyecto y que se proponga una solución de alto nivel para resolverlo.
Durante el análisis del problema, se realizan una serie de pasos para garantizar un acuerdo entre los
involucrados, basados en los problemas reales del negocio.
Estos pasos son los siguientes
Comprender el problema que se está resolviendo: Es importante determinar quién tiene el problema realmente,
considerar dicho problema desde una variedad de perspectivas y explorar muchas soluciones desde diferentes
puntos de vista. Veamos la siguiente necesidad: “El cliente se queja mucho por la enorme fila que debe formar
para realizar una transacción bancaria”.
Construir un vocabulario común: Debe confeccionarse un glosario en dónde se definan todos los términos que
tengan significados comunes (sinónimos) y que serán utilizados durante el proyecto. Por ejemplo, las palabras
pignoración, retención, valor en suspenso, custodia, garantía, entre otras, son utilizadas para referirse a la acción
de dejar una prenda (puede ser cualquier forma de ahorros) como garantía de una deuda adquirida.
La creación de un glosario es sumamente beneficiosa ya que reduce los términos ambiguos desde el principio,
ahorra tiempo, asegura que todos los participantes de una reunión están en la misma página, además de ser
reutilizable en otros proyectos.
Identificar a los afectados por el sistema: Identificar a todos los afectados evita que existan sorpresas a medida
que avanza el proyecto. Las necesidades de cada afectado son discutidas y sometidas a debate durante de
ingeniería de requerimientos, aunque esto no garantiza que vaya a estar disponible toda la información
necesaria para especificar un sistema adecuado.
Para saber quiénes son las personas, departamentos, organizaciones internas o externas que se verán
afectadas por el sistema, debemos realizar algunas preguntas.
• ¿Quién usará el sistema que se va a construir?
• ¿Quién desarrollará el sistema?
• ¿Quién probará el sistema?
• ¿Quién documentará el sistema?
• ¿Quién dará soporte al sistema?
• ¿Quién dará mantenimiento al sistema?
• ¿Quién mercadeará, venderá, y/o distribuirá el sistema?
• ¿Quién se beneficiará por el retorno de inversión del sistema?
Como vemos, debe conocerse la opinión de todo aquél que de una u otra forma está involucrado con el sistema,ya
sea directa o indirectamente.
Definir los límites y restricciones del sistema: Este punto es importante pues debemos saber lo que se está
construyendo, y lo que no se está construyendo, para así entender la estrategia del producto a corto y largo
plazo. Debe determinarse cualquier restricción ambiental, presupuestaria, de tiempo, técnica y de factibilidad que
limite el sistema que se va a construir.
Evaluar factibilidades y riesgos: Involucra la evaluación de factibilidades técnicas (¿pueden implementarse los
requerimientos con la tecnología actual?); factibilidades operacionales (¿puede ser el sistema utilizado sin alterar
el organigrama actual?); factibilidades económicas (¿ha sido aprobado por los clientes el presupuesto?).
Es importante destacar que la especificación de requisitos es el resultado final de las actividades de análisis y
evaluación de requerimientos; este documento resultante será utilizado como fuente básica de comunicación
entre los clientes, usuarios finales, analistas de sistema, personal de pruebas, y todo aquel involucrado en la
implementación del sistema.
Los clientes y usuarios utilizan la SRS para comparar si lo que se está proponiendo, coincide con las necesidades
de la empresa. Los analistas y programadores la utilizan para determinar el producto que debe desarrollarse. El
personal de pruebas elaborará las pruebas funcionales y de sistemas en base a este documento. Para el
administrador del proyecto sirve como referencia y control de la evolución del sistema.
La SRS posee las mismas características de los requerimientos: completa, consistente, verificable, no ambigua,
factible, modificable, rastreable, precisa, entre otras. Para que cada característica de la SRS sea considerada,
cada uno de los requerimientos debe cumplirlas; por ejemplo, para que una SRS se considere verificable, cada
requerimiento definido en ella debe ser verificable; para que una SRS se considere modificable, cada requerimiento
debe ser modificable y así sucesivamente. Las características de la SRS son verificadas en la actividad de
Validación, descrita en el punto 3.4.
La estandarización de la SRS es fundamental pues ayudará, entre otras cosas, a facilitar la lectura y escritura de
la misma. Será un documento familiar para todos los involucrados, además de asegurar que se cubren todos los
tópicos importantes.
Existen plantillas creadas para la SRS, sin embargo, cada uno tiene la potestad de crear su propia plantilla. Enel
anexo #1 se muestra una plantilla completa para la especificación de requisitos.
Validación de Requisitos
La validación es la actividad de la IR que permite demostrar que los requerimientos definidos en el sistema sonlos
que realmente quiere el cliente; además
revisa que no se haya omitido ninguno, que no sean ambiguos, inconsistentes o redundantes.
En este punto es necesario recordar que la SRS debe estar libre de errores, por lo tanto, la validación garantiza
que todos los requerimientos presentes en el documento de especificación sigan los estándares decalidad.
Durante la actividad de validación pueden hacerse preguntas en base a cada una de las características que se
desean revisar. A continuación, se presentan varios ejemplos:
• ¿Están incluidas todas las funciones requeridas por el cliente? (completa)
• ¿Existen conflictos en los requerimientos? (consistencia)
• ¿Tiene alguno de los requerimientos más de una interpretación? (no ambigua)
• ¿Está cada requerimiento claramente representado? (entendible)
• ¿Pueden los requerimientos ser implementados con la tecnología y el presupuesto disponible? (factible)
• ¿Está la SRS escrita en un lenguaje apropiado? (clara)
• ¿Existe facilidad para hacer cambios en los requerimientos? (modificable)
• ¿Está claramente definido el origen de cada requisito? (rastreable)
• ¿Pueden los requerimientos ser sometidos a medidas cuantitativas? (verificable)
La validación de requerimientos es importante pues de ella depende que no existan elevados costos de
mantenimiento para el software desarrollado.
Los requerimientos cambian por diferentes razones. Las más frecuentes son:
• Porque al analizar el problema, no se hacen las preguntas correctas a las personas correctas.
• Porque cambió el problema que se estaba resolviendo.
• Porque los usuarios cambiaron su forma de pensar o sus percepciones.
• Porque cambió el ambiente de negocios.
• Porque cambió el mercado en el cual se desenvuelve el negocio.
Cambios a los requisitos involucra modificar el tiempo en el que se va a implementar una característica en
particular, modificación que a la vez puede tener impacto en otros requerimientos. Por esto, la administraciónde
cambios involucra actividades como establecer políticas, guardar históricos de cada requerimiento, identificar
dependencias entre ellos y mantener un control de versiones.
Tener versiones de los requerimientos es tan importante como tener versiones del código, ya que evita tener
requerimientos emparchados 6 en un proyecto
En vista que las peticiones de cambios provienen de muchas fuentes, las mismas deben ser enrutadas en un
solo proceso. Esto se hace con la finalidad de evitar problemas y conseguir estabilidad en los requerimientos.
Identificación de elementos
Durante esta, se debe identificar muy claramente los siguientes elementos:
• Procesos
• Flujos de datos entre procesos
• Datos de cada flujo de datos
• Bases de datos
• Datos de las bases de datos
Preguntas generales:
• ¿Cuántos empleados laboran para la organización en el área(s) que se pretende desarrollar el sistema; o sea,cuántos
tienen relación directa con el proyecto
• ¿Cuáles son las personas claves en el sistema? ¿Por qué son importantes?
• ¿Existen obstáculos o influencias de tipo político que afectan la eficiencia del sistema?
• ¿Existen manuales de procedimientos, políticas o lineamientos de desempeño documentados oficial o no
oficialmente? Si los hay, ¿Se cumplen en forma cabal en el 100% de las ocasiones?, es decir, ¿se respetan dichos
procedimientos?
• ¿Existen métodos para evadir el sistema?, ¿Por qué se presentan?
• ¿Qué áreas necesitan un control específico?
• ¿Qué criterios se emplean para medir y evaluar el desempeño?