Obtencion de Requerimientos del Dr. Pedro Mejia.

Anuncio
INGENIERIA DE SOFTWARE.
Dr. Pedro Mejia Alvarez. 2009.
Obtención de Requerimientos
En esta actividad se determina el dominio de la aplicación, se especifican los servicios que debe
proveer el sistema, la funcionalidad requerida del sistema, y las restricciones de hardware y
software. Es indispensable la participación de los usuarios y clientes para la identificación de los
requerimientos del sistema.
Como resultado de esta actividad se debe obtener un documento inicial de definición de los
requerimientos (DDR), en donde se definen las necesidades iniciales del sistema, o lo que se
conoce como requerimientos iniciales. Estos requerimientos pudieran no ser los definitivos, ni
tampoco todos los requerimientos. Nuevos requerimientos pueden ser agregados al documento
conforme se vayan descubriendo o incluso los requerimientos ya definidos pueden modificarse o
eliminarse.
En la obtención de los requerimientos existen las siguientes tareas a seguir (referencia):
1. Comprender el problema que se va a resolver, para lo cual es necesario estudiar el dominio
o entorno en el que el sistema va a operar.
2. Buscar y recolectar información acerca del sistema a desarrollar, de manuales de operación
y mantenimiento, de manuales organizacionales y políticas de operación.
3. Definir los límites y restricciones del sistema para determinar con precisión que es lo que el
sistema va a hacer y también especificar lo que no va a hacer.
4. Identificar a las personas o usuarios interesados en el sistema, ya que ellos conocen el
medio ambiente en que operará el sistema y pueden ayudar describiendo sus necesidades.
5. Recolectar y clasificar requerimientos, los desarrolladores pueden iniciar definiendo un
bosquejo general del sistema, su funcionamiento básico y estableciendo su alcance.
El desarrollo de las tareas de obtención de requerimientos es realizado de manera secuencial, sin
embargo cualquier tarea pudiera regresarnos a la anterior, sobre todo si no se descubre la
información necesaria en el primer recorrido del diagrama. La Figura 3.1 muestra esta relación.
La salida de esta actividad nos conduce hacia el análisis de requerimientos.
Figura 3.1 El proceso de obtención de requerimientos.
3.1. Comprensión del Problema
En todo proyecto de desarrollo de software, la primera actividad consiste en comprender el
problema que se desea resolver. El problema será resuelto mediante la construcción de un
producto o sistema de software. Para poder comprender el problema hay que establecer cuales
son los objetivos que persigue el cliente y su organización, cual es su visión del producto a
desarrollar y cuales son sus necesidades. Además, para comprender el problema es necesario
tener amplios conocimientos sobre el dominio de la aplicación y sobre el ambiente de operación.
Un proyecto que no tiene una dirección bien definida claramente llevara al desastre. Los
participantes del proyecto pueden tener objetivos y prioridades distintas a los definidos por el
70
cliente y con ello llevar al proyecto a no cumplir con la funcionalidad deseada. Todos los
involucrados en el proyecto, deben estar de acuerdo con los objetivos de proyecto así como en
sus alcances. Una consecuencia de que algunos de los involucrados no están de acuerdo con los
objetivos, es que los requerimientos se vuelven inestables. Esto causa frecuentes cambios en los
requerimientos.
Los detalles específicos del problema del cliente deben ser bien comprendidos. La descripción
del problema proviene de cliente, sin embargo, en ocasiones el problema es difícil de
documentar. Este problema ocurre por las siguientes razones:
•
El cliente no siempre define claramente el problema.
•
El analista de requerimientos y los desarrolladores no comprenden la naturaleza del problema.
•
El analista y los desarrolladores entienden el problema pero no saben como llevarlo a cabo.
•
El problema es muy amplio, vago, poco factible, o muy volátil.
Aunque el problema se comprenda, no será posible llevarlo a cabo si este no es factible. Por lo
tanto, después de comprender el problema y antes de comenzar el desarrollo, tanto el cliente
como los desarrolladores deben estar de acuerdo en su factibilidad. El problema de la factibilidad
se trata en el capítulo anterior.
Comúnmente, el problema no siempre es comprendido de forma inmediata, sino que requiere de
varias iteraciones. En cada iteración el cliente y los analistas de requerimientos llevan a cabo
entrevistas para aclarar el problema y sus implicaciones de desarrollo. En ocasiones el problema
es factible de desarrollar pero sus implicaciones en tiempo de desarrollo o costo pueden ser muy
altas. El tiempo y el costo son factores que siempre hay que tomar en cuenta cuando se describe
el problema. Lo que se desea finalmente en ésta fase, es que el problema esté bien descrito por
parte del cliente y bien comprendido por parte de los desarrolladores.
En esta actividad se describe el problema a solucionar. La organización que contrata un proyecto
de software, persigue unos objetivos con el desarrollo. Por ejemplo, el software pudiera
permitirle al cliente optimizar, automatizar o permitir documentar sus procedimientos
organizacionales. En una tienda departamental, por ejemplo, se podría requerir de la
automatización del proceso de venta, que antes se venia haciendo de forma manual. Este proyecto
podría consistir en la instalación de terminales de cómputo en cada punto de venta, y su conexión
con los departamentos de contabilidad y almacenes. El sistema de cómputo permitiría a un
71
operador de la tienda, cobrar e introducir datos sobre los productos vendidos. El objetivo de este
sistema de cómputo sería la automatización del proceso de venta de productos de la tienda
departamental.
3.7.1 Comprensión del dominio de la aplicación.
El conocimiento del dominio de la aplicación permite identificar el ambiente sobre el cual el
sistema de software estará operando y también el sistema que se encuentra actualmente en
operación. No es posible desarrollar ningún sistema si no se conoce el dominio. Los
requerimientos pueden ser mejor obtenidos y analizados si éste dominio es bien comprendido. El
dominio de la aplicación comprende varios aspectos.
•
Ambiente operacional. Permite definir el ambiente sobre el cual el sistema estará operando y
todos sus componentes. Este medio ambiente podría ser, un sistema distribuido, un sistema en
red de área local, un sistema robotizado, un sistema de manufactura computarizado o una
aplicación de comercio electrónico.
•
Sistemas de hardware. Estos sistemas comprenden, los sistemas de cómputo, las redes
utilizadas y sus protocolos, así como cualquier otros sistemas eléctricos y mecánicos.
•
Sistemas de Software. Estos sistemas comprenden los sistemas operativos, bases de datos,
lenguajes, sistemas de manejo de archivos, software de aplicación, sistemas de seguridad,
entre otros.
•
Interfaces Hombre-Maquina. Estos sistemas son aquellos con los que los usuarios tendrán
contacto directo para llevar a cabo sus labores.
•
Conexiones externas. Estos sistemas son aquellos que provienen del exterior del sistema y
que reciben datos del sistema o a quienes el sistema envía datos.
•
Procedimientos operacionales. Estos procedimientos definen las funciones que realiza el
sistema actual.
•
Capacidad del Sistema Actual. Este aspecto permite identificar cual es la capacidad de
procesamiento y de almacenamiento requeridos por el sistema.
Un gran número de sistemas no solo están compuestos por una computadora y un software
interno. Las industrias, las empresas bancarias, las empresas de telecomunicaciones o las
72
empresas de comercio electrónico, por mencionar solo algunas, tienen medios de operación muy
complejos que comprenden sistemas de cómputo, sistemas electro-mecánicos, robots, complejos
sistemas de tele-comunicaciones y sofisticadas interfaces de usuario. El desarrollo de sistemas de
software sobre éste tipo de ambientes, implica que especialistas de distintas disciplinas de la
Ingeniería se involucren en su especificación y diseño.
Podemos mencionar por ejemplo, el sistema de software que opera sobre los cajeros automáticos
de los bancos. Mediante este cajeros, es posible realizar diversas transacciones bancarias como
sacar dinero, hacer transferencias bancarias, consultar saldos o cambiar claves. Estos cajeros
contienen un sistema de cómputo el cual controla los dispositivos electro-mecánicos que
permiten almacenar y dar dinero a las personas con cuenta en el banco. Además, estos cajeros,
cuentan con sistema de comunicaciones, que les permiten enlazarse con los sistemas de cómputo
del banco. Cuando un cliente del banco introduce su tarjeta de crédito, para obtener dinero del
cajero, el sistema se comunica con el sistema de cómputo del banco para validar la tarjeta y para
obtener el estado de la cuenta del cliente.
Es necesario que los desarrolladores de este sistema cuenten con los conocimientos necesarios
sobre el dominio de la aplicación a desarrollar. Sin estos conocimientos el software sería difícil
de desarrollar o tendría fuertes implicaciones en el tiempo y costo de desarrollo. Esta parte debe
identificarse durante la fase de factibilidad, anteriormente descrita.
La información acerca del dominio de la aplicación no se recolecta de un solo lugar. Existe en
variedad de fuentes como, libros, manuales organizacionales, especialistas en el tema, o usuarios
que dominan una área de la ciencia.
3.7.2 Comprensión de las necesidades de los clientes y usuarios.
Además de la descripción del problema a resolver por parte del cliente, es necesario conocer los
problemas que la organización enfrenta cada día en sus procesos de negocio. Esta información
permitirá comprender mejor los objetivos planteados por el cliente y sus necesidades. En
ocasiones, el cliente no sabe como describir sus necesidades o no sabe como un sistema de
software puede ayudar a solucionar sus problemas. Por eso, esta fase de comprensión de
necesidades, puede ayudar a describir el tipo de software que mejor resolverá las necesidades de
la organización.
Las siguientes actividades ayudan a comprender las necesidades del cliente y los usuarios:
73
•
Identificar las tareas o funciones que describen las necesidades del cliente (identificar los
casos de uso).
•
Identificar los eventos del sistema y sus respuestas.
•
Observar a los usuarios en sus labores.
•
Observar reportes de problemas de los usuarios del sistema actual.
3.7.3 Requerimientos del negocio
Una vez comprendido el problema a solucionar o el sistema nuevo a desarrollar es necesario
entender cuales son los requerimientos del negocio. Los requerimientos del negocio describen los
beneficios que el nuevo sistema proveerá a la organización y a sus usuarios. Los proyectos de
desarrollo de software por lo general comienzan con la idea de que el nuevo producto de software
mejorará la situación del negocio del cliente de alguna forma. Para la definición de los
requerimientos del negocio es necesario detallar los siguientes aspectos:
1. Antecedentes. En los antecedentes se resumen las razones y el contexto del nuevo producto.
Proveen una descripción general de la historia o la situación que llevó a la decisión de
construir el producto o sistema.
2. Oportunidades de negocio. Para un producto comercial, describen la oportunidad de
mercado que existe y el mercado en el cual el producto estará compitiendo. Para un sistema a
implantar dentro de una organización, describe el problema del negocio que se pretende
solucionar o los procesos que se pretenden mejorar. Describe los problemas que existen y
que no pueden ser resueltos con la tecnología y los sistemas actualmente en operación. Aquí
se muestran también las tendencias del mercado, la evolución de la tecnología y la historia de
las decisiones organizacionales relacionadas al sistema por desarrollar.
3. Visión del producto. Es una descripción general de lo que se persigue con la construcción
del software y de los beneficios que se esperan. Resume de forma cuantitativa y cualitativa
los beneficios que el producto o el sistema aportará a la organización. En este aspecto es
importante que los clientes, usuarios y los directores de proyecto definan la forma en como se
medirá el éxito o el fracaso del desarrollo y los factores que afectarán o que tendrán mayor
impacto en el éxito del proyecto, incluyendo factores dentro o fuera de la organización.
74
4. Riesgos del negocio. En este aspecto, los riesgos definen los problemas que se contemplan
dentro del desarrollo del proyecto; una vez que el comienzo de éste ha sido ha sido aprobado.
Los tipos de riesgos que se pueden presentar son:
•
la habilidad de poder controlar y administrar efectivamente el desarrollo del proyecto,
•
la competencia del mercado,
•
el nivel de aceptación del usuario,
•
los posibles problemas con la implementación y operación del sistema, y
•
los posibles impactos negativos en la organización.
5. Alcances del proyecto a través de los requerimientos del negocio. Los alcances del
proyecto permiten al cliente y a los desarrolladores, identificar las implicaciones del
desarrollo como son, el tiempo de construcción, los costos y las personas involucradas en
desarrollo (por parte del cliente y por parte de los desarrolladores). En ocasiones, es difícil
para los desarrolladores estimar tiempos y costos de desarrollo, sin embargo, en la mayoría de
los proyectos, el cliente tiene un tiempo máximo permitido y un costo que no puede exceder
su presupuesto. Los conflictos que surjan por los tiempos y costos deben resolverse cuando la
etapa de factibilidad y de especificación de requerimientos estén terminadas. Hasta entonces,
se tendrá la información suficiente para llevar a cabo decisiones de contratación, o rechazo
del proyecto.
6. Comprensión del negocio. No es posible llevar a cabo ningún proyecto si no se conoce el
negocio que la organización del cliente lleva a cabo. En la comprensión del negocio es
necesario conocer:
1. La estructura organizacional.
2. Los procesos del negocio.
3. Los sistemas existentes, y
4. El personal clave relacionado con el proyecto.
75
3.2. Búsqueda y Recolección de Información
Para comprender el problema a solucionar, es importante contar con diversa información que
permita conocer la organización del cliente, sus necesidades y en general el dominio de la
aplicación. Esta información debe recolectarse de distintos manuales de la organización,
estándares y políticas, y manuales técnicos que describan las distintas partes del dominio de la
aplicación y los procesos y normas de la organización. La información recolectada sobre el
problema a resolver, debe organizarse coherentemente a fin de que pueda ser utilizada no solo
durante el proceso de Ingeniería de Requerimientos, sino también durante todo el ciclo de
desarrollo.
Algunos ejemplos de información que debe ser recolectada son los siguientes:
1. Información sobre el sistema actual. Esta información provee detalles sobre el sistema que
se quiere remplazar y que actualmente está en funcionamiento. Si se trata de un producto a
desarrollar de uso genérico, ésta información deberá ser aquella que describe los productos
similares actualmente en el mercado, contra quienes el producto tendrá que competir. Es
importante en este caso, recolectar información sobre la funcionalidad y restricciones del
producto competidor, su precio, el soporte que se ofrece y sus limites geográficos de
distribución.
2. Necesidades de los clientes y usuarios. La información recolectada anteriormente, derivada
de las entrevistas con los clientes, usuarios y con los interesados en el sistema, debe
documentarse.
3. Estándares organizacionales. Esta información comprende todos aquellos manuales de
procedimientos que la organización sigue en sus procesos.
4. Regulaciones Nacionales e Internacionales. Esta información es aquella que provea
estándares o normas para reglamentar al sistema o a los productos de software a construir.
Usualmente todo país cuenta con un organismo de gobierno que regula las actividades de las
organizaciones y que provee reglas de competencia y de calidad.
5. Información sobre el dominio de la aplicación. Esta información comprende toda aquella
información que permita descubrir el dominio.
76
3.3. Definición de Límites y Restricciones
Los limites definen el contexto de operación del sistema y definen su medio de operación. Las
restricciones definen las limitantes organizaciones, técnicas, económicas o de tiempos de
desarrollo impuestas para el proyecto o producto de software a desarrollar. Dentro de las
restricciones deben definirse las condiciones de confiabilidad, disponibilidad, desempeño,
seguridad e integridad, y en general los requerimientos no-funcionales que se le exigirán al
sistema. Esta información influirá significativamente en la definición de la arquitectura del
sistema (por definir en la etapa de diseño).
El diagrama de contexto (referencia) se utiliza para definir los límites y las conexiones entre el
sistema y el medio ambiente que lo rodea. Además, identifica interfaces que permiten comunicar
al sistema con su medio externo. En la información que sale o entra al sistema a través de las
interfaces se utilizan flujos de control, de datos y de materiales. El diagrama de contexto puede
utilizarse como el diagrama que se encuentra en lo mas alto de la jerarquía arquitectónica del
sistema. La Figura 3.2 muestra el diagrama de contexto de un sistema de inscripciones a una
Universidad. El sistema permite a alumnos acceder al sistema mediante la Internet para realizar
su inscripción a sus cursos. El sistema reside en una computadora servidora de web y la
información de los cursos es introducida por los profesores de la universidad.
Figura 3.2 Diagrama de Contexto de un Sistema de Inscripciones.
77
3.4 Definición de los interesados en el sistema
Los interesados en el sistema (“stakeholders”) son personas, grupos de personas o organizaciones
que están involucradas activamente en el proyecto, que son afectadas por sus salidas, o que
proveen entradas al sistema. El proceso de Ingeniería de requerimientos está dominado por
distintos factores personales, sociales y organizacionales, debido a que involucra a distinto tipo
de personas, con distintos conocimientos o provenientes de distintas organizaciones. Así mismo,
las distintas personas involucradas en el proceso pueden tener o no conocimientos técnicos
relevantes al proyecto, y pueden venir de distintas disciplinas técnicas. Este contrasta con otras
etapas del desarrollo, como por ejemplo la etapa de pruebas, en donde el personal involucrado
por lo general comparte el mismo interés y conocimiento técnico, y comparten el objetivo de
demostrar que el sistema cumple con sus especificaciones.
Los interesados deben clasificarse de acuerdo a su actividad y a su perfil. Ejemplos de distintos
tipos de interesados en el sistema son los siguientes:
1. Clientes: Estos normalmente son quienes contratan, financian o autorizan el desarrollo del
proyecto.
2. Usuarios: Estos son aquellos que terminarán operando el software requerido, después de que
el sistema esté completamente desarrollado.
3. Ingenieros de Desarrollo de Software: Son todos aquellos involucrados en el desarrollo del
software, en cualquiera de sus etapas (diseño, implementación, pruebas o mantenimiento).
4. Ingenieros del cliente. Son todos aquellos especialistas que asesoran o trabajan dentro de la
organización del cliente y que ayudan a especificar los detalles técnicos de la aplicación a
desarrollar.
5. Administradores o jefes del proyecto de software: Son aquellos que dirigen y/o
administran el proyecto de software.
6. Contratistas externos. Son aquellos desarrolladores externos a quienes se les contrata para
realizar una parte del sistema.
7. Reguladores externos: es todo aquel personal que indirectamente verifica que todo
reglamento o ley que aplique al desarrollo del proyecto se cumpla.
78
En general, en la Ingeniería de Requerimientos es importante identificar a todos los involucrados
en el proceso a fin de obtener y validar el proceso. El no llevar a cabo esta identificación, puede
llevar a diseñar el sistema sin contar con toda la información o sin contar con la valiosa opinión
de alguno de los actores que participan en el proceso.
El perfil de los interesados en el sistema debe incluir la siguiente información:
1. El valor o beneficio que recibirá el interesado del producto o del sistema y la forma en que el
producto satisfacerá al interesado. Los beneficios que podría obtener el interesado podrían
ser:
b. Mejoras en su productividad.
c. Reducción de trabajo redundante.
d. Ahorro de costos.
e. Mejoras en el proceso del negocio.
f. Automatización de tareas que previamente se realizaban de forma manual.
g. Aprendizaje de nuevas tareas.
h. Cumplimiento de estándares o normas.
i. Mejoras en la calidad con respecto a otros productos o sistemas.
2. Su disposición o actitud hacia el sistema.
3. La forma en como el sistema afectará a su trabajo en la organización.
4. Su rol o función en la organización.
Además de clasificar a los interesados en el sistema, es necesario proveer detalles acerca de los
tipos de usuarios que utilizaran directamente el sistema. A los usuarios de sistema de software se
les puede clasificar de acuerdo a los siguientes aspectos:
•
La frecuencia con la que usan el sistema.
•
Las funciones que usan del sistema y su frecuencia.
•
La experiencia en el dominio de la aplicación y su experiencia con otros sistemas similares.
•
El tipo de uso que le dan al sistema (operación, administración, mantenimiento, supervisión).
79
•
Las tareas que desempeñan en soporte de los procesos de la organización.
•
Sus privilegios de acceso o niveles de seguridad (tales como usuario invitado, administrador o
usuario de nivel interno).
•
Tipo de usuarios necesario para operar el sistema (persona, grupo de personas, robot, o otra
computadora).
La clasificación de usuarios del sistema ayuda a la obtención de requerimientos ya que define a
detalle las características de los usuarios y sus actividades. Es importante distinguir a los usuarios
que utilizan el sistema con frecuencia para sus labores en la organización de aquellos que lo
utilizan esporádicamente. Esto no solo permitirá definir su rol en la organización sino también su
nivel de experiencia. Algunos usuarios por su inexperiencia, solo utilizan cierta funcionalidad del
sistema que les es de mayor utilizad ó la cual conocen mejor. Otra parte de la funcionalidad del
sistema no la utilizan, por que la desconocen ó por que no la encuentran útil. Obtener esta
información permite definir con mayor precisión los requerimientos y diseñar interfaces de
usuario mas útiles y fáciles de usar.
Algunos usuarios del sistema no llegan a utilizar el sistema, sin embargo se ven indirectamente
influenciados por su operación. Este personal pueden ser los encargados de su mantenimiento,
los administradores del sistema o el personal de supervisión. Este personal es importante por que
permite verificar que las labores de los usuarios se lleven a cabo de forma eficiente y sin errores.
Algunos otros usuarios solo reciben los beneficios o los productos que entrega el sistema y
forman parte de la organización. Este tipo de personas pueden ser los integradores ó los
ingenieros de producto, los cuales se encargan de usar los productos que produce el sistema de
software. Algunos usuarios pueden tener mayor nivel de autorización para el acceso a ciertas
funciones o niveles de operación del sistema de software.
Por otro lado, los usuarios no necesariamente tienen que ser personas. Algunos sistemas se
operan de forma automática, mediante otros sistemas de cómputo, mediante robots o de forma
híbrida computadora-humano. Muchos sistemas de software industriales operan en ambiente con
un alto nivel de ruido, contaminación o de calor, por lo cual se requiere de un sistema
automatizado para operar el sistema.
80
3.4.1 Roles y Actividades
En general, los interesados involucrados en el proceso de Ingeniería de requerimientos son
personas afectadas por este proceso a quienes se les puede identificar por sus roles en la
organización. Usualmente es útil cuando se modela un proceso, asociar las actividades del
proceso con los roles del personal que está involucrado en el proceso.
Los roles del personal y sus correspondientes actividades dentro del proceso de Ingeniería de
Requerimientos se describen en la Figura 3.3.
Rol
Analista
de
Requerimientos,
Experto
Actividades
del Este personal estará a cargo de entender el
dominio, usuario
problema y su definición.
Analista de requerimientos, usuario
Están a cargo de especificar a detalle los
requerimientos.
Ingeniero
de
desarrollo
de
software, Están a cargo de seleccionar posibles prototipos
administrador del proyecto
del sistema.
Ingeniero de requerimientos, Ingeniero de Estarán a cargo de desarrollar el sistema o
desarrollo de software
prototipo.
Usuario, experto del dominio, analista de Estarán a cargo de evaluar el sistema final o
requerimiento e Ingeniero de Desarrollo
prototipo.
Figura 3.3. Roles en el proceso de Ingeniería de Requerimientos
81
3.5 Recolección de Requerimientos
Después de la descripción del problema por el cliente, el analista de requerimientos debe escribir
en un documento inicial (DDR), una lista de requerimientos específicos, que describen a detalle
el problema planteado por el cliente. Este documento debe ser analizado para darle consistencia
durante la fase de análisis de requerimientos. De forma general los requerimientos provienen de
las siguientes fuentes:
1. Los interesados en el sistema. Todos los interesados en el sistema, principalmente el cliente
y los usuario son quienes mas información deben proporcionar sobre los requerimientos.
2. El dominio de la aplicación. El dominio de la aplicación es una fuente de información que
permite ubicar el contexto del desarrollo. Permite obtener información acerca de las
características de funcionamiento del sistema de forma general, y permite establecer sus
restricciones.
3. La organización. No puede validarse la información de los requerimientos a no ser que esta
esté de acuerdo a los estándares utilizados en la organización. De hecho la organización
también provee algunos de los requerimientos funcionales y principalmente los nofuncionales,
por ejemplo, los requerimientos de calidad, confiabilidad y seguridad del
sistema.
Los requerimientos obtenidos deben de estar de acuerdo con los objetivos y planes de la
organización y aquellos requerimientos que no ayuden a lograr estos objetivos no deben ser
incluidos. Las fuentes de donde se obtienen los requerimientos dependen de la naturaleza del
producto a desarrollar y del ambiente de desarrollo. La necesidad de obtener los requerimientos
de múltiples fuentes implica que siempre debe existir una comunicación fluida e intensa entre
cliente/usuarios y desarrolladores.
A continuación se describen algunas de las fuentes potenciales y las formas de obtención de
requerimientos.
•
Entrevistas y discusiones con clientes y usuarios. La forma mas obvia de obtener
información acerca del sistema de software a desarrollar es directamente con el cliente. El
cliente describe una necesidad y el desarrollador debe saber interpretar éstos requerimientos y
analizar su factibilidad. El cliente por lo general define los requerimientos de forma general,
pero no siempre define la funcionalidad. Todo software tiene una cierta funcionalidad que lo
82
define. El desarrollador debe ser capaz de traducir los requerimientos del cliente en funciones
y restricciones que debe incluir el sistema por construir.
•
Documentos que describen sistemas actuales o productos de la competencia. La mayoría
de las organizaciones cuentan con documentos que describen los objetivos que persigue la
organización, los procedimientos y procesos que llevan a cabo para cumplir con estos
objetivos, así como los roles que desempeñan cada persona que labora en la organización. Así
mismo, la organización puede contar con documentos que describen los productos o sistemas
de otras organizaciones que producen productos similares.
•
Reportes de problemas técnicos del sistema actual. En muchas organizaciones, se
almacenan documentos que reportan problemas técnicos o errores de operación del sistema
actual. Estos documentos, pueden ser una fuente mediante la cual el cliente justifica la
necesidad de un nuevo sistema. Así mismo, estos documentos permiten a los desarrolladores,
conceptualizar el sistema requerido, su entorno de operación, y las habilidades del personal
que opera estos sistemas.
•
Estudio de la organización ó cuestionarios de usuarios. Para poder construir cualquier
sistema de software, es necesario estudiar el medio ambiente sobre el cual estará en
operación. Este estudio permitirá comprender mejor los requerimientos planteados por el
cliente y ayudará a diseñar un sistema que cumpla mejor con los objetivos de la organización,
y que se adapte mejor a las habilidades de los usuarios.
•
Observación de los usuarios futuros y de su medio ambiente. Una fuente importante de
datos proviene de los usuarios futuros del sistema. Los usuarios son quienes tienen la
experiencia en la operación de los procesos de la organización. Esta experiencia puede ayudar
a los desarrolladores a construir un sistema más fácil de usar y que les permita incrementar su
productividad. La información obtenida de los procesos de trabajo de los usuarios, permitirá
validar la información recolectada de los clientes, e identificar potenciales conflictos y nuevos
requerimientos. El no observar a los usuarios en la operación de los sistemas actuales, llevará
muy probablemente a construir un sistema con funcionalidad incompleta o difícil de usar.
También es necesario estudiar las habilidades individuales de cada usuario, a fin de diseñar
un sistema que mejor se adapte a sus capacidades.
•
Análisis de los escenarios de las tareas del usuario. La identificación de las tareas que el
usuario necesita llevar a cabo con el sistema, permitirá al analista de requerimientos obtener
83
algunos de los requerimientos funcionales. De esta identificación debe también obtenerse
toda la información consumida y generada por la tarea y sobre las fuentes de la información.
•
Análisis de Eventos y Respuestas. Este análisis permitirá identificar los eventos externos a
los cuales el sistema debe reaccionar y sus respuestas correspondientes. Este análisis es
especialmente útil en sistemas que deben responder a eventos externos y que requieren de
respuestas en plazos de tiempo cortos o en tiempos bien definidos.
3.6 Clasificación de Requerimientos
Es un hecho que cuando se recolectan los requerimientos de los clientes o los usuarios, estos no
los entregan de forma organizada o clasificada. El analista de requerimientos debe obtener los
requermientos y clasificarlos en varias categorías de acuerdo a la información que recibe de las
distintas fuentes, de forma que estos posteriormente puedan ser analizados eficientemente.
Requerimientos
del negocio
Ideas y
soluciones
Casos de
y escenarios
Definiciones
de datos
Reglas del
negocio
Restricciones
Requerimientos
de interfaces
externas
Atributos de
Calidad
Requerimientos
funcionales
y no-funcionales
Figura 3.4 Clasificación de los requerimientos.
84
En capítulos anteriores hemos dado distintas clasificaciones de los requerimiento, sin embargo
aquí daremos una clasificación general que permita distinguir los requerimientos capturados. La
Figura 3.4, muestra 9 de éstas posibles categorías.
La información que no se encuentre dentro de esta clasificación no debe considerarse, y puede ser
lo siguiente:
•
Un requerimiento no relacionado con el desarrollo de software, por ejemplo la necesidad de
entrenar a los usuarios en el nuevo sistema.
•
Una restricción del proyecto de desarrollo, por ejemplo el costo o el plan de ejecución (que no
se trate de restricciones de diseño e implementación).
•
Una suposición.
•
Un requerimiento de datos, el cual puede ser asociado con la funcionalidad del sistema, por
ejemplo que los datos deben ser almacenados en la computadora.
•
Información adicional de contexto histórico o informativo.
La siguiente clasificación proporciona algunas frases que permitirán identificar cada
requerimiento de acuerdo a la siguiente clasificación (referencia Libro Wiegers: chapter 7):
1. Requerimientos de negocio: Todo lo que describa beneficios de mercado, financieros o del
negocio para los clientes o su organización, y que sean obtenidos del producto de software.
Las frases que describen algunos de estos requerimientos son los siguientes:
•
Incrementa el porcentaje del mercado en 30 %.
•
Ahorra 20% en costos de producción por la automatización instalada.
•
Ahorra 40% en costos de mantenimiento.
2. Casos de uso y escenarios: Los casos de uso son descripciones generales de metas del cliente
o tareas del negocio que los usuarios deben realizar. Un patrón único del caso de uso se
conoce como escenario. Es necesario trabajar con los clientes y usuarios para extraer los
escenarios, y de aquí conceptualizar los casos de uso. Los casos de uso se pueden obtener
mediante la descripción de los flujos de trabajo de los procesos de negocio del cliente. Otra
forma de obtener los casos de uso es preguntando a los usuario sobre la descripción de sus
tareas o funciones. Un usuario que dice: “Tengo que <hacer algo>” esta probablemente
describiendo un caso de uso. Algunos ejemplos de casos de uso son los siguientes:
85
•
Yo necesito imprimir una etiqueta de correo para el paquete.
•
Yo necesito administrar una cola de reactivos químicos que esperan ser analizados.
•
Yo necesito calibrar las maquinas para control numérico.
Mas detalles de los casos de uso y los escenarios se describen mas adelante en la sección de
técnicas de obtención de requerimientos.
3. Reglas del negocio: Cuando un cliente dice que solo algunas clases de usuarios realizan
alguna actividad bajo condiciones especificas, podría estar describiendo una regla del
negocio. Se podrían derivar algunos requerimientos funcionales mediante estas reglas, pero es
importante considerar que éstas reglas no definen requerimientos no funcionales. De hecho
las reglas de negocio definen hechos, restricciones, acciones que habilitan funciones,
formulas de cómputo o inferencias. Las siguientes son algunas de las frases que sugieren
reglas del negocio:
•
Debe de seguir el estándar de acuerdo con alguna ley o política de la organización.
•
Si <algunas condiciones ocurren>, entonces <lo siguiente ocurre>.
•
Debe ser calculado de acuerdo a las siguientes formulas.
4. Requerimientos funcionales: Los requerimientos funcionales describen el funcionamiento
que el sistema observará bajo ciertas condiciones y las acciones que permitirá el sistema
llevar a cabo a los usuarios. Varios ejemplos de clasificación de requerimientos funcionales
fueron presentados en el capitulo anterior. A continuación se describen algunos ejemplos de
frases de requerimientos funcionales obtenidas de usuarios:
•
Si el voltaje rebasa los 20 v. enciende la alarma amarilla.
•
El sistema envía un e-mail de confirmación cuando recibe cualquier e-mail.
•
El sistema debe ordenar los productos del inventario en orden alfabético.
Algunos de los requerimientos funcionales podrían ser opcionales. Es decir que podrían
implementarse solo en el caso de que el tiempo o el presupuesto asignado lo permitiera. Los
requerimientos opcionales suelen presentarse con frecuencia, ya que es difícil predecir los
tiempos y los costos de desarrollo. Podrían considerarse también, a un precio por separado o
ser ignorados.
86
5. Atributos de calidad: Los atributos de calidad son requerimientos no-funcionales, los cuales
indican la forma en que el sistema debe realizar alguna actividad. Estos atributos se obtienen
de escuchar algunas frases o palabras que describen el comportamiento del sistema, tales
como: rápido, robusto, seguro, confiable, o eficiente. El analista de requerimiento tendrá que
estar de acuerdo con el cliente sobre el significado de estos términos de forma que se eviten
ambigüedades o descripciones subjetivas.
6. Requerimientos de interfaces externas: Los requerimientos de esta clase definen
conexiones entre el sistema y el mundo externo. Estas interfaces pueden ser interfaces de
usuarios, interfaces de hardware o software o redes de conexión. Las frases que indican que
se está describiendo una interfase externa podrían ser las siguientes:
•
Las señales de voltaje se leen de los convertidores analógico-digital.
•
Los mensajes se envían a través de la Internet.
•
El software debe controlar el tablero de diagramas eléctricos.
•
Los archivos recibidos electrónicamente deben leerse del disco externo
•
El usuario debe poder ver paginas de web amigables.
7. Restricciones: Las restricciones de diseño e implementación restringen las opciones del
desarrollador. Existen áreas y casos particulares en donde las restricciones son bastante
obvias. Por ejemplo, en aplicaciones de sistemas basados en web, es importante que el
servidor designado reciba peticiones de varios clientes de forma concurrente y las procese en
un tiempo limitado. Otro ejemplo son las aplicaciones de sistemas empotrados (“embedded”),
en donde es importante tener en cuenta las restricciones de peso, potencia, tamaño, y
limitaciones de memoria. Es importante, de acuerdo al dominio de la aplicación, dar
significado a cada restricción impuesta, verificando su origen y su valides. Hay algunas
restricciones mas severas que otras, por lo que en todo momento debe de verificarse su
valides y debe identificarse claramente cuando la restricción es claramente una limitación y
no una meta a seguir. Asignar demasiadas restricciones o restricciones innecesarias al
sistema, impone un límite a la funcionalidad del sistema y puede bloquear algún
requerimiento importante. Por otro lado, asignar pocas restricciones pueden hacer que el
sistema se salga de control y que acepte cualquier estado de funcionalidad sin ninguna
verificación. Es importante por lo tanto validar toda restricción y verificar que sea realista.
87
Las siguientes son ejemplos de algunas restricciones descritas por el cliente o el usuario:
•
Los archivos recibidos no deben exceder los 10 Mbytes.
•
La Base de Datos debe manejar archivos en formato relacional.
•
El envío de paquetes en la red, debe de usar encriptación de 128 Bits.
Otras frases que describen restricciones al diseño podrían ser las siguientes:
•
El software debe ser escrito en lenguaje Java.
•
El manejador de bases de datos a utilizar debe ser Oracle.
•
El sistema debe soportar el browser de Explorer.
Es importante distinguir entre las restricciones impuestas al sistema y las restricciones
impuestas al desarrollo.
8. Definiciones de datos: Las definiciones de datos permiten identificar formato de los datos o
archivos, rango de valores permitidos, valores por defecto, o estructura la base de datos.
Estas definiciones las puede proveer el cliente o pueden ser abstraídas por el analista (o por
cualquier desarrollador). Algunos ejemplos de definiciones de datos pueden ser las siguientes:
•
Los números enteros capturados no deben sobre pasar el valor de 10,000.
•
El numero de asientos inicial a vender por la aerolínea debe ser 400.
•
El valor de temperatura limite es de 40 grados centígrados.
9. Ideas de solución: Mucho de lo que los clientes presentan como requerimientos podría
considerarse mas bien como ideas de solución. Algún cliente que describe como debería
comportase el sistema ante el operador, tal vez solo está describiendo sus ideas sobre posibles
soluciones. Las ideas de solución podrían derivar en requerimientos, si estas son validadas y
son factibles de implementar, pero en otras ocasiones estas solo podrían ser alternativas de
diseño. Por ejemplo, un cliente podría indicar que para proporcionar seguridad al sistema ante
ataques externos, este debe pedir un pasword, o podría construirse un “firewall” o hacer que
los datos usen encriptación. En este caso, el cliente esta dando ideas sobre posibles soluciones
al problema de añadir seguridad al sistema.
88
3.6.1 Identificación de los Elementos del Sistema
Otra clasificación de los requerimientos del sistema puede darse mediante la identificación de los
elementos que la componen. Una vez ubicados los limites del sistema mediante su diagrama de
contexto, es importante identificar cada elemento que compone al sistema y sus características.
Los elementos del sistema son los siguientes:
1. Entradas al sistema: describen no solo el identificador y el contenido de la entrada, sino
también todos los detalles de funcionalidad de los dispositivos de entrada. Este elemento
puede ser muy complejo e involucrar dispositivos de manipulación, como ratón, joystick,
dispositivos para apuntar a la pantalla, teclados o superficies sensibles al tacto. Los
dispositivos de entrada como la pantalla o teclados, pueden ser muy complejos, como los que
existen en aplicaciones de multimedia, juegos por computadora o aplicaciones robotizadas de
la industria.
2. Salidas del sistema: describen los dispositivos de salida, que pueden ser dispositivos de
video o audio, así como la funcionalidad de los mismos.
3. Funciones del sistema: describen el mapeo de las entradas a las salidas, y sus distintas
combinaciones. Así mismo describen, los comandos que requiere cada función del sistema.
4. Atributos del sistema: describen los requerimientos no-funcionales necesarios para que el
sistema opere correctamente, como la confiabilidad, la usabilidad, la disponibilidad, la
mantenibilidad o el desempeño.
5. Atributos del ambiente del sistema: describe otros atributos requeridos del sistema, tales
como la máxima carga permitida, máxima temperatura permitida, restricciones de operación,
o compatibilidad.
89
3.7 Características de calidad de los requerimientos
Muchas de las características de calidad de los requerimientos han sido conocidas desde hace
muchos años, sin embargo aun hoy muchos proyectos carecen de algunas de éstas características
por lo cual producen productos de software con poca calidad. Para mejorar las características de
calidad de los requerimientos es necesario detallar los conceptos que permiten mejorar la calidad
de los requerimientos de software.
La calidad de los requerimientos está dada de acuerdo a sus características. Dicha calidad
permitirá garantizar a los desarrolladores y clientes su entendimiento y utilización. Estas
características son:
1. Entendible. Un requerimiento es entendible si es fácil de leer y entender. Su redacción
debe ser simple y clara para aquellos que lo consulten en un futuro. Con frecuencia los
requerimientos son definidos por desarrolladores que utilizan conceptos y terminología
técnica difícil de entender por otros interesados.
2. Necesario. Un requerimiento es necesario si su omisión provoca una deficiencia en el
sistema a construir y además en su capacidad. Representa características físicas o un
factor de calidad que no pueden ser reemplazados por otras capacidades del producto o
del proceso.
3. Consistente. Un requerimiento es consistente si no es contradictorio con otro
requerimiento. Un requerimiento inconsistente será muy difícil de implementar. Para
asegurar la consistencia de un requerimiento es útil verificar si cada requerimiento es
consistente con sus fuentes, y si es consistente con otros requerimientos y no los
contradice.
4. No ambiguo. Un requerimiento no es ambiguo cuando tiene una sola interpretación. El
lenguaje usado para su especificación no debe causar confusión al lector. Para que un
requerimiento no sea ambiguo, este debe ser claro y preciso, objetivo y entendible.
5. Completo. Un requerimiento es completo si no necesita ampliar detalles en su redacción,
y proporciona toda la información suficiente para su comprensión. Es relativamente fácil
omitir información cuando se obtienen requerimientos, y con ello hacer que estos resulten
incompletos. Además, es difícil verificar que cada requerimiento es completo ya que
90
requiere dedicar tiempo, presupuesto y esfuerzo adicional, lo cual no siempre está
disponible en todo proyecto.
Para asegurar que un requerimiento es completo se requiere verificar si este es autocontenido, sin información faltante y si este es realmente un solo requerimiento. En otro
caso, un requerimiento podría descomponerse en múltiples requerimientos. Además es útil
verificar que cada requerimiento contenga toda la información necesaria relevante, que no
requiere mayor clarificación o ampliación, y que provee la suficiente información como
para evitar ambigüedad y confusión (referencia: paper specifying good requirements:
firesmith).
6. Verificable. Es verificable cuando puede ser cuantificado de manera que nos permita
hacer uso de métodos de verificación (tales como inspección, análisis, demostración o
pruebas) para garantizar que cumple sus propósitos. Los requerimientos deben cumplir
con las necesidades de los interesados. Para asegurar que un requerimiento es verificable
es útil asegurar que cada requerimiento es lo que los clientes y usuarios realmente
necesitan.
7. Correctos. Los requerimientos son correctos si estos describen lo que el cliente o usuario
indican. Estos deben ser revisados por el cliente y el desarrollador, para asegurar que no
tienen errores. Los defectos en los requerimientos naturalmente llevarán a producir
defectos en el diseño y en la implementación. Para asegurar que algún requerimiento es
correcto es necesario verificar que es semánticamente correcto, que cumple con alguna de
las necesidades de los interesados, y que está correctamente escrito.
8. Reales. Todos los requerimientos deben ser revisados para asegurar que su
implementación es posible en el sistema. Esta característica también define si un
requerimiento es factible. Los requerimientos no tienen valor si no pueden ser
implementados. Si no existe a tecnología, el personal, la experiencia o el presupuesto para
implementarlo no será factible.
9. Rastreables. Los requerimientos pueden ser rastreables hacia atrás y hacia delante.
Rastreable hacia atrás significa que para cada requerimiento se conoce su origen.
Rastreable hacia delante significa que todo requerimiento está escrito de tal forma que
facilita la referencia a los requerimientos con los que se relaciona.
91
10. Modificable. Un requerimiento es modificable si permite realizar cambios de manera
fácil, completa y consistentemente.
11. No redundantes. No deben existir dos requerimientos que definan funciones iguales o
similares, de otra forma estaríamos observando un requerimiento redundante.
3.8 Factores
que
llevan
a
realizar
cambios
en
los
requerimientos
Los cambios en los requerimientos pueden ocurrir en cualquiera fase del ciclo de desarrollo del
software. Aun después de que el sistema entra en operación, pueden darse cambios en los
requerimientos. Estos cambios pueden ser inevitables y no necesariamente son el resultado de
una pobre práctica de la Ingeniería de Requerimientos, sino mas bien podrían ser el resultado de
los siguientes factores:
1. Errores en los requerimientos (conflictos e inconsistencias). A medida que los
requerimientos son analizados e implementados, los errores e inconsistencias deben ser
descubiertos y corregidos. Estos problemas pueden descubrirse durante las etapas de análisis
o después en las posteriores etapas del desarrollo.
2. Evolución del conocimiento del sistema del cliente/usuario o del analista. A medida que
los requerimientos se desarrollan, los clientes/usuarios o los analistas pueden entender mejor
el sistema y por lo tanto solicitar cambios en los requerimientos.
3. Problemas técnicos, de planificación o de costos. Pueden aparecer distintos problemas al
implementar algún requerimiento. Este requerimiento puede ser muy costoso de implementar
o puede tomar bastante tiempo para su implementación.
4. Cambios en las prioridades. Las prioridades del cliente pueden cambiar durante el
desarrollo del proyecto y pedir cambios. Esto puede deberse a cambios en la organización,
cambios en el ambiente operacional del producto, o cambios en el personal.
5. Cambios en el ambiente. El ambiente en el que se instalará el sistema puede cambiar su
estructura, lo cual demandará cambios en los requerimientos para mantener compatibilidad.
6. Cambios organizacionales. La organización que usará el sistema puede cambiar su
estructura y sus procesos lo cual demandará cambios en los requerimientos.
92
7. Poco involucramiento del cliente o del usuario. Los clientes con frecuencia no comprenden
por que es tan importante trabajar frecuentemente junto con el analista para definir con
precisión los requerimientos y asegurar su calidad. En ocasiones los clientes creen que en
pocas reuniones han sido ya capaces de transmitir toda la información necesaria acerca del
sistema que se desea construir. Sin embargo, los desarrolladores pueden no tener claro
muchos aspectos y requerir mas interacción. En ocasiones los clientes no están muy
disponibles o se encuentran en otras ciudades y la interacción con ellos se vuelve
problemática. Los clientes pueden creer que al escribir un documento en donde describen sus
necesidades los libera de perder su tiempo con los desarrolladores en la especificación. Sin
embargo, es claro que a pesar de que este documento esté muy completo (de acuerdo a la
definición del cliente), se pueden requerir múltiples entrevistas con el cliente a fin de aclarar
cualquier duda acerca de la definición de los requerimientos. En proyectos en donde existe
poca interacción con el cliente puede llevar a el descubrimiento tardío de requerimientos que
necesariamente provocarán retrasos en la entrega del software.
Es importante mencionar también que existen otros factores que contribuyen a que los procesos y
los requerimientos en si observen cierta variabilidad.
1. Madurez técnica. Las técnicas y métodos usados en el proceso de Ingeniería de
Requerimientos pueden cambiar y evolucionar conforme las tecnologías de cómputo y
sistemas evolucionen. De esta forma, los cambios tecnológicos podrían causar alteraciones a
los requerimientos.
2. Cultura organizacional. La cultura organizacional tiene un efecto importante en todos los
procesos de negocio, por lo cual cualquier cambio en la organización podría provocar
cambios en los requerimientos.
3. Dominio de la aplicación. Esta influye sustancialmente a la variabilidad de la aplicación, ya
que distintas aplicaciones podrían requerir distintos tipos de procesos.
4. Movimientos de personal. Los cambios y salidas del personal de la organización que
desarrolla el software pueden causar una fuerte influencia en el desarrollo. Si las personas
desarrollaban alguna actividad importante, podría ser que su salida produzca considerables
retrasos en la entrega del software. Además, esto podría causar cambios importantes en los
requerimientos debido a que las habilidades del personal que dejo la organización podrían no
ser fácil de encontrar, y por lo tanto el software podría sufrir limitaciones.
93
3.9 Dificultades para definir los requerimientos de software
Para conseguir un sistema de software de calidad se debe iniciar con la elaboración de
requerimientos correctos y precisos. La Ingeniería de Requerimientos es un proceso muy
complejo debido a la naturaleza y a la diversidad de ambientes de los sistemas. Existen una gran
variedad de dificultades a que se enfrentan los clientes y los analistas para lograr la obtención y
especificación de los requerimientos del sistema.
Algunas de estas dificultades (además de algunas ya mencionadas anteriormente) son las
siguientes.
1. Requerimientos confusos, vagos o ambiguos. Los usuarios o clientes del sistema no
siempre pueden describir con precisión y claridad lo que desean o necesitan. El termino
requerimientos puede tener distintos significados para distintas personas. Por parte del cliente,
un requerimiento puede ser expresado como un producto definido de forma muy general, o un
objetivo de su organización, mientras que para un desarrollador puede consistir en un diseño
detallado de las interfaces del usuario. Los requerimientos que provee el cliente en muchas
ocasiones representan ideas de la solución a su problema. En general un síntoma de que existe
confusión sobre los requerimientos es que distintas personas (clientes, usuarios, analista y
desarrolladores) tengan distinta visión, opinión o conocimiento sobre algún requerimiento o
función que debe realizar el sistema. Otro síntoma de este problema, se ve cuando los
usuarios proveen los requerimientos, pero los desarrolladores no tienen claro como estos
pueden implementarse. La ambigüedad es otra característica desastrosa en los requerimientos.
En la definición de un proyecto de software, la ambigüedad se descubre cuando un
requerimiento tiene distintos significados (para una o para distintas personas) y no se está
seguro de cual de todos estos es el correcto. Una forma de ambigüedad similar a ésta, se
presenta cuando distintos lectores interpretan un mismo requerimiento de distintas formas.
Cada lector concluye que su interpretación es la correcta y la ambigüedad permanece hasta
tiempo después; cuando su solución es mas costosa. Así mismo, puede detectarse cuando un
requerimiento es vago o incompleto cuando en el documento de requerimientos no existe
información que el cliente necesita para entender este requerimiento. Si los requerimientos no
se verifican para comprobar que lo dicho por los clientes está contenido en el documento, es
bastante probable que los requerimientos no estén suficientemente bien definidos. Los
desarrolladores pueden asumir incorrectamente que lo que capturaron de las necesidades del
94
cliente es definitivo y completo. Sin embargo esta suposición puede ser muy riesgosa. Es
necesario verificar que esto se lleva a cabo. El ultimo síntoma que lleva a determinar que los
requerimientos son vagos, se presenta cuando los desarrolladores hacen frecuentes preguntas
a los analistas sobre la forma de implementar los requerimientos y de su significado. En
algunos casos, en realidad los diseñadores o quienes programan el sistema hacen suposiciones
o tienen que adivinar que es lo que un requerimiento realmente define. Las implicaciones de
estas suposiciones o adivinanzas puede no notarse hasta que el sistema es probado, o peor aun
cuando este es puesto en operación. En este punto, se requerirá regresar varias etapas hacia
atrás en el desarrollo para reparar los requerimientos mal interpretados. Muchas de estas
anomalías se resuelven mediante el análisis de los requerimientos y su correspondiente
validación (los cuales serán descritos en los próximos capítulos).
2. Poca familiaridad con los términos técnicos. La descripción de las necesidades del cliente
pueden estar expresadas utilizando sus propios términos y suposiciones con las cuales los
desarrolladores pueden no estar familiarizados. Por otro lado, los desarrolladores tienen
también su propio lenguaje, y en la mayoría de las veces creen estar hablando en los mismos
términos con el cliente, cuando en realidad proveen significados diferentes al mismo término.
Este fenómeno, ocasiona que los requerimientos no sean claros y que incluso lleguen a ser
definidos de forma incorrecta, muy alejada de lo que el cliente realmente requiere. En este
punto, es recomendable que el cliente se auxilie de sus ingenieros para la definición de los
requerimientos y también con el fin de lograr una mejor comunicación con el analista de
requerimientos.
3. Distintas percepciones de un mismo requerimiento. Diferentes usuarios pueden tener
visiones contradictorias o con distintas prioridades de un mismo requerimiento. Así mismo,
pudiera existir confusión en la definición de los requerimientos haciendo que los
requerimientos funcionales, no funcionales y las metas del sistema estén descritos de forma
confusa y no claramente separada.
4. Incapacidad de transmitir los requerimientos o la problemática. Los usuarios conocen su
trabajo y su sistema actual, pero no siempre pueden describir sus problemas a personas
externas.
5. Demandas poco realistas. Los usuarios con frecuencia no conocen realmente lo que desean
del sistema, y piden demandas irreales debido a que ignoran el costo de sus requerimientos.
95
Esto puede deberse a diversos factores. Por ejemplo, las demandas poco realista pueden
derivarse del hecho de que los clientes encargados de hablar con los analistas o con los
desarrolladores pueden no tener experiencia directa en hacer el trabajo que hacen los usuarios
del sistema actual. Así mismo, esto puede deberse también a que los desarrolladores conocen
soluciones al sistema, pero no siempre saben como afectarán las estas soluciones a las
actividades de negocio de los clientes. Finalmente, si la comunicación no se da de forma
fluida o si no está cuidadosamente organizada y fomentada entre el equipo de desarrollo y los
clientes, puede suceder que los requerimientos sean mal entendidos, que terminen
incompletos o que sean poco realista.
6. Que no se entienda el carácter dinámico y evolutivo de los requerimientos. El entorno
económico y de negocio en el que se desarrolla el software es dinámico y la importancia de
ciertos requerimientos puede cambiar. Después que los sistemas se instalan a satisfacción del
cliente, estos inevitablemente tenderán a demandar cambios a fin de permanecer útiles y
eficientes a la organización. Una vez que se realiza la instalación del sistema, nuevos
requerimientos pueden emerger y requerimientos existentes demandarán cambios. La
tecnología de la computación presenta cambios demasiado frecuentes y los sistemas de
software deben compensar estos cambios adaptándose y realizando los cambios que permitan
no quedarse atrás. Así mismo, con el uso del sistema, es posible que algunos errores no
detectados durante el desarrollo emerjan y tengan que ser corregidos. Es un hecho que no
existen sistemas de software perfectos, lo cual causará constantes cambios en el sistema ya
instalado. La evolución del software y su consecuente mantenimiento son actividades las
cuales que el cliente debe conocer y estar siempre de acuerdo en llevar a cabo. De esta forma,
es un hecho que la relación del cliente con los desarrolladores del sistema no termina cuando
el sistema es terminado y aceptado. Podríamos comparar un sistema de software con un
automóvil. Una vez que un automóvil es construido y comprado por alguna persona, este
tendrá que ir al taller mecánico en innumerables ocasiones para realizar distintos tipos de
reparaciones, mantenimiento y cambio de partes. No es posible decir que un automóvil nunca
terminará en algún taller de mecánico durante algún momento de su vida útil. Lo mismo
ocurre con cualquier sistema de software. Lo que ocurre es que en la actualidad no existen
talleres para mantenimiento o reparación del software, y los clientes deberán recurrir a los
desarrolladores originales o contar con su propio equipo de ingenieros de mantenimiento de
software. La inversión que distintas organizaciones realizan en sistemas de software en la
96
actualidad es de millones de dólares, y no invertir en mantenimiento y evolución puede llevar
a la organización a desechar continuamente el software que tantos esfuerzos costó desarrollar.
De hecho distintos estudios indican , que el 90 % del costo del software se dedica a el
mantenimiento y la evolución de los sistemas de software.
7. Mínimas especificaciones. En muchas ocasiones la definición de los requerimientos es
incompleta. Es decir que no satisface completamente las necesidades del usuario. En muchos
proyectos de software, existe una gran presión por terminar a tiempo y dentro del presupuesto
asignado. Esto obliga a especificar, diseñar, codificar o realizar pruebas lo mas rápido
posible. Todo proyecto que es desarrollado bajo presión siempre termina incompleto, con
errores o con poca satisfacción para el cliente o usuario. Este puede ser un error de los
clientes, si estos no dedican suficiente tiempo a especificar, o del los desarrolladores si no
planearon el proyecto de forma adecuada. Es importante decir que un software con
requerimientos completos puede fallar o presentar deficiencias durante la operación. Pero un
software con requerimientos incompletos no podrá bajo ninguna circunstancia satisfacer las
necesidades del cliente.
Como consecuencia de las dificultades antes descritas, el sistema de software a entregar podría
presentar los siguientes problemas:
•
Los requerimientos no reflejan las necesidades reales de los usuarios o de los clientes. El
cliente y los usuarios podrían no estar satisfechos con el sistema o con algunas de sus
funciones. En consecuencia, podrían no usar (o utilizar con muchas dificultades) algunas
funciones del sistema.
•
Los requerimientos son inconsistentes y/o incompletos.
•
Es caro realizar cambios en los requerimientos después de que estos han sido implementados.
•
Existen malentendidos entre los clientes y los desarrolladores del sistema.
•
El sistema se entrega tarde y los costos exceden a lo originalmente presupuestado.
•
El sistema es ser poco confiable y producir errores durante su funcionamiento.
•
Si el sistema continua en uso, los costos del mantenimiento y de la evolución del sistema
podrían ser bastante altos.
97
3.10 El costo de los requerimientos
En general, el costo de la Ingeniería de los requerimientos depende del tamaño y tipo del sistema
por desarrollar, y también de las actividades que implican los requerimientos en el desarrollo. En
algunos casos los requerimientos no están suficientemente claros y detallarlos lleva bastante
tiempo. En otros casos, los requerimientos cambian o tienden a evolucionar, y esto también
implica costos y tiempos de desarrollo extra. Los estudios llevados a cabo en la actualidad
indican que el costo económico de los requerimientos es del 10 al 15 por ciento del costo total del
desarrollo (referencia). Estas cifras corresponden a un proyecto que es llevado a cabo e
implementado con éxito. Sin embargo, muchos proyectos fallan
o no cumplen con las
necesidades del usuario.
El costo de reparar un error en los requerimientos se ilustra en la Figura 3.5. Los costos de
desarrollo cuando los requerimientos son erróneos es bastante mayor que cuando estos no
requieren ninguna reparación. Además, entre mas avanzada este el desarrollo, el costo de reparar
los requerimientos es más alto. Reparar errores en los requerimientos puede requerir trabajar
nuevamente en el diseño, la implementación y las pruebas. Es mucho más económico reparar un
error o requerimiento ambiguo en la etapa de requerimientos, que hacerlo en la etapa de
programación. El problema es que si se detecta durante la fase de programación que existe un
error en los requerimientos será necesario regresar hacia todas las etapas anteriores a corregirlo y
de nuevo validar los requerimientos.
100
80
60
40
20
0
R equerim ientos
D iseno
C odificación
P ruebas
Fases del D esarrollo
Figura 3.5. Costos relativos de corregir los requerimientos.
98
O peración
3.11 Técnicas de Obtención de Requerimientos
Las técnicas de obtención de requerimientos son aquellas que nos permiten comprender el
dominio del sistema, buscar y recolectar información para definir sus límites y restricciones, e
identificar a las personas interesadas en el sistema. El resultado permite obtener una colección y
clasificación de los requerimientos del sistema, mediante la participación de los clientes y
usuarios.
3.11.1
Entrevistas
La entrevista es una técnica para obtener información mediante una conversación dirigida por los
analistas a clientes y usuarios, con el objetivo de entender el dominio del problema y sus
necesidades. Se basa en un formato de preguntas y respuestas. El desarrollador buscará obtener
las opiniones de los clientes o usuarios entrevistados, sus opiniones del sistema, sus metas
personales, de la organización y de los procedimientos informales.
Existen cinco puntos que deben tomarse en cuenta para preparar una entrevista [10]
•
Lectura de antecedentes. Se debe hacer un previo estudio de antecedentes de los
entrevistados y su ambiente de trabajo, con ello se logrará conocer el lenguaje empleado
dentro de la empresa.
•
Establecer objetivos de la entrevista. Se establecen los objetivos de la entrevista en base a
los antecedentes y la experiencia personal.
•
Selección de los entrevistados. Se entrevista a gente clave de todos los niveles del sistema.
•
Preparación del entrevistado. Se debe de contactar a la persona que se entrevistará con
tiempo para que pueda reflexionar acerca de la entrevista.
•
Selección del tipo y la estructura de las preguntas. Escribir las preguntas que cubran los
aspectos fundamentales del objetivo de la entrevista, eligiendo el tipo y la estructura adecuada
de las preguntas de la entrevista.
Las preguntas tienen ciertas estructuras básicas que se deben conocer. Los dos tipos básicos de
preguntas son abiertas y cerradas.
99
•
Las preguntas abiertas permiten al entrevistado expresar
de manera flexible y en
consideración de su experiencia responder a lo que se le pregunta.
•
Las preguntas cerradas limitan las respuestas disponibles de los entrevistados mediante una
lista de opciones o alternativas de respuestas.
La entrevista puede estructurarse de las siguientes maneras:
•
Estructura de pirámide. En este caso, el entrevistador inicia con preguntas detalladas, del
tipo de preguntas cerradas, y luego realiza preguntas abiertas, de respuestas más
generalizadas.
•
Estructura de embudo. El entrevistador comienza haciendo preguntas abiertas de carácter
general y más adelante va utilizando preguntas cerradas.
•
Estructura de diamante. Combina las estructuras anteriores, el entrevistador comienza de
una manera muy específica, luego examina aspectos muy generales y finalmente llega a una
conclusión muy específica.
Las entrevistas deben registrarse ya sea por un cuaderno de notas o utilizando una grabación. Es
importante que al final de la entrevista se escriba un informe con el fin de asegurar la calidad de
los datos de la entrevista.
3.11.2
Cuestionarios
Es una técnica para obtener información que permite a los desarrolladores del sistema recopilar
opiniones, posturas, conductas y características de los diversos usuarios que son encuestados y
que se encuentran involucrados en la operación del sistema actual o en la implantación de un
sistema nuevo. Los cuestionarios son eficaces si la gente de la organización se encuentra dispersa
o si mucha gente está involucrada en el proyecto de sistema [10]. Al igual que en la entrevista, un
cuestionario puede redactarse usando preguntas abiertas o preguntas cerradas y es importante
usar un vocabulario que refleje el lenguaje de los involucrados en la organización. El uso de
preguntas cerradas en los cuestionarios permite a los analistas medir los resultados mediante
gráficas. Esta técnica suele combinarse con las entrevistas para mejorar la obtención de
información del sistema.
100
3.11.3
Puntos de Vista
En cualquier sistema existen varios tipos de usuarios que tienen diferentes intereses en los
requerimientos del sistema, es decir, existen diferentes puntos de vista para un problema. El
enfoque orientado a puntos de vista toma en cuenta estos diferentes puntos de vista y los utiliza
para organizar y estructurar tanto el proceso de obtención como los requerimientos [2]. Se toma
en cuenta la existencia de diferentes perspectivas y proporciona un esquema para descubrir
problemas con los requerimientos propuestos por diferentes usuarios.
Los puntos de vista pueden ser considerados como:
•
Una fuente o consumidor de datos, son responsables de producir o consumir datos.
•
Un marco de trabajo de la representación, se considera un tipo particular del modelo del
sistema.
•
Un receptor de servicios, son externos al sistema y reciben servicios de este.
Las lluvias de ideas y los puntos de vista orientados a eventos son técnicas que utilizan este
enfoque.
a) Lluvias de ideas
En esta técnica se identifican los servicios potenciales y las entidades que interactúan con el
sistema. Se lleva a cabo mediante una reunión entre el equipo de desarrollo y la empresa que
solicita el software. Las personas involucradas generalmente son los usuarios del sistema y los
administradores. En esta reunión todos expresan sus ideas sobre el problema y la posible
solución. Cada persona participa sin ser interrumpida, las ideas son anotadas dentro de un
diagrama de burbuja en un pizarrón, y no pueden ser criticadas por los demás participantes. La
figura 3.6 demuestra como son capturadas las ideas dentro de los diagramas de burbujas del
sistema SIV. Al finalizar la sesión, se realiza una recolección de ideas sin duplicidad [2].
101
3.11.4
Observación
En la mayoría de las organizaciones se realiza algún trabajo en el cual se involucran distintos
grupos de personas que cooperan para llevar a cabo distintas tareas. La naturaleza de esta
cooperación es a menudo compleja
y varía dependiendo de las usuarios involucradas, del
ambiente físico y de la organización en donde se realiza el trabajo. Los usuarios con frecuencia
encuentran dificultades para expresar la forma en como realizan sus tareas en la organización y la
forma en como cooperan con otras personas, por lo cual son necesarias técnicas y herramientas
para describir las actividades de los usuarios en la organización.
La observación es una técnica en donde el analista se sumerge en el ambiente de trabajo de los
usuarios, para observar el trabajo diario que éstos realizan anotando los aspectos importantes y
observando factores sociales y organizacionales que afecten el sistema. Existen dos enfoques de
esta técnica las cuales son la etnografía y grabar lo observado [11].
Figura 3.6 Lluvia de ideas para el sistema SIV.
102
a) Etnografía
Generalmente los sistemas de información se encuentran dentro de un contexto social y
organizacional en donde los requerimientos del sistema se derivan y se restringen conforme a este
contexto. La etnografía es una técnica que se utiliza para entender estos tipos de requerimientos
sociales y organizacionales. El desarrollador se involucra en el entorno laboral donde se instalará
el sistema para observar y anotar las tareas reales que se llevan a cabo. Esta técnica descubre
requerimientos implícitos que reflejan los procesos reales más que los formales en donde la gente
está involucrada, y permite descubrir los factores sociales y organizacionales que puedan afectar
al sistema [2].
Es difícil detallar la forma de llevar a cabo un estudio etnográfico, sin embargo existen algunas
guías para el uso de esta técnica (referencia libro kotonya y somerville).
1. Asumir que la gente que se está estudiando son buenas en su trabajo y busca formas no
estándares de realizar el mismo trabajo (o la misma actividad). Esa observación permitirá
encontrar la eficiencia desarrollada por los usuarios la cual se debe a su experiencia.
2. Es importante dedicar tiempo a conocer a los usuarios y desarrollar una relación de confianza.
Si los usuarios no confían en quienes los observan, pueden llegar a realizar sus actividades de
forma que oculten sus habilidades o alguna información relacionada con el sistema actual.
Los usuarios pueden desconfiar de los observadores si detectan que el sistema en uso será
transformado o cambiado por otro sistema y que tal vez ellos no serán capaces de seguirlo
usando. A fin de desarrollar confianza entre los usuario y los observadores, en principio los
usuarios deben conocer los objetivos del nuevo sistema y las razones por las que están siendo
observados.
3. Se deben escribir notas detalladas acerca de las actividades de los usuarios y verificadas en
distintos días de trabajo. El observador (etnógrafo) debe sacar conclusiones de su observación
a fin de analizarlas. Esto permitirá conocer a detalle el sistema actual y los requerimientos
que solicita el cliente.
4. Podría ser necesario también entrevistar a los usuarios o sacar video de sus actividades para
complementar las notas.
103
3.11.5
Escenarios
Los escenarios son parte básica de algunos métodos de análisis orientados a objetos, y son
representaciones de la forma en que el usuario interactúa con el sistema. En este esquema se
representan gráficamente las entradas, la salidas, el flujo de datos y el comportamiento del
sistema [11]. Los escenarios pueden agregar detalles a alguna acción mediante el diseño de
ejemplos de interacción entre el usuario y el sistema. Existen dos esquemas para esta
representación: mediante escenarios de eventos ó casos de uso.
a) Escenarios de eventos
Este enfoque se utiliza para documentar el comportamiento del sistema ante eventos específicos.
Los escenarios de eventos incluyen una descripción del flujo de datos y las acciones del sistema,
y documenta las excepciones que pueden ocurrir. Un escenario de evento es una instancia de un
caso de uso, es decir, nos representa una secuencia de sucesos que podrían ocurrir en una
situación dada [2].
En la Figura 3.7 se representa un diagrama de escenario de eventos para un cajero automático, en
donde el flujo normal de eventos es de izquierda a derecha y cada rectángulo indica alguna
acción del usuario. El usuario del cajero automático entra en el sistema introduciendo su tarjeta
de crédito y su número de identificación personal del cliente (PIN). Las flechas de la parte de
arriba de la figura indican acciones de control y muestran con texto las condiciones que deben
cumplirse para que se pueda pasar a la siguiente acción. Por lo tanto, si la tarjeta es válida y el
usuario es valido, entonces el control pasa la etapa de “seleccionar servicio”. Las excepciones se
muestran en la parte inferior de la figura, utilizando rectángulos contiguos, en donde primero se
indica la excepción y después la acción para manejo de la excepción. En esta caso, son el usuario
interrumpe las acciones después de ingresar la tarjeta, se producirá la excepción interrupción y se
regresara la tarjeta. Así mismo, después de introducir la tarjeta el sistema podría indicar las
excepción tarjeta invalida, o tarjeta robada, con lo cual el sistema retendría la tarjeta de crédito. Si
la tarjeta es valida, se pide el PIN y se valida. La validación de PIN produce la excepción PIN
incorrecto, con lo cual se permite volver a introducir el PIN. Si en una segunda vez se detecta un
PIN incorrecto, se regresa la tarjeta al usuario.
104
Figura 3.7 Escenario de eventos para transacciones de un cajero automático.
De la figura 3.7 se puede observar que los escenarios deben contener la siguiente información
(referencia Libro Kotonya y somerville):
1. Una descripción del estado del sistema antes de entrar al escenario. En este estado el sistema
esta en espera de obtener información sobre la tarjeta de crédito y el PIN.
2. El flujo normal de los eventos en el escenario, el cual se observa en la figura 3.7.
3. Las excepciones al flujo normal de los eventos. Por ejemplo, interrupción, tarjeta invalida,
tarjeta robada o PIN incorrecto (y las correspondientes acciones de manejo de excepciones).
4. Información sobre otras actividades que pueden estar ocurriendo al mismo tiempo. Como son,
comunicaciones con la computadora del banco, manejo de motores para aceptar o rechazar
tarjetas de crédito, etc.
5.
Una descripción del estado del sistema después de terminar el escenario. Al final, el sistema
podrá aceptar la selección de servicios del cajero automático.
La aplicación de esta técnica requiere del analista de requerimientos así como de los usuarios
finales. Ambos interesados deben trabajar junto con los ingenieros del cliente para definir cada
105
escenario, tomando nota de los comentarios, problemas y sugerencias. Una vez terminado el
diseño de algún escenario, el usuario debe simularlo para verificar que partes del escenario son
incorrectas, incompletas o poco factibles de implementar. El analista debe preguntar al usuario
sobre las acciones que se llevan a cabo actualmente, la forma en como se realizan las tareas,
quienes están involucrados en las tareas, y que sucede si las tareas se llevan a cabo de distinta
forma.
El tiempo de desarrollo de los escenarios puede ser largo ya que involucra de interacción con los
usuario y de entender las actividades y tareas del sistema.
b) Casos de uso
Los casos de uso son una técnica que se basa en escenarios para la obtención de requerimientos
[2]. En los casos de uso se especifican una secuencia de acciones, incluyendo variantes que el
sistema puede llevar a cabo y que producen resultados observables de valor para un actor
determinado [5]. En un modelo de caso de uso se puede identificar a un conjunto de actores
involucrados y su relación con varios casos de uso. Un conjunto de casos de uso representan
todas las posibles interacciones que ocurrirán en los requerimientos del sistema. Los actores
pueden tener las siguientes representaciones: personas, sistemas o hardware y cualquier de las
tres representaciones puede estar relacionada con un caso de uso.
Los requerimientos funcionales pueden estar representados mediante casos de uso y muchos de
los requerimientos no funcionales pueden estar asociados a ellos. En la notación gráfica de UML
(referencia), se representa a un actor con un símbolo de una persona. Un caso de uso se
representa mediante una elipse y la relación entre ellos se representa mediante una línea que
puede indicar el sentido de la relación. La Figura 3.8 representa un modelo de casos de uso para
una biblioteca.
Algunos analistas describen los casos de uso añadiendo texto a los diagramas, anotando todos los
detalles que ocurren en cada escenario. Para detallar más a los casos de uso, en UML se utilizan
los diagramas de secuencia, diagramas de actividad, diagramas de colaboración y diagramas de
estados (referencia).
106
Figura 3.8 Representación de casos de uso para una biblioteca.
3.11.6
Prototipos
Un prototipo es un versión inicial de un sistema de software que se utiliza para demostrar los
conceptos, probar las opciones de diseño y de forma general enterarse más acerca del problema y
sus posibles soluciones. La Figura 5.20 muestra los dos tipos de prototipos existentes.
107
Figura 5.20 Construcción de prototipos evolutivos y desechables.
3.11.7
Análisis de Protocolos
El análisis de protocolos es una técnica aplicada a un grupo de usuarios representativos, a quienes
se les pide que describan en voz alta sus actividades dentro del sistema. Así el desarrollador
podrá identificar las metas y submetas del negocio apreciadas por los usuarios.
3.11.8
Maestro/Aprendiz
Es una técnica en donde el papel del aprendiz es representado por los analistas o desarrolladores
y los usuarios representan al maestro. Los desarrolladores participan en un entrenamiento con los
usuarios finales del sistema. El aprendiz hace uso de la observación y podrá cuestionar sobre el
origen y significado de las tareas que realice. También, el aprendiz podrá realizar algunos
trabajos bajo la supervisión del maestro con el fin de proponer ideas o alternativas de solución. El
principal objetivo es proporcionar detalles al aprendiz sobre tareas específicas del usuario final
[18].
108
3.11.9
Despliegue de la Función de Calidad
Esta técnica (también conocida como “Quality Function Deployment”) fue propuesta por los
japoneses para determinar los requerimientos de calidad en la industria automotriz, se concentra
en maximizar la satisfacción del cliente [3]. El enfoque principal de QFD es la Función de
Calidad, en la cual se muestran las relaciones entre los requerimientos del cliente y las
características del producto mediante una matriz, en donde las filas representa los requerimientos
y las columnas representan los casos de uso (Tabla 3.1).
Requerimientos
Caso de uso 1
R1
X
Caso de uso 2
Caso de uso n
X
X
R2
R3
Caso de uso 3
X
X
…
Rm
X
X
Tabla 3.1 Función de Calidad.
En la función de calidad se marca la intersección que existe entre un requerimiento y los casos de
uso que lo implementan, verificando que todo requerimiento sea implementado por algún caso de
uso y que todo caso de uso represente algún requerimiento. Además se deben revisar que no
existan elementos repetidos (redactadas de diferentes maneras) o contradictorias tanto en la lista
de requerimientos como en los casos de uso.
3.11.10
Talleres de Trabajo basados en Casos de Uso (Run Use Case
WorkShop)
Los talleres de trabajo basados en casos de uso se realizan entre el cliente/usuario y el equipo de
desarrolladores [13]. Esta técnica consiste en dos tareas principales:
109
1. Generar los escenarios, mediante la aplicación de los casos de uso se puede conversar con
los usuarios para extraerles los detalles que ocurren cuando se realiza un evento determinado.
De esta manera se podrán definir los actores que participan y los pasos que se realizan para
algún el caso de uso. Se debe verificar con los usuarios si los pasos están bien descritos, o si
estos pueden ser modificados y mejorados.
2. Al término de la etapa anterior el equipo de desarrolladores describe y deduce los
requerimientos a partir del conocimiento previamente adquirido.
3.11.11
Análisis de los Interesados en el Sistema
Los interesados en el sistema (stakeholders) son las personas involucradas de alguna manera en el
sistema y que permiten asegurar el éxito del proyecto, por ejemplo los usuarios finales y sus
administradores, clientes y dueños del negocio, ingenieros de sistemas y programadores [12]. Es
importante encontrar a todos los grupos de interesados y conocer sus intereses. Durante el análisis
de interesados se debe tratar de encontrar respuestas a las siguientes preguntas [11]:
•
¿Quiénes son los interesados en el sistema?
•
¿Qué objetivos visualizan para el sistema?
•
¿Cómo podrían contribuir en el sistema?
•
¿Qué riesgos y costos ven?
•
¿Qué tipo de soluciones observan para el sistema?
Hay varias maneras de obtener esta información, puede obtenerse mediante una reunión grupal,
donde todos los interesados conocidos estén representados ó pueden citarse grupos pequeños de
interesados a reuniones. En caso de que esto fallara, puede entrevistarse a uno por uno del grupo
de interesados identificados.
3.11.12
Demostración de Tareas
La técnica de demostración de tareas es una variante de la entrevista y la observación, y consiste
en preguntar a los usuarios como realizan una tarea específica del sistema. Es útil cuando los
usuarios no pueden explicar lo que hacen en su trabajo diario, pero si pueden demostrar como
110
realizan tareas específicas. La demostración de tareas es una manera poco frecuente de observar
tareas críticas. A los usuarios se les hace más fácil demostrar como realizan sus tareas, que
explicar con palabras como se desarrollan las cosas incluso antes de que sean introducidas al
sistema actual. Otra aplicación de la demostración de tareas es la identificación de problemas de
utilidad, para la identificación de problemas de utilidad en un sistema nuevo es necesario algún
tipo de demostración de tareas [12].
3.11.13
Enfoque Grupal
Esta técnica (también conocida como “Focus Groups”) consiste en reuniones grupales donde se
fomenta la discusión abierta entre los participantes. La discusión proporciona al analista ideas de
cómo los usuarios piensan y sienten acerca de los aspectos del sistema. El enfoque grupal puede
ser utilizado para obtener requerimientos basándose en lo que los usuarios piensan que el sistema
podría abarcar. Por otro lado, esta técnica también usada durante las demás etapas del desarrollo
para evaluar prototipos y proporcionar validación y verificación del producto [19].
3.11.14
Talleres Futuros (Future Workshops)
Esta técnica es similar al enfoque grupal, pero es más estructurada y muy concreta en su alcance.
Consiste en que los participantes definan el estado futuro deseado del ambiente del sistema. Los
interesados se aseguran de que el alcance del sistema sea definido y respetado, además permite a
los participantes discutir el estado final deseado del sistema [14].
3.11.15
Estudio de Documentos/Datos
Esta técnica consiste en estudiar los documentos existentes tales como formas, archivos de datos,
bitácoras, documentación y base de datos del sistema existente. Se pueden analizar las pantallas
desplegadas por el sistema en uso, y las distintas impresiones en papel. Otra función de esta
técnica, es la de verificar la información recabada en las entrevistas realizadas a los usuarios y
111
clientes del sistema. En general, lo que se desea lograr es determinar el contexto y la información
detallada del sistema en la que los requerimientos están basados [15].
112
INDICE DE CONTENIDO
3. Obtención de Requerimientos
3.1.Comprensión del Problema
3.1.1.Comprensión del dominio de la aplicación.
3.1.2.Comprensión de las necesidades de los clientes y usuarios.
3.1.3.Requerimientos del negocio
3.2.Búsqueda y Recolección de Información
3.3.Definición de Límites y Restricciones
3.4.Definición de los interesados en el sistema
3.4.1 Roles y Actividades
3.5.Recolección y Clasificación de Requerimientos
3.6.Clasificación de Requerimientos
3.6.1 Identificación de los Elementos del Sistema
3.7 Características de calidad de los requerimientos
3.8 Factores que llevan a realizar cambios en los requerimientos
3.9 Dificultades para definir los requerimientos de software
3.10 El costo de los requerimientos
3.11.Técnicas de Obtención de Requerimientos
3.11.1.Entrevistas
3.11.2.Cuestionarios
3.11.3.Puntos de Vista
3.11.4.Observación
3.11.5.Escenarios
3.11.6.Análisis de Protocolos
3.11.7.Maestro/Aprendiz
3.11.8.Despliegue de la Función de Calidad (Quality Function Deployment)
3.11.9.Talleres de Trabajo basados en Casos de Uso (Run Use Case WorkShop)
3.11.10.Análisis de Usuarios Interesados (Stakeholder)
3.7.11.Demostración de Tareas
3.11.12.Enfoque Grupal (Focus Groups)
3.11.13.Talleres Futuros (Future Workshops)
3.11.14.Estudio de Documentos/Datos
113
Verificar:
1. Directores de proyecto.
2. 3.11.13. Talleres Futuros (Future Workshops)
Que es facilitadores ?
3. Verificar si las secciones 3.6 a la 3.10 deben mandarse al primer capitulo.
4. Explicar mejor y con mas detalle algunas de las técnicas de la seccion 3.11.
5. Alunas secciones presentan ejemplos de los conceptos y otras no presentas ejemplos.
6. Verificar en donde dice Sistema SIV.
7. Algunas de las técnicas de obtención son muy cortas o muy escuetas o tienen poco detalle,
pero que tanto detalle debe dárseles ?
114
Descargar