Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INGENIERÍA DE
REQUERIMIENTOS
(MÓDULO AUTOINSTRUCTIVO)
AUTOINSTRUCTIVO)
Asignatura: Ingeniería de Requerimientos
2
Asignatura: Ingeniería de Requerimientos
PRESENTACIÓN
El Autor.
3
Asignatura: Ingeniería de Requerimientos
ÍNDICE
Pág.
PRESENTACIÓN 03
ÍNDICE 04
ORGANIZADOR DE CONTENIDOS 05
PRIMERA UNIDAD
Tema Nº 1: Introducción a la Ingeniería de Requerimientos 06
Tema Nº 2: Fases de la Ingeniería de Requerimientos 13
Tema Nº 3: Tipos de Requerimientos 21
Tema Nº 4: Gestión del Proyecto de Requerimientos 30
SEGUNDA UNIDAD
Tema Nº 5: Herramientas y Técnicas de la Ingeniería de Requerimientos 37
Tema Nº 6: Especificación de Requerimientos 43
Tema Nº 7: Construcción de Prototipos 46
Tema Nº 8: Metodologías Ágiles 51
REFERENCIAS BIBLIOGRÁFICAS 63
4
Asignatura: Ingeniería de Requerimientos
5
Asignatura: Ingeniería de Requerimientos
PRIMERA UNIDAD
El proceso de recopilar, analizar y verificar las necesidades del cliente para un sistema de
software es llamado Ingeniería de Requerimientos. La meta de la ingeniería de
requerimientos es entregar una especificación de requerimientos de software correcta
y completa. La ingeniería de requerimientos apunta a mejorar la forma en que
comprendemos y definimos sistemas de software complejos. Existen varias
definiciones de requerimientos, de entre las cuales podemos citar las siguientes:
Según Zave:
6
Asignatura: Ingeniería de Requerimientos
Según Boehm:
Según Loucopoulos:
Según Leite:
7
Asignatura: Ingeniería de Requerimientos
Modelo de proceso de IR
8
Asignatura: Ingeniería de Requerimientos
Este modelo sugiere que los resultados de una tarea del proceso llevan a la siguiente, y
así sucesivamente. En el ejemplo presentado, la extracción lleva al análisis, el análisis
desencadena la documentación, y la documentación inicia la validación.
Si vemos a este modelo como una descripción general del proceso, es un modelo
útil. Sin embargo, debemos entender que la realidad del proceso de IR es mucho
más compleja que lo que se vislumbra a partir del modelo en cascada: no existen
fases claramente delimitadas ya que hay una retroalimentación constante entre las
distintas etapas; los requerimientos del sistema van cambiando por circunstancias ajenas
al proceso (como una ley nueva o un cambio de mercado que a su vez cambia las
necesidades de la empresa) durante el desarrollo del mismo; se descubren
problemas durante la validación que llevan a un cambio de requerimientos, etc.; y todo
esto hará que más de una vez tengamos que volver "hacia atrás" en el proceso de IR.
Modelo en Espiral
9
Asignatura: Ingeniería de Requerimientos
2. Evaluación y síntesis
En esta etapa el analista debe centrarse en el flujo y estructura de la información, definir
las funciones del software, determinar los factores que afectan el desarrollo de
nuestro sistema, establecer las características de la interfaz del sistema y descubrir las
restricciones del diseño. Todas las tareas anteriores conducen fácilmente a la
determinación del problema de forma sintetizada.
3. Modelización
Durante la evaluación y síntesis de la solución, se crean modelos del sistema que
servirán al analista para comprender mejor el proceso funcional, operativo y de
contenido de la información. El modelo servirá de pilar para el diseño del software
y como base para la
creación de una especificación del software.
4. Especificación
Las tareas asociadas con la especificación intenta proporcionar una representación
del software. Esto más adelante permitirá llegar a determinar si se ha llegado a
comprender el software, en los casos que se lleguen a modelar se pueden dejar
plasmados manuales.
5. Revisión
Una vez que se han descrito la información básica, se especifican los criterios de
validación que han de servir para demostrar que se ha llegado a un buen
entendimiento de la forma de implementar con éxito el software. La documentación del
análisis de requerimientos y manuales, permitirán una revisión por parte del cliente, la
cual posiblemente traerá consigo modificaciones en las funciones del sistema
por lo que deberán revisarse el plan de desarrollo y las estimaciones previstas
inicialmente.
10
Asignatura: Ingeniería de Requerimientos
Método CORE
El método CORE consiste en siete etapas. Cada una produce salidas que alimentan a la
etapa subsecuente como entrada o que forman parte de la especificación de
requerimientos final. CORE pretende examinar el sistema y su ambiente en un número de
niveles, con detalles más finos progresivamente en cada nivel. Las siete etapas se
presentan a continuación:
3. Colección tabular.
Esta etapa es cuando la información sobre los flujos de datos entre los puntos de vista y el
procesamiento de éstos son reunidos. Esto ayuda a establecer la totalidad y consistencia.
4. Estructuración de datos.
En la etapa previa, los elementos de información que pasan entre los puntos de vista son
referidos por sus nombres generales. En esta etapa, se da una vista más cercana al
contenido, a la estructura y a la derivación de datos, al producir diagramas de estructura
de datos.
7. Análisis de restricciones.
En esta etapa, se consideran restricciones adicionales tales como desempeño y
seguridad. Éstas pueden afectar los diagramas de puntos de vista ya producidos. Las
restricciones se documentan en una especificación de restricción del sistema.
Los métodos analizados, como gran parte de los existentes, conciernen a la producción
del documento de especificación de requerimientos y no direcciona el proceso de captura
de requerimiento en detalle, a menudo sólo proporcionan guías simples de técnicas de
11
Asignatura: Ingeniería de Requerimientos
entrevista y algunas veces áreas claves que deben investigarse pero que a menudo se
olvidan. Cada método individualmente, dará diferentes soluciones para diferentes
proyectos, incluyendo aquellos casos en los que el dominio y el área del problema
son el mismo. Por esta razón, considero que no existe un modelo de proceso ideal
para la Ingeniería de Requerimientos; encontrar el método o la técnica perfecta es una
ilusión, pues cada método y técnica ofrece diferentes soluciones ante un problema,
no obstante la aplicación de alguno de ellos nos ayuda a la producción de
especificación de requerimientos.
1. Comprender el problema
2. Describir formalmente el problema
3. Obtener un acuerdo sobre la naturaleza del problema
Esto nos llevaría a simplificar el proceso a tres etapas para obtener los
requerimientos del problema que estamos atacando, estas etapas son las siguientes:
1. Elicitación de requerimientos
2. Especificación
3. Validación
Elicitación de requerimientos
Especificación
Validación
La validación no sólo se aplica al modelo final de los requerimientos, sino también a los
modelos intermedios.
12
Asignatura: Ingeniería de Requerimientos
PRIMERA UNIDAD
Antes de mantener las reuniones con los clientes y usuarios e identificar los
requerimientos es fundamental conocer el dominio del problema. Enfrentarse a un
desarrollo sin conocer las características principales ni el vocabulario propio de su
dominio suele provocar que el producto final no sea el esperado por clientes ni
usuarios. Por otro lado, mantener reuniones con clientes y usuarios sin conocer las
características de su actividad hará que probablemente no se entiendan sus
necesidades y que su confianza inicial hacia el desarrollo se vea deteriorada
enormemente.
Para conocer el dominio del problema se puede obtener información de fuentes externas
al negocio del cliente: folletos, informes sobre el sector, publicaciones, consultas con
expertos, etc. En el caso de que se trate de un dominio muy específico puede ser
necesario recurrir a fuentes internas al propio negocio del cliente, en cuyo caso pueden
utilizarse las técnicas de elicitación de requerimientos como el estudio de
documentación, observación in situ, cuestionarios, etc.
En realidad una primera reunión entre el cliente y el analista servirá como un período corto
de preguntas y respuestas, el cual, en adelante debe sustituirse por reuniones que
busquen entender el problema del usuario.
Entrevistas
Las entrevistas son la técnica de elicitación más utilizada, y de hecho son prácticamente
inevitables en cualquier desarrollo. En las entrevistas se pueden identificar claramente tres
fases: preparación, realización y análisis, que se describen a continuación.
Preparación de entrevistas
Las entrevistas no deben improvisarse, por lo que conviene realizar las
siguientes tareas previas:
13
Asignatura: Ingeniería de Requerimientos
Realización de entrevistas
Brainstorming
14
Asignatura: Ingeniería de Requerimientos
Las sesiones de brainstorming suelen estar formadas por un número de cuatro a diez
participantes, uno de los cuales es el jefe de la sesión, encargado más de comenzar la
sesión que de controlarla.
Especificación
Los casos de uso son una técnica para la especificación de requerimientos funcionales
que actualmente forma parte de la propuesta de UML [Booch]. Un caso de uso es la
descripción de una secuencia de interacciones entre el sistema y uno o más actores en
la que se considera al sistema como una caja negra.
15
Asignatura: Ingeniería de Requerimientos
Los casos de uso son una técnica para especificar el comportamiento de un sistema: “Un
caso de uso es una secuencia de interacciones entre un sistema y actores que usan
alguno de sus servicios”.
Los actores son personas u otros sistemas que interactúan con el sistema cuyos
requerimientos se están describiendo. Un actor puede participar en varios casos de uso y
un caso de uso puede estar relacionado con varios actores.
Sin embargo, existen algunas diferencias entre los casos de uso y los eventos. Las
principales son:
A partir de la publicación del libro de Jacobson, gran parte de los más reconocidos
especialistas en métodos Orientados a Objetos coincidieron en considerar a los
casos de uso como una excelente forma de especificar el comportamiento externo
de un sistema. De esta forma, la notación de los casos de uso fue incorporada al lenguaje
estándar de modelado UML (Unified Modeling Language) propuesto por Ivar Jacobson,
James Rumbaugh y Grady Booch, tres de los precursores de las metodologías de
Análisis y Diseño Orientado a Objetos, y avalado por las principales empresas que
desarrollan software en el mundo. UML va en camino de convertirse en un estándar
para modelado de sistemas de software de amplia difusión. A pesar de ser considerada
una técnica de Análisis Orientado a Objetos, es importante destacar que los casos de uso
poco tienen que ver con entender a un sistema como un conjunto de objetos que
interactúan, que es la premisa básica del análisis orientado a objetos “clásico”. En este
sentido, el éxito de los casos de uso no hace más que dar la razón al análisis
estructurado, que propone que la mejor forma de empezar a entender un sistema es a
16
Asignatura: Ingeniería de Requerimientos
Otras técnicas
Esta técnica se base en cuatro principios: dinámica de grupo, el uso de ayudas visuales
para mejorar la comunicación (diagramas, transparencias, multimedia, herramientas
CASE, etc.), mantener un proceso organizado y racional y una filosofía de
documentación WYSIWYG (What You See Is What You Get, lo que se ve es lo que se
obtiene), por la que durante las reuniones se trabaja directamente sobre los documentos a
generar. Debido a las necesidades de organización que requiere y a que no suele
adaptarse bien a los horarios de trabajo de los clientes y usuarios, esta técnica no suele
emplearse con frecuencia, aunque cuando se aplica suele tener buenos resultados,
especialmente para elicitar requerimientos en el campo de los sistemas de
información [Raghavan].
• Ahorra tiempo al evitar que las opiniones de los clientes se contrasten por
separado.
• Todo el grupo, incluyendo los clientes y los futuros usuarios, revisa la
documentación generada, no sólo los ingenieros de requerimientos.
• Implica más a los clientes y usuarios en el desarrollo.
Podríamos analizar muchos métodos que ofrece esta técnica, pero todos enfocan hacia
las siguientes directrices básicas: Se efectúa una reunión en un lugar neutral, se
establecen reglas para la preparación y participación, se elabora una agenda, se
elige un facilitador, se utiliza un mecanismo de comunicación y primeramente el
objetivo principal debe ser identificar el problema. En la siguiente página se observar una
comparativa entre las distintas técnicas.
Validación de Requerimientos
17
Asignatura: Ingeniería de Requerimientos
18
Asignatura: Ingeniería de Requerimientos
19
Asignatura: Ingeniería de Requerimientos
Antes de llevar a cabo una reunión para una revisión formal, muchos problemas se
pueden detectar simplemente hablando del sistema con los stakeholders.
20
Asignatura: Ingeniería de Requerimientos
PRIMERA UNIDAD
Los requerimientos para un sistema son la descripción de los servicios proporcionados por
el sistema y sus restricciones operativas. Estos requerimientos reflejan las necesidades de
los clientes de un sistema que ayude a resolver algún problema como el control de un
dispositivo, hacer un pedido o encontrar información. El proceso de descubrir, analizar,
documentar y verificar estos servicios y restricciones se denomina ingeniería de
requerimientos (RE). El término requerimiento no se utiliza de una forma constante en la
industria de software. En algunos casos, un requerimiento es simplemente una declaración
abstracta de alto nivel de un servicio que debe proporcionar el sistema o una restricción de
éste. En el otro extremo, es una definición detallada y formal de una función del sistema.
Davis (Davis, 1993) explica por qué existen estas diferencias:
Diferentes niveles de especificación del sistema son de utilidad debido a que comunican la
información del sistema a diferentes tipos de lectores. Este ejemplo de un sistema de
biblioteca muestra la manera en que un requerimiento del usuario se expande en varios
requerimientos del sistema. Puede verse en la figura de la siguiente página que el
requerimiento del usuario es más abstracto, y que los requerimientos del sistema añaden
detalle, explicando los servicios y funciones que deben ser proporcionados por el sistema
a desarrollar. Es necesario redactar los requerimientos en diversos niveles de detalle
debido a que diferentes tipos de lectores los utilizan de distinta manera. La figura de la
siguiente página muestra los tipos de lectores de los requerimientos de usuario y del
sistema. Los lectores de los requerimientos de usuario normalmente no tratan de cómo se
implementará el sistema y pueden ser administradores que no están interesados en los
recursos detallados del sistema. Los lectores de los requerimientos del sistema necesitan
saber con más precisión qué hará el sistema debido a que están interesados en cómo
21
Asignatura: Ingeniería de Requerimientos
Requerimientos Funcionales
22
Asignatura: Ingeniería de Requerimientos
Estos requerimientos funcionales del usuario definen los recursos específicos que el
sistema debe proporcionar. Dichos requerimientos se toman del documento de
requerimientos del usuario, e ilustran los diferentes niveles de detalle en que se pueden
redactar los requerimientos funcionales (contraste los requerimientos 1 y 3).
Una razón de esto es que es fácil cometer errores y omisiones cuando se redactan
especificaciones para sistemas grandes y complejos. Otra razón es que los stakeholders
del sistema tienen necesidades diferentes, y a menudo contradictorias. Estas
contradicciones pueden no ser obvias cuando los requerimientos se especifican por
primera vez, por lo que se incluyen requerimientos contradictorios en la especificación. Es
posible que los problemas surjan solamente después de un análisis más profundo o, a
veces, después de que se termine el desarrollo y el sistema se entregue al cliente.
Requerimientos No Funcionales
23
Asignatura: Ingeniería de Requerimientos
Los requerimientos no funcionales surgen de las necesidades del usuario, debido a las
restricciones en el presupuesto, a las políticas de la organización, a la necesidad de
interoperabilidad con otros sistemas software o hardware, o a factores externos como
regulaciones de seguridad o legislaciones sobre privacidad. La siguiente figura es una
clasificación de los requerimientos no funcionales. Puede verse en este diagrama que los
requerimientos no funcionales pueden venir de las características requeridas del software
(requerimientos del producto), de la organización que desarrolla el software
(requerimientos organizacionales) o de fuentes externas. Los tipos de requerimientos no
funcionales son:
24
Asignatura: Ingeniería de Requerimientos
Un problema común con los requerimientos no funcionales es que pueden ser difíciles de
verificar. Los usuarios o cuentes declaran a menudo estos requerimientos como metas
generales tales como la facilidad de uso, la capacidad del sistema para recuperarse de los
fallos o la respuesta rápida al usuario. Estas metas imprecisas causan problemas a los
desabolladores del sistema puesto que dejan abierta la posibilidad a interpretación, lo que
provoca discusiones subsecuentes una vez que el sistema se entrega.
Por lo tanto, los documentos de los requerimientos a menudo incluyen las declaraciones
de las nietas mezcladas con los requerimientos. Dichas metas pueden ser útiles para los
desarrolladores puesto que dan idea de las prioridades del cliente. Sin embargo, siempre
se les debe advertir que están abiertas a interpretaciones erróneas y que no se pueden
verificar de forma objetiva.
25
Asignatura: Ingeniería de Requerimientos
Los requerimientos del dominio se derivan del dominio de aplicación del sistema más que
de las necesidades específicas de los usuarios. Normalmente incluyen terminología
especializada del dominio o referencias a conceptos del dominio. Pueden ser
requerimientos funcionales nuevos, restringir los existentes o establecer cómo se deben
ejecutar cálculos particulares. Debido a que éstos se especializan, a los ingenieros de
software a menudo les resulta difícil entender cómo se relacionan con los otros
requerimientos del sistema. Los requerimientos del dominio son importantes debido a que
a menudo reflejan los fundamentos del dominio de aplicación. Si estos requerimientos no
se satisfacen, puede ser imposible hacer que el sistema funcione de forma satisfactoria. El
sistema LIBSYS incluye varios requerimientos del dominio:
1. Deberá existir una interfaz de usuario estándar para todas las bases de datos
que estará basada en el estándar Z39.50.
2. Debido a las restricciones en los derechos de autor, algunos documentos
deberán borrarse inmediatamente después de su llegada. Dependiendo de los
requerimientos del usuario, estos documentos se imprimirán de forma local en
el servidor del sistema para ser distribuidos de forma manual al usuario o se
enviarán a la impresora de la red.
Los requerimientos del usuario para un sistema deben describir los requerimientos
funcionales y no funcionales de tal forma que sean comprensibles por los usuarios del
sistema sin conocimiento técnico detallado. Únicamente deben especificar el
comportamiento externo del sistema y deben evitar, tanto como sea posible, las
características de diseño del sistema. Por consiguiente, si se están redactando
requerimientos del usuario, no se debe utilizar jerga del software, notaciones estructuradas
o formales, o describir los requerimientos por la descripción de la implementación del
sistema. Deben redactarse en un lenguaje sencillo, con tablas y formularios sencillos y
diagramas intuitivos.
Sin embargo, pueden surgir diversos problemas cuando se redactan con frases del
lenguaje natural en un documento de texto:
26
Asignatura: Ingeniería de Requerimientos
Los requerimientos del usuario que incluyen demasiada información restringen la libertad
del desarrollador del sistema para proporcionar soluciones innovadoras a los problemas
del usuario y son difíciles de comprender. Los requerimientos del usuario deben
simplemente enfocarse a los recursos principales que se deben proporcionar. Cuando sea
posible, se debe intentar asociar un fundamento con cada requerimiento del usuario. El
fundamento debe explicar por qué se ha incluido el requerimiento y es particularmente útil
cuando cambian éstos.
Los requerimientos del sistema son versiones extendidas de los requerimientos del
usuario que son utilizados por los ingenieros de software como punto de partida para el
diseño del sistema. Agregan detalle y explican cómo el sistema debe proporcionar los
requerimientos del usuario. Pueden ser utilizados como parte del contrato para la
implementación del sistema y, por lo tanto, deben ser una especificación completa y
consistente del sistema entero.
1. Puede tener que diseñar una arquitectura inicial del sistema para ayudar a
estructurar la especificación de requerimientos. Los requerimientos del sistema se
organizan conforme a los diferentes subsistemas que componen el sistema. Como
se expone en los Capítulos 7 y 18, esta definición arquitectónica es esencial si
quiere reutilizar componentes software cuando implementa el sistema.
2. En muchos casos, los sistemas deben interoperar con otros ya existentes. Esto
restringe el diseño, y estas restricciones imponen requerimientos en el sistema
nuevo.
3. Es necesario el uso de una arquitectura específica para satisfacer los
27
Asignatura: Ingeniería de Requerimientos
A menudo se utiliza el lenguaje natural para redactar, además de los requerimientos del
usuario, las especificaciones de requerimientos del sistema. Sin embargo, debido a que
los requerimientos del sistema son más detallados que los requerimientos del usuario, las
especificaciones en lenguaje natural pueden ser confusas y difíciles de entender:
1. Introducción
1.1 Propósito del documento de requerimientos
1.2 Alcance del producto
1.3 Definiciones, acrónicos y abreviaturas
1.4 Referencias
1.5 Descripción del resto del documento
2. Descripción general
2.1 Perspectiva del producto
2.2 Funciones del producto
2.3 Características del usuario
2.4 Restricciones generales
2.5 Suposiciones y dependencias
3. Requerimientos específicos: incluyen los requerimientos funcionales, no
funcionales y de interfaz. Obviamente, ésta es la parte más sustancial del
documento, pero debido a la amplia variabilidad en la práctica organizacional, no
es apropiado definir una estructura estándar para esta sección. Los requerimientos
pueden documentar las interfaces externas, describir la funcionalidad y el
rendimiento del sistema, especificar los requerimientos lógicos de la base de
datos, las restricciones de diseño, las propiedades emergentes del sistema y las
características de calidad.
4. Apéndices
5. Índice
28
Asignatura: Ingeniería de Requerimientos
Aunque el estándar IEEE no es ideal, contiene muchos consejos sobre cómo redactar los
requerimientos y cómo evitar problemas. Es muy general para que pueda ser un estándar
de una organización. Es un marco general que se puede transformar y adaptar para definir
un estándar ajustado a las necesidades de una organización en particular.
Para sistemas de negocio donde los requerimientos son inestables, pienso que este
enfoque es bueno. Sin embargo, argumentaría que todavía es útil redactar un breve
documento de soporte que defina el negocio y los requerimientos de confiabilidad del
sistema. Es fácil olvidarse de los requerimientos que se aplican al sistema en su totalidad
al centrarse en los requerimientos funcionales para la siguiente entrega del sistema.
29
Asignatura: Ingeniería de Requerimientos
PRIMERA UNIDAD
30
Asignatura: Ingeniería de Requerimientos
Las preguntas siguientes permiten que el analista comprenda mejor el problema y que el
cliente exprese sus percepciones sobre una solución:
Una vez se ha identificado el ámbito (con la ayuda del cliente), es razonable preguntarse:
«¿Podemos construir el software de acuerdo a este ámbito? ¿Es factible el proyecto?».
Con frecuencia, las prisas de los ingenieros de software sobrepasan estas preguntas (o
están obligados a pasarlas por los clientes o gestores impacientes), solo se tienen en
cuenta en un proyecto condenado desde el comienzo.
Los proyectos de los que no se tiene experiencia no son fáciles. Un equipo puede pasarse
varios meses descubriendo cuáles son los requisitos principales, y cuáles son aquéllos
difíciles de implementar para una nueva aplicación. ¿Podría ocurrir que alguno de estos
requerimientos presentara algunos riesgos que hicieran inviable el proyecto? ¿Podrían
superarse estos riesgos? El equipo de factibilidad debe asumir la arquitectura y el diseño
de los requerimientos de alto riesgo hasta el punto de poder responder todas estas
preguntas. En algunos casos, cuando el equipo proporciona respuestas negativas, esto
puede negociarse con una reducción de los requisitos.
Mientras tanto, los altos ejecutivos están repicando sus dedos en la mesa. A menudo,
mueven sus cigarros de forma elegante, pero de forma impaciente y rodeados de humo
exclaman ¡Ya es suficiente! ¡Hazlo!. Muchos de estos proyectos que se han aprobado de
esta forma aparecen a los pocos años en la prensa como proyectos defectuosos.
El estudio de viabilidad es importante, pero las necesidades de la gestión son incluso más
importantes. No es bueno construir un producto o sistema de alta tecnología que en
realidad nadie quiera.
31
Asignatura: Ingeniería de Requerimientos
Recursos
Recursos humanos
El encargado de la planificación comienza elevando el ámbito y seleccionando las
habilidades que se requieren para llevar a cabo el desarrollo. Hay que especificar tanto la
posición dentro de la organización (por ejemplo: gestor, ingeniero de software
experimentado, etc.) como la especialidad (por ejemplo: telecomunicaciones, bases de
datos, cliente/servidor). Para proyectos relativamente pequeños (una persona-año o
menos) una sola persona puede llevar a cabo todos los pasos de ingeniería del software,
consultando con especialistas siempre que sea necesario. El número de personas
requerido para un proyecto de software sólo puede ser determinado después de hacer una
estimación del esfuerzo de desarrollo (por ejemplo, personas-mes). Estas técnicas de
estimación del esfuerzo se estudiarán después.
Deberían ser consideradas las directrices siguientes por el planificador de software cuando
los componentes reutilizables se especifiquen como recurso:
32
Asignatura: Ingeniería de Requerimientos
Recursos de entorno
El entorno incorpora hardware y software. El hardware proporciona una plataforma con
las herramientas (software) requeridas para producir los productos que son el resultado de
una buena práctica de la ingeniería del software. Como la mayoría de las organizaciones
de software tienen muchos aspectos que requieren acceso a E/S, un planificador de
proyecto debe determinar la ventana temporal requerida para el hardware y el software, y
verificar que estos recursos estarán disponibles.
• Entorno cultural y social. El equipo tiene que entender cómo afecta el proyecto a las
personas y cómo afectan las personas al proyecto. Esto puede requerir una
comprensión de los aspectos económicos, demográficos, educativos, éticos, étnicos,
religiosos, y de otras características de las personas a quienes afecta el proyecto o
que puedan tener un interés en éste. El director del proyecto también debe examinar
la cultura de la organización y determinar si se reconoce que la dirección de proyectos
desempeña un rol válido con responsabilidad y autoridad para gestionar el proyecto.
• Entorno internacional y político. Es posible que algunos miembros del equipo tengan
que estar familiarizados con las leyes y costumbres internacionales, nacionales,
regionales y locales aplicables, así como con el clima político que podría afectar al
proyecto. Otros factores internacionales a tener en cuenta son las diferencias de
husos horarios, los días festivos nacionales y regionales, los requisitos de viaje para
reuniones cara a cara y la logística de teleconferencias.
• Entorno físico. Si el proyecto va a afectar a su ámbito físico, algunos miembros del
equipo deberán estar familiarizados con la ecología local y la geografía física que
podrían afectar al proyecto o ser afectadas por el proyecto.
33
Asignatura: Ingeniería de Requerimientos
Habilidades interpersonales
Las PMO pueden operar con continuidad en aspectos que van desde proporcionar las
funciones de respaldo para la dirección de proyectos bajo la forma de formación, software,
políticas estandarizadas y procedimientos, hasta la dirección y responsabilidad directas en
sí mismas para lograr los objetivos del proyecto. Se puede delegar a una PMO específica
la autoridad para actuar como interesada integral y estar encargada de tomar decisiones
clave durante la etapa de iniciación de cada proyecto; también puede estar autorizada
para hacer recomendaciones o concluir proyectos a fin de ser congruente con sus
objetivos de negocio. Además, la PMO puede participar en la selección, dirección y
reubicación, si fuera necesario, del personal compartido de los proyectos y, si es posible,
del personal dedicado de los proyectos.
Para facilitar la gestión, los directores de proyectos o la organización pueden dividir los
proyectos en fases, con los enlaces correspondientes a las operaciones de la organización
ejecutante. El conjunto de estas fases se conoce como ciclo de vida del proyecto. Muchas
organizaciones identifican un conjunto de ciclos de vida específico para usarlo en todos
sus proyectos.
El ciclo de vida del proyecto define las fases que conectan el inicio de un proyecto con su
fin. Por ejemplo, cuando una organización identifica una oportunidad a la cual le
interesaría responder, frecuentemente autoriza un estudio de viabilidad para decidir si se
emprenderá el proyecto. La definición del ciclo de vida del proyecto puede ayudar al
director del proyecto a determinar si deberá tratar el estudio de viabilidad como la primera
34
Asignatura: Ingeniería de Requerimientos
La transición de una fase a otra dentro del ciclo de vida de un proyecto generalmente
implica y, por lo general, está definida por alguna forma de transferencia técnica.
Generalmente, los productos entregables de una fase se revisan para verificar si están
completos, si son exactos y se aprueban antes de iniciar el trabajo de la siguiente fase. No
obstante, no es inusual que una fase comience antes de la aprobación de los productos
entregables de la fase previa, cuando los riesgos involucrados se consideran aceptables.
Esta práctica de superponer fases, que normalmente se realiza de forma secuencial, es un
ejemplo de la aplicación de la técnica de compresión del cronograma denominada
ejecución rápida.
No existe una única manera, que sea la mejor, para definir el ciclo de vida ideal de un
proyecto. Algunas organizaciones han establecido políticas que estandarizan todos los
proyectos con un ciclo de vida único, mientras que otras permiten al equipo de dirección
del proyecto elegir el ciclo de vida más apropiado para el proyecto del equipo. Asimismo,
las prácticas comunes de la industria a menudo conducen a usar un ciclo de vida preferido
dentro de dicha industria.
• Qué trabajo técnico se debe realizar en cada fase (por ejemplo, ¿en qué fase se debe
realizar el trabajo del arquitecto?)
• Cuándo se deben generar los productos entregables en cada fase y cómo se revisa,
verifica y valida cada producto entregable
• Quién está involucrado en cada fase (por ejemplo, la ingeniería concurrente requiere
que los implementadores estén involucrados en las fases de requisitos y de diseño)
• Cómo controlar y aprobar cada fase.
• Las descripciones del ciclo de vida del proyecto pueden ser muy generales o muy
detalladas. Las descripciones muy detalladas de los ciclos de vida pueden incluir
formularios, diagramas y listas de control para proporcionar estructura y control.
• La mayoría de los ciclos de vida de proyectos comparten determinadas características
comunes:
• En términos generales, las fases son secuenciales y, normalmente, están definidas
por alguna forma de transferencia de información técnica o transferencia de
componentes técnicos.
• El nivel de coste y de personal es bajo al comienzo, alcanza su nivel máximo en las
fases intermedias y cae rápidamente cuando el proyecto se aproxima a su conclusión.
35
Asignatura: Ingeniería de Requerimientos
Interesados en el proyecto
36
Asignatura: Ingeniería de Requerimientos
SEGUNDA UNIDAD
Entrevistas y cuestionarios
Las preguntas suelen distinguirse en dos categorías: abiertas y cerradas. Las preguntas
abiertas permiten que los encuestados respondan con su propia terminología.
Generalmente estas son más reveladoras, ya que los interrogados no están limitados en
sus respuestas. Son especialmente útiles en la etapa exploratoria de la investigación,
cuando el AN busca penetrar en el pensamiento del encuestado.
37
Asignatura: Ingeniería de Requerimientos
Por su parte, las preguntas cerradas predeterminan todas las posibles respuestas y el
interrogado elige entre las opciones presentadas. Estas preguntas las podemos utilizar
cuando estamos estableciendo el criterio de priorización de los casos de uso con el
cliente. Para cada uno preguntamos si es a corto plazo, a futuro, o Indispensable. Como
vemos, la respuesta está acotada a tres opciones. También podemos volver a utilizarla
cuando tenemos que negociar algún requerimiento con el cliente.
Sistemas Existentes
También es útil analizar las distintas salidas que los sistemas producen (listados,
consultas, etc.), porque siempre pueden surgir nuevas ideas sobre la base de estas.
Luego de este análisis también podemos realizar una tormenta de ideas y así obtener
requerimientos sumamente interesantes. Desde mi punto de vista y, aunque requiere de
cierto grado de trabajo (investigación y análisis), la podemos realizar a priori sin que
intervenga el cliente/usuario; para ello, existen en internet cantidad de demos de productos
que pueden resultar similares y, también, podemos establecer contacto con profesionales
que desarrollan sistemas de características comparables.
Otra ventaja que presenta esta técnica es que como estos sistemas ya están en
producción, ya han pasado por la curva de aprendizaje del dominio del problema.
Entonces, cuando analizamos estos sistemas, tenemos que tratar de pensar, por ejemplo,
por qué manejan cierta información y para qué sirve, lo que resultará de suma utilidad para
nuestro cliente. También es recomendable que luego de haber analizado el sistema, se lo
mostremos al cliente/usuario, ya que por su experiencia puede sugerir importantes ideas
nuevas.
Básicamente existen dos formas de utilizar las grabaciones: como registro y apoyo de las
entrevistas, y para analizar algún proceso en particular. En cuanto a su función de apoyo,
es importante por cuanto permite centrar la atención en la entrevista en sí en vez de
distraerse tomando notas de todo lo que se dice. Cuando se está grabando la
conversación, basta con "puntear" en una libreta los temas tratados para después tener
una guía básica de los temas tratados y saber en qué lugar de la grabación buscar.
Además, permite analizar los temas con más
detenimiento y con una visión más global, pues ya se ha conversado sobre todos los
puntos necesarios y se han visto los procesos ad hoc.
Para finalizar, mencionamos que siempre es conveniente comenzar las grabaciones con
38
Asignatura: Ingeniería de Requerimientos
preguntas poco importantes que sirvan para "relajar el ambiente", ya que el entrevistado
puede ponerse nervioso durante los primeros minutos de grabación. Debemos darle
tiempo a las personas para que se distiendan y se sientan cómodas con la idea de ser
grabados o filmados.
Arqueología de Documentos
Para el análisis de cada uno de estos documentos, debemos realizar algunas preguntas,
como:
Aprendiz
Esta herramienta se basa en la idea del maestro y el aprendiz, y es una buena forma de
observar el trabajo real. Aquí, el aprendiz es representado por el alumno, y el
usuario/cliente cumple el rol de maestro. El aprendiz se sienta con el maestro a aprender
por medio de la observación, haciendo preguntas como ¿por qué hizo eso? y ¿qué
significa eso?, y también realizando algún trabajo bajo la supervisión del maestro. Esta
técnica puede ser combinada con la herramienta de modelo conceptual. A medida que el
trabajo es observado y explicado, el alumno puede realizar bosquejos para cada una de
las tareas realizadas, y también puede bosquejar como se conectan por medio de los
39
Asignatura: Ingeniería de Requerimientos
distintos flujos de datos. La aplicación de esta herramienta es muy útil, ya que a veces es
difícil para el cliente/usuario el explicar cómo realiza su trabajo. Es también una técnica
apropiada para un proyecto donde el problema no es estructurado, ya que es una de las
mejores formas de obtener el conocimiento que se encuentra en la "cabeza" del cliente.
Una de las posibles objeciones que se le pueden hacer a esta herramienta es que su
implementación requiere de mucho tiempo.
Observación
Run Use Case WorkShop (Talleres de Trabajo basados en los Casos de Uso)
Prototipos
a. Prototipo evolutivo
Por ejemplo, cuando el usuario no puede o no está dispuesto a articular sus
requerimientos de ninguna forma, sólo se podrán determinar mediante un proceso de
ensayo y error. Así se van realizando evoluciones sobre la base del mismo prototipo
hasta determinar claramente los requerimientos.
b. Prototipo Bosquejado
Para realizar esta clase de prototipo nos apoyamos, por un lado, en el rol del analista
de requerimientos (AN), simulando las respuestas del sistema y realizando bosquejos
de las interfases de usuario; y, por otro, el usuario, que es quien realiza las entradas
("utiliza el prototipo"). También podemos llevar el caso de uso y bosquejar la interfase
de usuario y, mediante el diálogo, manejamos la interactividad entre el usuario y el
40
Asignatura: Ingeniería de Requerimientos
sistema. Una de las ventajas más importantes es el poco esfuerzo que realizamos
para aplicar los cambios. Como desventaja podemos mencionar que si bien
capturamos la idea, el usuario no percibe como será realmente el diálogo hombre-
máquina, sobre todo si existe un requerimiento no funcional como el de usabilidad.
c. Prototipo Tangible/Usable
Los términos tangible y usable se refieren a desarrollar una aplicación (software) que
el usuario pueda utilizar, es decir, con la cual pueda interactuar como si fuera la
aplicación final. Cualquiera sea la herramienta de software, que elijamos utilizar, para
desarrollar el prototipo, debemos recordar los siguientes puntos:
Cabe remarcar que tenemos que dejar bien en claro al usuario/cliente que se trata de un
prototipo y que no es el producto final; para explicar esta diferencia podemos hacer una
analogía con las maquetas de los arquitectos. El prototipo tangible/usable también resulta
de suma utilidad cuando nos encontramos frente a un requerimiento no funcional de
usabilidad, más precisamente, el de facilidad de uso.
Entre las deventajas más importantes de los prototipos que podemos mencionar, se
encuentran:
• Costo de entrenamiento/capacitación en la herramienta
• Costo de realizar el prototipo.
• Problema de calendario.
• Incompletitud (puede confundir a los usuarios, haciendolos pensar que el producto
final quedará como el prototipo, incompleto).
Esta herramienta puede ser utilizada para capturar el vocabulario del sistema que se está
desarrollando. Mediante ella podemos incluir abstracciones que forman parte del dominio.
Es una buena forma para obtener un idea general de cómo funciona el negocio (relaciones
entre las clases/concepto), y capturar vocabulario y conceptos (clase). También es de
ayuda para incluir nuevos conceptos al glosario.
Glosario
El glosario es una simple lista de términos en donde se explica su significado. En esta lista
se incluyen y definen todos los términos que requieren explicación, mejorando así la
comunicación intergrupal y la ocmunicación con el cliente, y mitigando el riesgo de malos
entendidos. Los términos que se incluyen provienen de todas las áreas del proyecto:
41
Asignatura: Ingeniería de Requerimientos
casos de uso, terminología propia del negocio, etc. El glosario se va actualizando durante
el transcurso del proceso de IR, perfeccionándolo en cada nuevo ciclo.
Diagrama de actividad
Para representar un proceso de negocio podemos utlizar otra de las herramientas que nos
proporciona el UML, que es el diagrama de actividad. El diagrama de actividad o diagrama
de proceso, se asemeja a un mapa de procedimientos, mostrando el flujo de actividades:
se toman decisiones (bifurcaciones) de acuerdo a las condiciones (condición de guarda),
para luego pasar a la siguiente actividad o estado (transición). Este modelo también
permite representar actividades que ocurren en paralelo, o aquellos casos en los que una
única actividad desencadena más de una tarea (división de control), o cuando se unen dos
o más actividades para formar una tercera (unión de control).
Por su parte, los requerimientos funcionales definen qué hace el sistema; básicamente
describen todas las entradas y salidas, y las relaciones respectivas, relaciones que el
sistema debe manejar. Resumiendo, y como el nombre lo indica, los requerimientos
funcionales describen las funciones del sistema.
Casos de uso
Esta herramienta es muy fácil de utilizar y proporciona una gran utilidad. En general es
una lista de preguntas que se debe usar para evaluar cada requerimiento. Se verifica y
marca los puntos de esta lista mientras leen el documento de requerimientos. Cuando se
descubren problemas potenciales, deben ser anotados, ya sea en los márgenes del
documento, ya sea en una lista de análisis. Las checklist son útiles porque brindan un
recordatorio de lo que se debe buscar y reducen las chances de pasar por alto alguna
verificación importante. Y no sólo son útiles para verificar requerimientos; también se
puede aplicar con los casos de uso y con los puntos a ser tratados en el plan de agenda.
Este análisis se puede implementar con una hoja de cálculo en donde las filas
representan, por ejemplo, los distintos requerimientos, y las columnas representan los
puntos a verificar (el contenido de la checklist).
42
Asignatura: Ingeniería de Requerimientos
SEGUNDA UNIDAD
Los requerimientos para sistemas software grandes son siempre cambiantes. Una razón
es que estos sistemas normalmente se desarrollan para abordar problemas «traviesos».
Debido a que el problema no puede definirse completamente, es muy probable que los
requerimientos del software sean incompletos. Durante el proceso del software, la
comprensión del problema por parte de los stakeholders está cambiando constantemente.
Estos requerimientos deben entonces evolucionar para reflejar esta perspectiva cambiante
del problema. Además, una vez que un sistema se ha instalado, inevitablemente surgen
nuevos requerimientos. Es difícil para los usuarios y clientes del sistema anticipar qué
efectos tendrá el sistema nuevo en la organización. Cuando los usuarios finales tienen
experiencia con un sistema, descubren nuevas necesidades y prioridades:
43
Asignatura: Ingeniería de Requerimientos
Existen muchas relaciones entre los requerimientos y entre éstos y el diseño del sistema.
También existen vínculos entre los requerimientos y las razones fundamentales por las
que éstos se propusieron. Cuando se proponen cambios, se debe rastrear el impacto de
estos cambios en los otros requerimientos y en el diseño del sistema. El rastreo es una
propiedad de la especificación de requerimientos que refleja la facilidad de encontrar
requerimientos relacionados.
44
Asignatura: Ingeniería de Requerimientos
Para sistemas pequeños, es posible que no sea necesario utilizar herramientas de gestión
de requerimientos especializadas. El proceso de gestión de requerimientos puede llevarse
a cabo utilizando los recursos disponibles en los procesadores de texto, hojas de cálculo y
bases de datos en PC. Sin embargo, para sistemas grandes, se requieren herramientas de
ayuda más especializadas. En el sitio web del libro he incluido enlaces a herramientas de
gestión de requerimientos como DOORS y RequisitePro.
La gestión del cambio de los requerimientos se debe aplicar a todos los cambios
propuestos en los requerimientos. La ventaja de utilizar un proceso formal para gestionar
el cambio es que lodos los cambios propuestos son tratados de forma consistente y que
los cambios en el documento de requerimientos se hacen de forma controlada. Existen
tres etapas principales en un proceso de gestión de cambio:
45
Asignatura: Ingeniería de Requerimientos
SEGUNDA UNIDAD
Clases de Prototipos
La palabra prototipo se usa de muchas formas diferentes. En lugar de intentar sintetizar to-
dos estos usos en una sola definición o de tratar de convenir en un enfoque correcto al
tema un tanto polémico de la elaboración de prototipos, ilustramos la manera en que cada
una de varias concepciones de la elaboración de prototipos se puede aplicar
convenientemente en una situación particular.
Prototipo corregido. La primera clase de elaboración de prototipos tiene que ver con la
construcción de un sistema que funciona pero se corrige simultáneamente. En la
ingeniería a este enfoque se le llama elaboración de una tabla experimental: la creación,
46
Asignatura: Ingeniería de Requerimientos
47
Asignatura: Ingeniería de Requerimientos
Elaboración de Prototipos
La segunda preocupación sobre el uso del SDLC es que los requerimientos del usuario
cambian a través del tiempo. Los requerimientos del usuario evolucionan durante el
considerable intervalo existente entre el análisis de los requerimientos del usuario y la
fecha en que se entrega el sistema final. Por lo tanto, debido al extenso ciclo del
desarrollo, el sistema resultante podría ser criticado por abordar deficientemente los
requerimientos de información del usuario actual.
El enfoque que apoyamos aquí es usar la elaboración de prototipos como una parte del
SDLC tradicional. Desde esta perspectiva, la elaboración de prototipos se considera como
un método adicional y especializado para determinar los requerimientos de información de
los usuarios.
Si los costos del tiempo de programadores y analistas y los del equipo que
utilizarán están dentro del presupuesto, se puede proceder a la elaboración del prototipo.
La elaboración de prototipos es una excelente forma de facilitar la integración del
sistema de información con el sistema principal de la organización. Una vez que se ha
tomado la decisión de elaborar un prototipo, se deben observar cuatro lineamientos
principales al integrar la elaboración de prototipos con la fase de determinación de
requerimientos del SDLC:
48
Asignatura: Ingeniería de Requerimientos
Como puede ver, los lineamientos sugieren acciones relativas al prototipo que
necesariamente se interrelacionan. Cada uno de los lineamientos se explica en las
subsecciones siguientes.
49
Asignatura: Ingeniería de Requerimientos
desventajas contra las ventajas conocidas al decidir si hace el prototipo, cuándo lo hace y
de qué partes del sistema lo hace.
Hay tres formas principales en las que un usuario puede ayudar en la elaboración de
prototipos:
Los usuarios deben tener libertad para experimentar con el prototipo. En contraste
con una simple lista de características de sistemas, el prototipo permite a los usuarios la
interacción real. Una forma de facilitar esta interacción es instalar un prototipo en un
sitio Web interactivo.
Los analistas necesitan estar presentes por lo menos en el momento en que ocurre la
experimentación. Entonces pueden observar las interacciones de los usuarios con el
sistema, y están obligados a ver las interacciones que nunca planearon.
50
Asignatura: Ingeniería de Requerimientos
SEGUNDA UNIDAD
Hay tres fases amplias del RAD que vinculan a usuarios y analistas en la evaluación,
diseño e implementación. Observe que el RAD involucra a los usuarios en cada parte
del esfuerzo de desarrollo, con una intensa participación en la parte de negocios del
diseño.
51
Asignatura: Ingeniería de Requerimientos
Taller de diseño del RAD. El proceso de diseñar y refinar los prototipos se puede
representar mejor como un taller. Cuando imagina un taller, sabe que la participación es
intensa, no pasiva, y que generalmente se hace con las manos. Normalmente los usuarios
están sentados en mesas redondas o en una configuración en forma de “U” de
sillas con escritorios adheridos donde cada persona puede ver a otra y donde hay
espacio para trabajar con una computadora portátil. Si usted es bastante afortunado para
disponer de un salón para sistemas de apoyo a la toma de decisiones en grupo (GDSS) en
la compañía o a través de una universidad local, utilícelo para conducir por lo menos una
parte de su taller de diseño de RAD. Durante el taller de diseño del RAD, los usuarios
responden a los prototipos operativos reales y los analistas refinan los módulos diseñados
(utilizando algunas de las herramientas de software que se mencionan más adelante)
basados en las respuestas del usuario. El formato del taller es muy emocionante y
estimulante, y si están presentes los usuarios y los analistas experimentados, no hay
ninguna duda de que este esfuerzo creativo puede impulsar el desarrollo a gran velocidad.
Fase de implementación. Tan pronto como sean convenidos estos aspectos y los
sistemas sean construidos y se refinen, los nuevos sistemas, o parte de ellos, son
probados e introducidos en la organización. Debido a que el RAD se puede usar para
crear las nuevas aplicaciones de comercio electrónico para las cuales no hay ningún
sistema viejo, por lo general no se necesita ejecutar los sistemas viejos y nuevos en
paralelo antes de la implementación (además que no hay forma real de hacerlo). En este
punto, el taller de diseño del RAD habrá generado el interés, sentido de perte- nencia del
usuario y la aceptación de la nueva aplicación. Generalmente, el cambio que se produce
de esta forma es mucho menos doloroso que cuando un sistema se entrega con poca o
ninguna participación del usuario.
Programación Extrema
Cuatro valores de XP. Hay cuatro valores que crean un entorno en el cual se pueden
servir adecuadamente diseñadores y negocios. Debido a que con frecuencia hay una
tensión entre lo que los diseñadores hacen a corto plazo y lo que es comercialmente
deseable a largo plazo, es importante que esté consciente de apoyar valores que formarán
una base para colaborar jun- tos en un proyecto de software. Los cuatro valores son
comunicación, sencillez, retroalimentación y valentía.
52
Asignatura: Ingeniería de Requerimientos
53
Asignatura: Ingeniería de Requerimientos
desarrollo de software más parecidos al ideal? Una razón para que esto no ocurra se
debe a que hasta ahora estamos intentando operar en un sistema poco claro de valores
compartidos. Son un buen principio, pero realmente no son operativos en el punto en que
podamos medir nuestro éxito de forma significativa. De manera que trabajamos para
derivar los principios básicos que nos pueden ayudar a verificar si lo que estamos
haciendo en nuestro proyecto de software realmente está midiendo los valores que
compartimos. Aunque hay alrededor de una docena de principios que podemos derivar de
nuestros va- lores, los principios básicos que describimos son: proporcionar una rápida
retroalimentación, dar por hecho la sencillez, cambiar progresivamente, aceptar el cambio
y alentar el trabajo de calidad.
El principio básico para recordar respecto a la retroalimentación rápida es que para que
las personas o los sistemas hagan una conexión entre estímulo y reacción, la
retroalimentación debe ocurrir en un intervalo razonablemente corto. Si a una impresora se
le termina el papel, debe desplegar instantáneamente un mensaje "no hay papel"
como retroalimentación para el usuario, de manera que la situación se pueda remediar y
la impresión pueda continuar. La retroalimentación rápida para el equipo de desarrollo
significa que entre más cercano sea el tiempo de una acción [codificar una característica
derivada de un reporte del usuario) al tiempo de la comprobación, más significativa será la
retroalimentación (los resultados de la prueba}. Entre más pronto en la vida de un sistema
éste se ponga en producción (en lugar de simplemente estar en desarrollo), mayor será el
valor de la retroalimentación para el negocio al medir si el sistema está cumpliendo sus
metas.
El tercer principio que examinamos es el cambio progresivo. Esto significa que usted
constantemente está haciendo el cambio más pequeño posible que aún resulte en una
diferencia en el esfuerzo de desarrollo. Ningún cambio mayor en el código, el equipo y los
requerimientos del negocio. Ellos requieren cambio progresivamente, incluso después de
que se libera el producto. Esto se adapta bien con la idea de XP de evolución.
Existen algunos principios más que ayudarán a los desarrolladores a saber cómo proceder
cuando surja una situación particular. En pocas palabras: incluyen la obligación de
enseñar a aprender; el estímulo para hacer una pequeña inversión inicial de manera
que se haga un buen, pero no extravagante, trabajo; jugar para ganar, no jugar para
evitar perder; y usar experimentos concretos para probar el trabajo que se está haciendo.
Otros conceptos importantes que apoyan la programación extrema son la idea de usar la
comunicación abierta y honrada sin miedo; aprovechar las tendencias naturales de las
54
Asignatura: Ingeniería de Requerimientos
personas (querer ser exitoso, interactuar con otros, tener la autonomía en su trabajo, ser
parte de un equipo ganador, ser confiado, tener en funcionamiento su software); asumir la
responsabilidad de hacer algo en lugar de ordenarle a alguien que lo haga; adaptar
localmente el enfoque que está aprendiendo para la programación extrema; y buscar
utilizar una medida honrada que no pretenda alcanzar una precisión que no existe.
Codificar se designa como una actividad dado que no es posible hacer nada sin
ella. Un autor afirma que la cosa más valiosa que recibimos de la codificación es el
"aprendizaje". El proceso básicamente es esto: tenga un pensamiento, codifíquelo,
pruébelo y vea si ese pensamiento era lógico. También se puede codificar para comunicar
ideas que de otra manera permanecerían borrosas o sin forma. Cuando veo su
código, puedo generar un nuevo pensamiento. El código fuente es la base para que un
sistema sobreviva. Es esencial para el desarrollo.
La cuarta actividad básica en el desarrollo es diseñar, lo cual es una forma de crear una
estructura para organizar toda la lógica en el sistema. Diseñar es una actividad evolutiva,
y por ello los sistemas que se diseñan con un enfoque de la programación extrema se
conceptualizan como en constante evolución, siempre diseñándose.
Con frecuencia un buen diseño es simple. También, éste debe permitir la flexibilidad:
Diseñar bien permite agregar extensiones al sistema haciendo cambios en un solo
lugar. El diseño eficaz ubica la lógica cerca de los datos en que estará operando. Sobre
todo, el diseño debe ser útil para todos aquellos que lo necesitarán conforme
avance el esfuerzo de desarrollo, incluyendo a clientes y programadores. Cuatro
variables de control de recursos de XP Con el objetivo de lograr las actividades descritas
anteriormente, los analistas de XP necesitan recursos. Se pueden ajustar cuatro recursos
55
Asignatura: Ingeniería de Requerimientos
para completar el proyecto antes de una fecha límite: tiempo, costo, calidad y alcance.
Cuando se incluyen adecuadamente estas cuatro variables de control en la
planeación, hay un estado de equilibrio entre los recursos y las actividades necesarias
para completar el proyecto.
1. La liberación limitada significa que el equipo de desarrollo reduce el tiempo entre las
liberaciones de su producto. En lugar de liberar una versión completamente
desarrollada por un año, usando la práctica de liberación limitada reducirán el tiempo
de liberación incluyendo primero las características más importantes, liberando ese
sistema o producto y mejorándolo después.
2. La semana de trabajo de 40 horas significa que los equipos de desarrollo de XP
apoyan conscientemente una práctica esencial cultural en la cual el equipo labora
intensamente en conjunto durante una semana típica de 40 horas de trabajo. Como
consecuencia a esta práctica, la cultura refuerza la idea de que trabajar horas extras
por más de una semana en un turno es muy malo para la salud del proyecto y
los diseñadores. Esta práctica esencial intenta motivar a los miembros del
equipo a trabajar intensamente durante sus horas de trabajo, y después tomar
un descanso para que cuando vuelvan estén relajados y menos estresados. Esto
ayuda a los miembros del equipo a identificar los problemas más rápidamente, y
previene errores costosos y omisiones debido al desempeño ineficaz o
desgastante.
3. El cliente en el sitio significa que un usuario experto en los aspectos de
negocios del proyecto en desarrollo está en el sitio durante este proceso. Esta
persona es fundamental para el proyecto, escribe las historias del usuario, comunica
a los miembros del equipo, ayuda a priorizar y equilibrar las necesidades de largo
plazo del negocio y toma de- cisiones sobre qué características se deben incluir
primero.
4. La programación en parejas es una práctica esencial importante. Significa que
usted trabaja con otro programador de su propia elección. Ambos codifican, ambos
aplican las pruebas. Con frecuencia, la persona con más experiencia tomará el
mando de la codificación inicial, pero conforme se involucra la persona con menos
experiencia, cualquiera de los dos que tenga la visión más clara de la meta trabajaría
en la codificación. Cuando le pide a otra persona que trabaje con usted, el
protocolo de la programación en parejas dice que está obligada a aceptar.
Trabajar con otro programador le ayuda a aclarar su pensamiento. Las parejas
cambian con frecuencia, sobre todo durante la fase de exploración del proceso
de desarrollo. La programación en parejas ahorra tiempo, reduce las
distracciones, activa la creatividad y es una forma divertida de programar.
Ahora que ha aprendido algo de las actividades, los recursos y las prácticas esenciales de
XP, podemos poner en práctica dicho conocimiento. Esta sección describe el proceso de
desarrollo de la programación extrema, explica los detalles involucrados en el registro de
las historias del usuario y examina algunas de las herramientas disponibles actualmente
para desarrollar sistemas con un enfoque de XP.
56
Asignatura: Ingeniería de Requerimientos
Las cinco fases del proceso de desarrollo de XP son la exploración, planeación, iteracio
nes a la primera versión, puesta en producción y mantenimiento. La sección siguiente
describe específicamente cómo se despliega una sesión típica de trabajo de XP durante
el proceso de desarrollo. Por ejemplo, el proceso típico sería asumir una tarea que se
relaciona directamente a una característica del sistema que un cliente desea,
probarla, implementarla en un diseño existente, e integrarla, todo esto durante un solo
episodio del desarrollo. El día podría empezar al analizar el reporte de un usuario pedido
en una cédula, en el cual se registra una tarea específica. Durante un informe, pedido
para la reunión, usted hace unas preguntas sobre el trabajo hecho el día anterior que
podría ayudar en esta tarea. Después le pide a otro programador que le ayude en la tarea.
Se consulta rápidamente a otros expertos en el sitio que podrían conocer las respuestas a
las preguntas específicas.
Aún y cuando el título de esta sección sea "Cómo escribir las historias de XP", el énfasis
en la creación de las historias del usuario está en la interacción hablada entre
desarrolladores y usuarios, no en la comunicación escrita. En las historias del
usuario, el desarrollador ante todo busca identificar los requerimientos valiosos del
usuario de negocios. Generalmente los usuarios estarán ocupados diariamente en las
conversaciones con los desarrolladores sobre el significado de las historias del
usuario que han escrito. Estas conversaciones frecuentes son interacciones
determinadas que tienen como su meta la prevención de malos entendidos o malas
interpretaciones de los requerimientos del usuario. Por lo tanto, las historias del
usuario sirven como recordatorios para los desarrolladores que deben sostener
conversaciones seguras para dichos requerimientos.
Hay muchos tipos diferentes de herramientas disponibles que dan soporte a las
actividades que necesitaría realizar al hacer el desarrollo de XP. Se incluyen
herramientas que facilitan la colaboración tales como Wilci Wiki, Whiteboard, Project
Web, NetMeeting e IBM's Rational Project Console. También hay herramientas tales
como IBM's Pational ClearCase, Visual Intercept, Compuware Track Record y Bliplt que
dan soporte a la admi nistración de defectos.
57
Asignatura: Ingeniería de Requerimientos
código fuente, incluyendo CVS, Visual Source Safe y PVCS. Por último, hay una clase
de herramientas con la cual probablemente ya está familiarizado, los entornos de
desarrollo de IBM VisualAge, Microsoft Visual Studio .NET y JBuilder.
Scrum
En 1991 Peter DeGrace y Leslie Stahl en su libro Wicked Problems, Righteous Solutions
(A problemas malvados, soluciones virtuosas), se refirieron a esta aproximación como
Scrum, un término propio del rugby mencionado en el artículo por Takeuchi y Nonaka.
A principios de los años 1990 Ken Schwaber empleó una aproximación que lo llevó a
poner en práctica el scrum en su compañía, Advanced Development Methods. Por aquel
tiempo Jeff Sutherland desarrolló una aproximación similar en Easel Corporation y fue el
primero en denominarla Scrum. En 1995 Schwaber y Sutherland, durante el OOPSLA '95
desarrollado en Austin, presentaron en paralelo una serie de artículos describiendo scrum,
siendo ésta la primera aparición pública de la metodología. Durante los años siguientes,
Schwaber y Sutherland, colaboraron para consolidar los artículos antes mencionados, así
como sus experiencias y el conjunto de mejores prácticas de la industria que conforman a
lo que ahora se le conoce como scrum. En 2001, Schwaber y Mike Beedle describieron la
metodología en el libro Agile Software Development with Scrum.
Características de Scrum
Durante cada sprint, un periodo entre 15 y 30 días (la magnitud es definida por el equipo),
el equipo crea un incremento de software potencialmente entregable (utilizable). El
conjunto de características que forma parte de cada sprint viene del Product Backlog, que
es un conjunto de requisitos de alto nivel priorizados que definen el trabajo a realizar. Los
elementos del Product Backlog que forman parte del sprint se determinan durante la
reunión de Sprint Planning. Durante esta reunión, el Product Owner identifica los
elementos del Product Backlog que quiere ver completados y los hace del conocimiento
del equipo. Entonces, el equipo determina la cantidad de ese trabajo que puede
comprometerse a completar durante el siguiente sprint.[4] Durante el sprint, nadie puede
cambiar el Sprint Backlog, lo que significa que los requisitos están congelados durante el
sprint.
58
Asignatura: Ingeniería de Requerimientos
Roles en Scrum
En Scrum se definen varios roles, estos están divididos en dos grupos: cerdos y gallinas.
El nombre de los grupos están inspirados en el chiste sobre un cerdo y una gallina que se
relata a continuación.
Un cerdo y una gallina se encuentran en la calle. La gallina mira al cerdo y dice: "Hey,
¿por qué no abrimos un restaurante?" El cerdo mira a la gallina y le dice: "Buena idea,
¿cómo se llamaría el restaurante?" La gallina piensa un poco y contesta: "¿Por qué no lo
llamamos "Huevos con jamón?" "Lo siento pero no", dice el cerdo, "Yo estaría
comprometido pero tú solamente estarías involucrada".
De esta forma, los cerdos están comprometidos a construir software de manera regular y
frecuente, mientras que el resto son gallinas: interesados en el proyecto pero realmente
irrelevantes porque, si éste falla, no son un cerdo, es decir, no son los que de manera
comprometida ponen su propio pellejo (y carne) para sacar el proyecto adelante. Las
necesidades, deseos, ideas e influencias de los roles gallina se tienen en cuenta, pero no
de forma que pueda afectar, distorsionar o entorpecer el proyecto Scrum.
Roles "Cerdo"
Los Cerdos son los que están comprometidos con el proyecto y el proceso Scrum; ellos
son los que "ponen el jamón en el plato".
Product Owner
El Product Owner representa la voz del cliente. Se asegura de que el equipo Scrum
trabaja de forma adecuada desde la perspectiva del negocio. El Product Owner escribe
historias de usuario, las prioriza, y las coloca en el Product Backlog.
ScrumMaster (o Facilitador)
El Scrum es facilitado por un ScrumMaster, cuyo trabajo primario es eliminar los
obstáculos que impiden que el equipo alcance el objetivo del sprint. El ScrumMaster no es
el líder del equipo (porque ellos se auto-organizan), sino que actúa como una protección
entre el equipo y cualquier influencia que le distraiga. El ScrumMaster se asegura de que
el proceso Scrum se utiliza como es debido. El ScrumMaster es el que hace que las reglas
se cumplan.
Equipo
El equipo tiene la responsabilidad de entregar el producto. Un pequeño equipo de 5 a 9
personas con las habilidades transversales necesarias para realizar el trabajo (diseñador,
desarrollador, etc).
Roles "Gallina"
Los roles gallina en realidad no son parte del proceso Scrum, pero deben tenerse en
cuenta. Un aspecto importante de una aproximación ágil es la práctica de involucrar en el
59
Asignatura: Ingeniería de Requerimientos
Usuarios
Es el destinatario final del producto. Como bien lo dice la paradoja, El árbol cae en el
bosque cuando no hay nadie ¿Hace ruido? Aqui la definicion sería Si el software no es
usado ¿fue alguna vez escrito?.
Managers
Es la gente que establece el ambiente para el desarrollo del producto.
Reuniones en Scrum
Daily Scrum
Cada día de un sprint, se realiza la reunión sobre el estado de un proyecto. Esto se llama
"daily standup". El scrum tiene unas guías específicas:
Scrum de Scrum
La agenda será la misma como del Daily Scrum, además de las siguientes cuatro preguntas:
60
Asignatura: Ingeniería de Requerimientos
Al inicio del ciclo Sprint (cada 15 o 30 días), una “Reunión de Planificación del Sprint” se lleva
a cabo.
Al final del ciclo Sprint, dos reuniones se llevaran a cabo: la “Reunión de Revisión del Sprint” y
la “Retrospectiva del Sprint”
Después de cada sprint, se lleva a cabo una retrospectiva del sprint, en la cual todos los
miembros del equipo dejan sus impresiones sobre el sprint recién superado. El propósito
de la retrospectiva es realizar una mejora continua del proceso. Esta reunión tiene un
tiempo fijo de cuatro horas.
Documentos
Product backlog
El product backlog es un documento de alto nivel para todo el proyecto. Contiene
descripciones genéricas de todos los requerimientos, funcionalidades deseables, etc.
priorizadas según su valor para el negocio (business value). Es el qué va a ser construido.
Es abierto y cualquiera puede modificarlo. Contiene estimaciones grosso modo, tanto del
valor para el negocio, como del esfuerzo de desarrollo requerido. Esta estimación ayuda al
product owner a ajustar la línea temporal y, de manera limitada, la prioridad de las
diferentes tareas. Por ejemplo, si dos características tienen el mismo valor de negocio la
que requiera menos tiempo de desarrollo tendrá probablemente más prioridad, debido a
que su ROI será más alto.
Sprint backlog
El sprint backlog es un documento detallado donde se describe el cómo el equipo va a
implementar los requisitos durante el siguiente sprint. Las tareas se dividen en horas con
ninguna tarea de duración superior a 16 horas. Si una tarea es mayor de 16 horas, deberá
ser rota en mayor detalle. Las tareas en el sprint backlog nunca son asignadas, son
tomadas por los miembros del equipo del modo que les parezca oportuno.
Burn down
La burn down chart es una gráfica mostrada públicamente que mide la cantidad de
requisitos en el Backlog del proyecto pendientes al comienzo de cada Sprint. Dibujando
una línea que conecte los puntos de todos los Sprints completados, podremos ver el
progreso del proyecto. Lo normal es que esta línea sea descendente (en casos en que
todo va bien en el sentido de que los requisitos están bien definidos desde el principio y no
varían nunca) hasta llegar al eje horizontal, momento en el cual el proyecto se ha
terminado (no hay más requisitos pendientes de ser completados en el Backlog). Si
durante el proceso se añaden nuevos requisitos la recta tendrá pendiente ascendente en
61
Asignatura: Ingeniería de Requerimientos
62
Asignatura: Ingeniería de Requerimientos
REFERENCIAS BIBLIOGRÁFICAS
63