Professional Documents
Culture Documents
Competencias.
Las competencias se definen como un conjunto de habilidades que están fundamentalmente
referidas a las características del comportamiento general del sujeto en el puesto de trabajo; y
tienen distintos grados de evaluación, a través de la práctica y la capacitación, este grado puede ir
aumentando. [1]
De esta cantidad, sólo 119.000 dólares correspondían a un proyecto que se había utilizado tal
como se había entregado. Dicho proyecto se trataba de un preprocesador de COBOL, por lo que
era un problema relativamente simple cuyos requerimientos eran comprendidos por clientes y
desarrolladores y que además no cambiaron durante el desarrollo.
El resto de los 6.8 millones de dólares se distribuyeron como puede verse, en la que puede
destacarse el enorme porcentaje de dinero invertido en proyectos cancelados o no satisfactorios.
1
Unidad 1. Ingeniería de Requerimientos.
GRUPO STANDISH.
La investigación del Grupo Standish [2] muestra que el 31.1% de los proyectos serán cancelados
antes de que se completen. El 52.7% de los proyectos costarán 189% más de sus estimaciones
originales y los costos de oportunidad perdidos son de miles de millones de dólares.
Factores de Fracaso.
Los principales factores de daño o cancelación de los proyectos tecnológicos se observan en la
Tabla 1
Los factores que afectan el éxito de los proyectos según Baker, Murphy y Fisher, citados por
McManus [3], quienes estudiaron 650 proyectos en los Estados Unidos son los siguientes:
2
Unidad 1. Ingeniería de Requerimientos.
Ingeniería de Software.
Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y
mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE, 1993).
3
Unidad 1. Ingeniería de Requerimientos.
Suministrar a los desarrolladores las bases para construir software de alta calidad en una
forma eficiente.
Definir una disciplina que garantice la producción y el mantenimiento de los productos
software desarrollados en el plazo fijado y dentro del costo estimado.
Requerimientos.
¿Qué es un requerimiento?
"Condición o capacidad que un usuario necesita para poder resolver un problema o lograr un
objetivo". (IEEE).
"Una condición o capacidad que debe ser conformada por el sistema". (RUP).
Tipos de Requerimientos.
Los requerimientos de software pueden dividirse en 2 categorías: 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. Es
importante que se describa el ¿Qué? y no el ¿Cómo? se deben hacer esas transformaciones. Estos
requerimientos al tiempo que avanza el proyecto de software se convierten en los algoritmos, la
lógica y gran parte del código del sistema.
Los requerimientos no funcionales tienen que ver con características que de una u otra forma
puedan limitar el sistema, como por ejemplo, el rendimiento (en tiempo y espacio), interfaces de
usuario, fiabilidad (robustez del sistema, disponibilidad de equipo), mantenimiento, seguridad,
portabilidad, estándares, etc.
Características.
Los requerimientos bien formulados deben satisfacer varias características. Si no lo hacen, deben
ser reformulados hasta hacerlo.
4
Unidad 1. Ingeniería de Requerimientos.
Ingeniería 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.
"Es el proceso mediante el cual se intercambian diferentes puntos de vista para recopilar y modelar
lo que el sistema va a realizar. Este proceso utiliza una combinación de métodos, herramientas y
actores, cuyo producto es un modelo del cual se genera un documento de requerimientos". (Leite
1987)
Permite gestionar las necesidades del proyecto en forma estructurada: Cada actividad de
la IR consiste de una serie de pasos organizados y bien definidos.
Disminuye los costos y retrasos del proyecto: Muchos estudios han demostrado que
reparar errores por un mal desarrollo no descubierto a tiempo, es sumamente caro;
especialmente aquellas decisiones tomadas durante la RE.
5
Unidad 1. Ingeniería de Requerimientos.
Mejora la calidad del software: La calidad en el software tiene que ver con cumplir un
conjunto de requerimientos (funcionalidad, facilidad de uso, confiabilidad, desempeño,
etc.).
Estudio de viabilidad: Este permitirá rendir un informe tanto al equipo de desarrollo del
proyecto como al usuario o cliente, donde se verificará si el proyecto vale la pena
desarrollarlo. Es de vital importancia para la satisfacción de los objetivos del negocio.
6
Unidad 1. Ingeniería de Requerimientos.
Validación: Consiste en mostrar o comprobar que cada uno de los requisitos obtenidos
definen el sistema o proyecto que se va a construir y que desea el cliente. En esta etapa
solamente entran aquellos requisitos que se mencionaron ya en la especificación.
Gestión: Se realiza la comprensión y control de los cambios de cada una de los requisitos,
sean estos requisitos estables (corresponden al estado del sistema) o volátiles
(representan eventos que hacen que el sistema realice una función dada). [7]
Tips para realizar entrevistas: Utilizar una técnica de rombo; de preguntas cerradas,
abiertas y cerradas. Observación del mundo (STROBE). Tener un guión flexible
(improvisación).
Lluvia de ideas (Brainstorm). Este es un modelo que se usa para generar ideas. La
intención en su aplicación es la de generar la máxima cantidad posible de requerimientos
para el sistema. La intención de este ejercicio es generar, en una primera instancia,
muchas ideas; que luego serán eliminadas de acuerdo a distintos criterios.
Técnica del aprendiz. El aprendiz es el analista mientras que el maestro es el
cliente/usuario. El aprendiz se sienta con el maestro con el objetivo de aprender a través
de la observación y de la realización de preguntas.
7
Unidad 1. Ingeniería de Requerimientos.
puede llevar a un desarrollo no eficaz del sistema final. Para validar los requerimientos
hallados, se construyen prototipos.
Los prototipos son simulaciones del posible producto, que luego son utilizados por el
usuario final, permitiéndonos conseguir una importante retroalimentación en cuanto a si
el sistema diseñado con base a los requerimientos.
Casos de Uso. Los casos de uso son una técnica para especificar el comportamiento de un
sistema. En el sitio wikipedia.org, define a un caso de uso como:
“Un caso de uso es una secuencia de transacciones que son desarrolladas por un sistema
en respuesta a un evento que inicia un actor sobre el propio sistema. Los diagramas de
casos de uso sirven para especificar la funcionalidad y el comportamiento de un sistema
mediante su interacción con los usuarios y/o otros sistemas”
(http://es.wikipedia.org/wiki/Caso_de_uso).
Los casos de uso permiten entonces describir la posible secuencia de interacciones entre
el sistema y uno o más actores, en respuesta a un estímulo inicial proveniente de un actor,
es una descripción de un conjunto de escenarios, cada uno de ellos comenzado con un
evento inicial desde un actor hacia el sistema. [8]
Definición de Requerimientos.
Debe especificar el comportamiento externo del sistema de forma que los requerimientos
no sean definidos usando un modelo computacional.
Incluyen requerimientos funcionales y no-funcionales.
Los Requerimientos funcionales son estatutos de servicios que el sistema debe proveer.
Los Requerimientos no-funcionales son restricciones son los servicios y las funciones
ofrecidas por el sistema.
Especificación de requerimientos.
La especificación añade detalles a la definición de los requerimientos, por lo que debe ser
consistente con estos.
Usualmente presentada mediante modelos de sistema los cuales son desarrollados
mediante el análisis de requerimientos. Estos modelos pueden definir parte del sistema a
desarrollarse.
A menudo escritos en lenguaje natural, lo cual puede causar problemas.
SRS.
En la práctica es común describir los requerimientos en un documento llamado Especificación de
Requerimientos del Software (SRS - Software Requirements Specification).
8
Unidad 1. Ingeniería de Requerimientos.
Lectores de un SRS.
Clientes y Usuarios (Interesados en validar objetivos del sistema y descripción de alto nivel
de la funcionalidad).
Analistas (De sistemas, de requerimientos).
Desarrolladores (Ejemplo: Arquitectos, diseñadores, programadores, etc.).
Testers.
Gerentes. [9]
Metodologías Ágiles.
En la metodología XP se recomienda usar la técnica Historias de Usuarios para la recolección de
requerimientos. SCRUM utiliza una lista priorizada de características a implementar denominada
Backlog.
9
Unidad 1. Ingeniería de Requerimientos.
Iteraciones: Esta fase incluye varias iteraciones sobre el sistema antes de ser entregado. El
Plan de Entrega está compuesto por iteraciones de no más de tres semanas. Al final de la
última iteración el sistema estará listo para entrar en producción. Los elementos que
deben tomarse en cuenta durante la elaboración del Plan de la Iteración son: historias de
usuario no abordadas, velocidad del proyecto, pruebas de aceptación no superadas en la
iteración anterior y tareas no terminadas en la iteración anterior
Muerte del Proyecto: Es cuando el cliente no tiene más historias para ser incluidas en el
sistema. Se genera la documentación final del sistema y no se realizan más cambios en la
arquitectura. [10]
Historias de usuario.
Las escriben los propios clientes, tal y como ven ellos las necesidades del sistema.
Las historias de usuario son similares al empleo de escenarios, con la excepción de que no
se limitan a la descripción de la interfaz de usuario.
10
Unidad 1. Ingeniería de Requerimientos.
SCRUM.
Es un marco de trabajo para agilizar el desarrollo de software y asegurar que el producto se
termine en el tiempo más corto posible. Está compuesto por equipos Multi-funcionales y auto-
administrados encabezados por un Scrum Master que trabajan en ciclos repetitivos de 30 días
conocidos como Sprints.
El trabajo a realizar durante cada una de estas cortas iteraciones es seleccionado por el equipo de
desarrollo de una lista conocida como el "Product Backlog"; este es un simple listado de
requerimientos priorizado por el Dueño del producto en base al valor que cada requerimiento da al
negocio.
Al principio de cada Sprint se lleva a cabo una reunión de planeación ("Sprint Planning Meeting")
donde se analizan los requerimientos más prioritarios y se estima el esfuerzo necesario para
completarlos. De ese Product Backlog el equipo selecciona los requerimientos más prioritarios que
puede desarrollar completamente en 30 días y define y estima las tareas necesarias para cumplir
con esos requerimientos ("Sprint Backlog"). El equipo trabaja sobre esta lista de tareas durante 30
días con el objetivo de tener una pieza funcional de software al final del Sprint. Al final del sprint el
equipo de desarrollo hace una demostración del software que termino al Dueño del producto, esta
demostración se conoce como "Sprint Review Meeting". Este proceso se repite tantas veces como
sea necesario hasta que el Dueño del producto determina que tiene un producto que puede ser
implementado. [11]
11
Unidad 1. Ingeniería de Requerimientos.
Debe incluir el mayor número de requerimientos que se puedan obtener de los usuarios y
demás interesados del proyecto a través del dueño del producto y en base a las
estimaciones del equipo de programación.
El equipo selecciona los requerimientos de más alto nivel que puede completar en 30 días
en base a su capacidad y velocidad de desarrollo y produce el Backlog del sprint. [12]
12
Unidad 1. Ingeniería de Requerimientos.
Escenarios.
Son descripciones de ejemplos de las sesiones de interacción con el sistema. Inicia con un
bosquejo y durante la obtención de agregan detalles. Un escenario incluye:
13
Unidad 1. Ingeniería de Requerimientos.
14
Unidad 1. Ingeniería de Requerimientos.
Rúbrica.
Una rúbrica es una herramienta de calificación utilizada para realizar evaluaciones subjetivas. Es
un conjunto de criterios y estándares ligados a los objetivos de aprendizaje usados para evaluar la
actuación en la creación de un proyecto. Las características de una rúbrica son:
FURPS+.
Son las siglas que representan un modelo para clasificar cualidades de la calidad del software
(requisitos), el modelo fue desarrollado en HP (Hewlett-Packard).
15
Unidad 1. Ingeniería de Requerimientos.
+ fue agregado más adelante al modelo después de varias campañas, para ampliar las siglas para
acentuar varias cualidades.
Prototipos.
El modelo de prototipos debe ser construido en poco tiempo, usando los programas adecuados y
no se debe utilizar mucho dinero pues a partir de que este sea aprobado nosotros podemos iniciar
el verdadero desarrollo del software.
El diseño rápido se centra en una representación de aquellos aspectos del software que serán
visibles para el cliente o el usuario final, lo cual conduce a la construcción de un prototipo, el cual
es evaluado por el cliente para una retroalimentación.
Ventajas:
Útil cuando el cliente conoce los objetivos generales para el software, pero no identifica
los requisitos detallados de entrada, procesamiento o salida.
Ofrece mejor enfoque cuando el responsable del desarrollo del software está inseguro de
la eficacia de un algoritmo o de la adaptabilidad de un sistema operativo.
Ayuda al desarrollador de software y al cliente a entender de mejor manera cuál será el
resultado de la construcción cuando los requisitos estén satisfechos.
Inconvenientes:
El usuario tiende a crearse unas expectativas cuando ve el prototipo de cara al sistema
final.
16
Unidad 1. Ingeniería de Requerimientos.
Ejemplos de prototipos.
Digamos que eres un ingeniero del equipo de iTunes. Tu primera labor es imaginar cómo será la
interfaz para poder desarrollar sus características alrededor de ella. Mediante modelo de
prototipos se logra esto:
Figura 13. Ejemplo de Prototipo para el software iTunes creado con Balsamiq Mockups.
Ventajas: Permite que los usuarios participen más efectivamente en los procesos, les da una
sensación de pertenencia con respecto al sistema, cumple con mayor precisión los requerimientos
del sistema y mejor entendimiento de las metas comunes.
17
Unidad 1. Ingeniería de Requerimientos.
Desventajas: Comparado con los métodos tradicionales suele ser más caro, y si el grupo es muy
grande el costo aumenta significativamente. [17]
VORD.
El método VORD (Definición de Requerimientos Orientada a Puntos de Vista) admite un enfoque
orientado a servicios que es conveniente para los sistemas interactivos. Este método se basa en el
análisis de puntos de vista externos que interactúan con el sistema mediante la recepción de los
servicios y dando datos al sistema. VORD contiene las siguientes etapas:
Etnografía.
Análisis Etnográfico:
Un científico social pasa un tiempo considerable observando y analizando cómo trabaja la
gente.
Las personas no tienen que explicar o articular su trabajo.
Los factores sociales y organizacionales de importancia deben ser observados.
Estudios etnográficos han mostrado que el trabajo usualmente es más abundante y más
complejo que lo sugerido por los modelos de sistemas sencillos.
Enfoque Etnográfico:
Desarrollado en un proyecto de estudio del proceso de control de tráfico aéreo.
Combina tecnología con prototipado.
El desarrollo de un prototipo trasciende en preguntas sin respuesta lo cual enfoca el
análisis etnográfico.
El problema con la etnografía es que estudia las prácticas existentes, las cuales pueden
tener alguna base histórica que ya no es relevante.
Desarrollo de la etnografía:
El uso de la etnografía en el análisis de requerimientos necesita ser desarrollado tal que
pueda ser combinado con métodos más sistemáticos.
Conforme la importancia de los factores humanos, sociales y organizacionales se vuelven
más ampliamente reconocidos. [19]
Diccionario de datos.
Contiene las características lógicas de los datos que se van a utilizar en el sistema que estamos
programando, incluyendo nombre, descripción, alías, contenido y organización.
Estos diccionarios se desarrollan durante el análisis de flujo de datos y ayuda a los analistas que
participan en la determinación de los requerimientos del sistema, su contenido también se emplea
durante el diseño del proyecto.
18
Unidad 1. Ingeniería de Requerimientos.
En un diccionario de datos se encuentra la lista de todos los elementos que forman parte del flujo
de datos de todo el sistema. Los elementos más importantes son flujos de datos, almacenes de
datos y procesos. El diccionario de datos guarda los detalles y descripción de todos estos
elementos. [20]
Conclusión.
La evolución de los estudios encarados por la Ingeniería de Requerimientos se fue dando
paulatinamente. Sin embargo, a partir de los 90, los esfuerzos se concentraron en la búsqueda de
técnicas, métodos y herramientas que pudieran ser aplicados durante el proceso de definición de
requerimientos para arribar a una etapa de diseño exitosa.
19
Unidad 1. Ingeniería de Requerimientos.
Referencias.
[3] McManus, John y Wood-Harper, Trevor (2003) "Information systems project management: The
price of failure", pp. 16-19. Disponible en:
http://proquest.umi.com/pqdweb?
index=10&did=000000346162901&SrchMode=1&sid=2&Fmt=6&VInst=PROD&VType=PQD&RQT=
309&VName=PQD&TS=1067570441&clientId=39522
20
Unidad 1. Ingeniería de Requerimientos.
21