TFMMlJGarciaRodriguezRUO PDF
TFMMlJGarciaRodriguezRUO PDF
TFMMlJGarciaRodriguezRUO PDF
!
!
! !
!
UNIVERSIDAD*DE*OVIEDO*
!
DEPARTAMENTO DE EXPLOTACIÓN Y PROSPECCIÓN DE MINAS
Estudio!comparativo!entre!las!
metodologías!ágiles!y!las!metodologías!
tradicionales!para!la!gestión!de!proyectos!
software!
!
*
*
Autor: Manuel José García Rodríguez
Director: Ramiro Concepción Suárez
Julio 2015!
Resumen
Este TFM tiene como finalidad adentrarse en el estudio de los métodos de gestión de
proyectos de tipo software. Estos proyectos tienen una serie de particularidade que lo hacen
distintos al resto de proyectos de ingeniería. Las más importantes es que son intensivos en
mano de obra (el desarrollo de software es un proceso intelectual que no se puede auto-
matizar) y en muchos proyectos hay una pobre definición del alcance. Consecuentemente,
las metodologías para gestionar estos proyectos tendrán que abordar estas problemáticas
y conseguir que el proyecto acabe en plazo, coste y calidad.
Se comienza realizando una introducción sobre la Ing. de Software, la gestión de pro-
yectos y las causas de sus fracasos. Después se estudia las principales metodologías tra-
dicionales, aquellas que se pueden englobar en el paradigma waterfall (cascada), y las
metodologías ágiles que asumen que no se pueden establecer los requisitos en la fase ini-
cial del proyecto. Por último, se comparan ambas familias de metodologías desde varios
puntos de vista: áreas de conocimiento que gestionan, retorno de la inversión y coste de
los cambios.
Palabras clave: ingeniería de software, gestión proyectos software, metodologías tradi-
cionales, cascada, metodologías ágiles, comparativa, PMBOK, PRINCE2, ICB, SWEBOK,
ISO 21500, AM, ASD, AUP, Crystal, DSDM, FDD, LSD, SCRUM, XP
i
Abstract
The aim of this TFM is study methodologies of software project management. These
projects have a lot of issues that make it different from other engineering projects. The
most important issue is that projects are labour intensive (software development is an
intellectual process that can not be automated) and many projects have a poor scope
definition. Consequently, these methodologies have to manage these troubles and get the
project finished on time, cost and quality.
It begins with an introduction of software engineering, project management and the
causes of their failures. It continues studying the main traditional methodologies, those
that can be included in the waterfall paradigm, and then agile methodologies that assume
that it can not set the requirements in the initial phase of the project. Finally, the two
families of methodologies are compared from several points of view: knowledge areas they
manage, return on investment and cost of changes.
Keywords: software engineering, software project management, traditional methodo-
logies, waterfall, agile methodologies, comparative, PMBOK, PRINCE2, ICB, SWEBOK,
ISO 21500, AM, ASD, AUP, Crystal, DSDM, FDD, LSD, SCRUM, XP
ii
Agradecimientos
Sería injusto no hacer un breve agradecimiento a las personas que, directa o indirecta-
mente, me han ayudado de alguna manera en poder realizar este Trabajo Fin de Máster.
Cuanto más creces como persona y profesional más cuenta te das que casi cualquier tra-
bajo intelectual que realiza una persona es gracias a la ayuda que te han brindado a lo
largo de la vida tus profesores, tus compañeros, tus familiares y también al buen trabajo
realizado previamente por otras personas sobre el tema.
Quisiera dar las gracias a mi tutor Ramiro Concepción Suárez y a los profesores del
Máster, con especial atención y admiración a su director Francisco Ortega Fernández.
También quisiera dar las gracias a mi familia y amigos por su cariño y apoyo constante.
Y, por último, quisiera citar el texto alojado en la placa de inauguración de la presa
hidráulica de Belesar (Lugo, Galicia) en 1963. Porque vivimos en una sociedad donde
importa más el hoy que el mañana y, sin embargo, nos debería importar mucho más el
mañana que el hoy.
iii
Índice
Índice IV
Índice de tablas X
Glosario XI
I MEMORIA DESCRIPTIVA 1
1. Introducción 2
1.1. Estructura del Trabajo Fin de Máster . . . . . . . . . . . . . . . . . . . 2
1.2. Gestión de proyectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Qué es software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Motivación, objetivos y fuentes de información . . . . . . . . . . . . . . 6
1.5. El fracaso de los proyectos software . . . . . . . . . . . . . . . . . . . . 8
1.6. Visión tradicional vs ágil . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2. Ingeniería de Software 15
iv
Índice v
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2. Dirección de proyectos software . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1. Oficina de Gestión de Proyectos Software . . . . . . . . . . . . . 18
2.2.2. Project manager . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3. Evolución histórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4. Principios y nomenclatura . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5. Modelos de ciclo de vida . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.1. Cascada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.2. V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5.3. Incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5.4. Prototipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5.5. Espiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5.6. Concurrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.5.7. Proceso Unificado . . . . . . . . . . . . . . . . . . . . . . . . . 30
3. Metodologías tradicionales 34
3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2. PMBOK / ISO 21500 . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.3. Diferencias entre PMBOK e ISO 21500 . . . . . . . . . . . . . . 38
3.3. ICB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4. PRINCE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5. SWEBOK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Índice vi
3.5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.6. Otras metodologías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.6.1. SSADM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.6.2. MERISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.6.3. MÉTRICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.6.4. APMBOK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.6.5. P2M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4. Metodologías Ágiles 53
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2. Metodologías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2.1. Agile Modeling (AM) . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2.2. Adaptive Software Development (ASD) . . . . . . . . . . . . . . 57
4.2.3. Agile Unified Process (AUP) . . . . . . . . . . . . . . . . . . . . 58
4.2.4. Crystal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.2.5. Dynamic Systems Development Method (DSDM) . . . . . . . . 61
4.2.6. Feature Drive Development (FDD) . . . . . . . . . . . . . . . . 64
4.2.7. Lean Software Development (LSD) . . . . . . . . . . . . . . . . 66
4.2.8. eXtreme Programming (XP) . . . . . . . . . . . . . . . . . . . . 69
4.2.9. Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.2.10. Kanban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.2.11. Scrumban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6. Conclusiones finales 89
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.2. Líneas futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
II ANEXOS 92
B. Manifiesto Ágil 96
Referencias 98
Índice de figuras
viii
Índice de figuras ix
x
Glosario
AM Agile Modeling
xi
Glosario xii
IT Information Technology
XP eXtreme Programming
Parte I
MEMORIA DESCRIPTIVA
1
Capítulo Primero
Introducción
2
1. Introducción 3
Cap. 6: Conclusiones finales. Conclusiones del trabajo y líneas futuras del campo.
Hay muchas deficiones de lo que es un proyecto y su gestión por ser unos términos
generales que tienen bastantes ámbitos de actuación. Dos posibles definiciones serían las
siguientes.
Una gestión eficiente de proyectos es muy importante para las organizaciones por di-
versos motivos como la alta complejidad de los proyectos, la fuerte competencia entre
empresas, la reducción de costes e ineficiencias, la gestión de equipos humanos, asegurar
la calidad, la diversidad de involucrados en el proyectos, el control de la desviación según
la planificación y un largo etcétera.
Dentro de una organización (figura 1.1) un grupo de proyectos pueden formar un pro-
grama (línea de negocio) y estos a su vez un portfolio (área de negocio). El presente trabajo
estudiará algunos aspectos de la gestión de un tipo de proyectos (software), quedando fue-
ra la gestión de programas y portfolios. Para más información consultar 1.4 Relationships
among Portfolio Management, Program Management, Project Management and organi-
zational Project Management [1].
• Instrucciones (código de ordenador) que cuando son ejecutadas proveen las deseadas
características, funciones y rendimiento; estructuras de datos que permiten a los
programas manipular información e información descriptiva para la operación y uso
de los programas (Pressman, 2010, [12]).
ficaciones, estándares, metodologías, etc... Esto lleva a pensar a que realizar un proyecto
desde el punto de visto técnico y de gestión ha sido y sigue siendo complejo.
¿Cómo se podría definir la Ing. de Software? Se enuncian algunas definiciones en orden
cronológico.
La definición se ha ido ampliando cada vez más a lo largo de los años y evolucionando
para adaptarse a la realidad. Hay que desterrar la creencia de que el software es tan
sólo el código que se ejecuta en una máquina. Cualquier sistema software necesita una
buena documentación para poder comprender su diseño, su arquitectura y los requisitos
que satisface para poder operar, mantener y realizar evolutivos en el futuro.
Si nos atenemos solamente al código, Sommerville [13] enumera los siguientes carac-
terísticas que definen a un buen software.
Mantenibilidad: el código debe estar escrito de tal manera que pueda evolucionar
para satisfacer las necesidades cambiantes del cliente. Esto es un atributo crítico
porque los cambios son inevitables en un entorno empresarial cambiante.
Eficiencia: el software no debe hacer un uso excesivo de recursos del sistema. Por
lo tanto, la eficiencia incluye la capacidad de respuesta, el tiempo de procesa-
miento, la utilización de la memoria, etc...
Aceptabilidad: el software debe ser aceptado por los usuarios para el que fue di-
señado. Esto significa que debe ser comprensible, útil y compatible con otros
sistemas que utilizan.
Este Trabajo Fin de Máster (TFM) tiene como objetivo presentar y comparar las distin-
tas metodologías de dirección de proyectos dentro del sector de la Ingeniería de Software.
Este sector tiene particularidades propias que lo distinguen del resto de ingenierías y, con-
secuentemente, la forma de abordar la dirección y gestión de los proyectos será distinta.
A juicio del autor, algunas particularidades relevantes son:
• El principal y casi exclusivo recurso para realizar el proyecto son los ingenieros soft-
ware. Por tanto, toda la actividad del proyecto recae en las personas no pudiendo
sistematizar o automatizar gran parte de los trabajos como ocurre en otras ingenie-
rías.
• Generalmente los proyectos empiezan con unas especificaciones vagas porque el clien-
te no sabe especificar en detalle los requisitos y es a medida que avanza el proyecto
cuando va haciendo modificaciones o ampliaciones.
• Aun suponiendo que se tengan unos requisitos totalmente detallados del proyecto
(inviable en la práctica), la traducción de éstos a código software supone una ac-
tividad creativa en mayor o menor medida porque cada individuo piensa de manera
distinta a los demás.
• Hay que definir métricas propias para evaluar y controlar el desarrollo del proyecto
por ser una actividad intelectual realizada por personas. No es fácil realizar esta tarea
de supervisión como sí ocurre en otras ingenierías.
• La Ing. Software es relativamente nueva (década de los 50 del siglo XX) y no hay
tanta experiencia en la gestión y dirección de proyectos como otras ingenierías con
más recorrido e historia.
Por éstas y otras razones han surgido diversas metodologías que tratan de estandarizar
la gestión y dirección de proyectos software. Los más importantes y que se van a estudiar
en este TFM son:
ISO 21500, ICB, PRINCE2 y SWEBOK) y las ágiles. Estas últimas suponen un cambio
de paradigma frente a las primeras y parten de la verdad empírica de que no se pueden
establecer los requisitos en la fase inicial del proyecto software, sino que lo que hay que
fijar son los recursos y los plazos y los requisitos y alcance irán cambiando a lo largo del
desarrollo del proyecto. Para entender y elaborar el grupo de metodologías ágiles se ha
consultado la bibliografía [8], [9], [11] y [14].
Para realizar la comparación entre ambos grupos se han consultados los artículos [16],
[21], [24] y [25]. También se han consultado artículos donde sólo se comparan metodologías
ágiles [18] y el impacto que ocasionan en la gestión del proyecto [19]. El autor ha tenido
especial interés en buscar bibliografía donde se trate la evolución histórica del desarrollo
software [17] y [23] para tener una perspectiva de hacia qué caminos se tiende a ir.
Además de leer y estudiar bibliografía especializada, se han consultado libros de Ing.
de Software ([12] y [13]) para comprender mejor todo lo que involucra a esta disciplina y
cómo puede afectar a la dirección de proyectos. También se ha estudiado con detenimiento
las causas que provocan los fracasos de los proyectos software [15] y [22].
Para tener una idea aproximada de qué es lo que se espera de un TFM se han consultado
varias Tesis Doctorales y TFM [26-29] relacionadas con la temática objeto de estudio.
Hoy en día Internet resulta de extraordinario valor para conseguir casi cualquier tipo
de información que se desee. Casi toda de la bibliografía previamente comentada se han
conseguido de varios repositorios científicos especializados y universitarios [43-47]. Pa-
ra finalizar la referencia bibliográfica, también se han consultado las páginas web de los
organismos más relevantes en el campo objeto de estudio [30-42].
• No terminaban en plazo.
• No se ajustaban al presupuesto inicial.
• Baja calidad del software generado.
• Software que no cumplía las especificaciones.
• Código inmantenible que dificultaba la gestión y evolución del proyecto.
Todos estos puntos siguen siendo actualmente de suma importancia para el éxito del
proyecto porque todavía no han sido resueltos de manera óptima. Esto hace pensar que
1. Introducción 9
los proyectos software tienen una serie de dificultades propias, intrínsecas al campo. La
Software Engineering Body of Knowledge (SWEBOK) [5] resume muy acertada y conci-
samente estas dificultades.
• Los clientes suelen carecer del conocimiento sobre la complejidad de los proyecto
software, particularmente el impacto de los cambios de requerimientos comenzado
el proyecto.
• Suele haber una rápida tasa de cambio en la tecnología subyacente. Esto no es tan
acusado en otras ingenierías.
Hoy en día se disponen de datos para cuantificar en qué estado finalizan los proyectos
y poder extraer causas. El estudio más citado y relevante es el The CHAOS Report [15]
publicado por el Standish Group. Este grupo se creó en 1985 por una serie de profesionales
de West Yarmouth (Massachussets) para obtener información de los proyectos software
fallidos e intentar encontrar las causas de los fracasos. Su primer informe fue en 1994 y
con el tiempo se ha convertido en un referente sobre los factores que inciden en el éxito o
fracaso de los proyectos. No está exento de críticas (ver referencia [22]) por su opacidad
y posibles sesgos estadísticos aunque hay que decir en su favor que no es trivial conseguir
esta información (sensible para las empresas).
Sus datos dicen ser de más de 50.000 proyectos aunque no permiten el acceso a esta
información. Según el país de origen, aproximadamente el 60 % son empresas de USA,
el 25 % Europeas y las restantes del resto del mundo. Según el tamaño de la empresa,
aproximadamente el 50 % son grandes empresas (Fortune Top 1000 Companies), el 30 %
son de tamaño medio y el 20 % restante son pequeñas empresas.
El Standish Group clasifica los proyectos en tres tipos:
CHAOS RESOLUTION
39% Successful
43%
Failed
udget, and/or with less than
nd functions); and 18% failed Challenged
letion or delivered and never
Project resolution from
18%
2012 CHAOS research.
previous study, as well as a
The low point in
Figura 1.2: Estado de los proyectos a su finalización en el año 2012. Dato de CHAOS Manifesto
2013.
Tabla 1.1: Evolución histórica (2004-2012) de los estado de los proyectos a su finalización. Dato
de CHAOS Manifesto 2013.
Figura 1.3: Estado de los proyectos a su finalización según su tamaño (pequeños y grandes). Dato
de CHAOS Manifesto 2013.
han desarrollado métricas y herramientas eficientes para medir los costes y plazos. Esto
nos lleva a pensar también que estimar (y gestionar) proyectos pequeños es en la práctica
más fácil que estimar grandes proyectos. Esta intuición de sentido común queda patente
en la figura 1.3 con unos porcentajes de éxito muy distinto según sea la envergadura.
Luego sigue siendo un reto a día de hoy gestionar grandes proyectos y no es por falta de
medios porque estos tipos de proyectos los realizan grandes multinacionales de Information
Technology (IT).
Otro punto de vista interesante a la hora de analizar el éxito de los proyectos es clasifi-
carlos por las metodologías con las que fueron realizados. De esta forma se pueden extraer
conclusiones si unas metodologías alcanzan mayores tasas de éxito que otras. En la figura
1.4 se dividen proyectos pequeños según metodologías ágiles y tradicionales, siendo los
porcentajes de éxito, cuestionados y fracasados bastante similares. Por tanto, no pode-
mos decir a priori que un tipo de metodologías sean más exitosas que otras. Sin embargo,
también nos podríamos cuestionar si dichos proyectos se han gestionado eficientemen-
te utilizando realmente dichas metodologías o, por contra, no las han sabido llevar a la
práctica completamente para explotar todas sus bondades.
Sin ánimo de ser exhaustivo, se puede concluir diciendo que los proyectos software se
enfrentan a muchos y diversos factores que dificultan finalizarlos correctamente. La causa
principal es que el software es el producto de una actividad intelectual realizado por seres
humanos, con todo lo que eso supone.
1. Introducción 12
6% 8%
Figura 1.4: Estado de pequeños proyectos a su finalización realizados con metodologías ágiles o
tradicionales (waterfall). Dato de CHAOS Manifesto 2013.
Waterfall/Traditional Agile
Value
Driven
Plan
Driven
Estimated
Resources Date Requirements
Also,ganado
valor as we apply
se va the appropriate
desarrollando agile technical
el proyecto practices,
según unos quality
requisitos is also fixed.
cambiantes So,
acordados
entre
now wetodas lasa partes
have periódicamente.
truly virtuous software cycle:
Return on Investment
Starts Here (If You Are Return on Investment
on Time) Starts Here
Deadline
$$$$$ In
$$$$ In
Requirements
Value Delivery
Value Delivery
Design $$$ In
Implementation $$ In
Verification $ In
Deployment
Time Time
Figure 1–9a. Waterfall Return on Investment Figure 1–9b. Agile Return on Investment
Ingeniería de Software
2.1. Introducción
Gestionar un proyecto implica tener que adoptar una solución de compromiso entre las
restricciones de alcance, calidad, plazos, presupuesto, recursos y riesgos. Además en la Ing.
de Software hay factores tecnológicos específicos que pueden dar lugar a más restricciones.
• Los cuestiones clave que hacen un proyecto software desafiante son la complejidad
del proyecto/producto, escalabilidad no lineal de los recursos humanos, incertidumbre
inicial del alcance del proyecto/producto y el conocimiento se va obteniendo según
el proyecto evoluciona.
15
2. Ingeniería de Software 16
• Los requisitos suelen cambiar durante el desarrollo del proyecto según se va obte-
niendo conocimiento del proyecto y su alcance se va acotando cada vez más.
• Las planificaciones y estimaciones iniciales son poco precisas porque dependen fuer-
temente de los requisitos (imprecisos) y de la productividad del equipo de trabajo
(bastante variable).
El software es intangible por ser un producto intelectual. Esto implica que no tiene
entidad física que pueda ser evaluada por métodos clásicos (masa, volumen, conductividad,
...) pero sin embargo sí tiene otros factores. Por ejemplo, las necesidades de memoria y
procesador, ancho de banda de comunicación, etc...
Su naturaleza intangible crea retos a la hora de medir el estado actual de desarrollo del
proyecto y, por tanto, es complicado de monitorizar y controlar. Su naturaleza maleable
tiene aspectos positivos y negativos. Es beneficioso que muchas veces se pueda responder
rápidamente a cambios que necesite el usuario. Sin embargo, interrumpir trabajo en marcha
o rehacer el que ya está hecho por cambios en los requisitos puede tener un impacto
negativo en el presupuesto y en los plazos de entrega.
La planificación y estimaciones iniciales de costes y plazos son difíciles de hacer en
cualquier proyecto pero en este tipo de proyectos lo es todavía más por varias razones.
3. Los requisitos en los que se basan las estimaciones a menudo están pobremente
definidos.
La gestión de la calidad también es otra tarea fundamental que se debe hacer en cual-
quier proyecto para que finalice con éxito. Como esta fuera del alcance del TFM, simple-
mente se citan los atributos claves de la calidad en proyetos software: seguridad, confiabili-
dad, resiliencia, dependibilidad, escalabilidad, rendimiento, facilidad de aprendizaje y uso del
software creado, interpretación de los mensajes de error, disponibilidad, accesibilidad, efi-
ciencia, flexibilidad, interoperabilidad, robustez, testabilidad, mantenibilidad, portabilidad,
extensibilidad y reusabilidad.
• Auditar los proyectos que se llevan a cabo para controlar que cumplen la normativa
que ha establecido la organización.
Además, una PMO de proyectos software también debería de encargarse de las siguientes
tareas por las particularidades y complejidad intrínsecas a este tipo de proyectos.
• Usar dicho repositorio para analizar las fortalezas y debilidades de los proyectos rea-
lizados que sirvan de base para promover iniciativas de mejora en la organización.
• Ayudar a los project managers para hacer las estimaciones de costes y plazos y
preparar los planes de proyecto.
• Realizar estimaciones y planes al inicio del proyecto y también según avanza el pro-
yecto para adaptarse a los cambios.
• Monitorizar y controlar los hitos, el presupuesto, los requisitos del software, el ren-
dimiento del equipo, la utilización óptima de los recursos e identificar riesgos poten-
ciales.
• Liderar y dirigir el proyecto teniendo una visión clara de los requerimientos y las
restricciones.
• Mantener la conformidad del contrato del proyecto.
• Cohesionar, inspirar y facilitar al equipo de desarrollo sus demandas.
• Comunicación fluida con los involucrados para suplir sus carencias técnicas usando
terminología y conceptos que les sean familiares.
PMI CERTIFICATION
10%
0%
2008 2009 2010 2011 2012
Figura 2.3: Porcentaje de organizaciones que requieren project managers certificados en PMI o
equivalente. Dato de CHAOS Manifesto 2013.
• 1960-1970: Desarrollo del Software. El software coge otro camino al del hardware
por ser actividades cada vez más diferentes. Se programa de la manera codificar-y-
arreglar en comparación con la exhaustiva manera de programación de los ingenieros
hardware. Los programas espaciales de la NASA fomentan este campo. Se crean
departamentos de ciencias de la computación e informática en las Universidades,
empresas privadas de desarrollo de software y lenguajes de alto nivel como Cobol y
Fortran.
Structured
Stovepipes
Methods
Standards,
Global connectivity,
2. Ingeniería de Software
16
Rapid change
Skill Domain-specific
Shortfalls SW architectures,
product-line reuse
Service-oriented
Business 4GLs, Model
Domain architectures,
CAD/CAM, User clashes
understanding Model-driven
programming
Lack of development
scalability
Hardware Engineering Crafting Formality; Waterfall Productivity Concurrent Processes Agility; Value Global Integration
1950's 1960's 1970's 1980's 1990's 2000's 2010's
- Confiabilidad del software. Cada vez más la gente y las organizaciones dependen
de sistemas software. Por tanto, la confiabilidad y seguridad de los sistemas debe
aumentar aunque esto no es la máxima prioridad para muchos desarrolladores.
- Aunar las bondades de los programas Open Source con los propietarios.
- La gente empieza a utilizar masivamente Internet: nuevas formas de relacionarse
entre ellos (redes sociales) y con las AAPP (administración digital), educación
a distancia (e-learning), etc...
- Integración de sistemas. Las organizaciones necesitan integrar sistemas diversos
para aumentar su productividad y reducir costes. Los ingenieros de sistemas
tienen que aumentar sus conocimientos software por tener cada vez más peso
en dichos sistemas.
• Estándar (standard). Un documento que provee, para uso común y repetitivo, reglas,
guías o características para actividades o sus resultados para lograr un óptimo grado
de éxito en una circunstancia específica.
• Plantilla (template). Un documento con formato predefinido que tiene una estruc-
tura para recoletar, organizar y presentar información.
• Política (policy). Una serie de acciones estructuradas adoptadas por una organiza-
ción.
• Riesgo (risk). Un potencial evento o condición que, si ocurre, tiene un efecto positivo
o negativo en uno o más objetivos del proyecto.
Todos los modelos tienen explícita o implícamente 5 fases: requisitos, diseño, desarrollo,
pruebas y mantenimiento. Cómo se organizen, su interrelación y la importancia de cada
una de ellas dentro del ciclo de vida dependerá del modelo escogido.
2. Ingeniería de Software 26
5. Mantenimiento. Una vez que se despliega el software, puede ser necesario realizar
un mantenimiento para solucionar errores que han sido detectados en servicio o
desarrollar evolutivos del software con nuevas funcionalidades.
En todas las fases anteriores habría que incluir la tarea de documentación (procedi-
mientos, guías, esquemas, etc...). Son la recopilación escrita en sus diferentes formas que
se hace durante toda la vida del proyecto. La importancia de la documentación radica
en que a menudo un código escrito por una persona es modificado por otra. Por ello la
documentación sirve para ayudar a comprender, usar o mantener un programa.
El estándar internacional que regula el método de selección, implementación y monito-
rización del ciclo de vida del software es el ISO/IEC 12207:2008 Standard for Systems and
Software Engineering - Software Life Cycle Processes. La estructura ha sido concebida de
manera que pueda ser adaptada a las necesidades de cualquiera que lo use.
En los siguientes apartados se resumirán brevemente los distintos modelos de ciclo de
vida software que hay.
2.5.1. Cascada
Es el modelo más antiguo, propuesto por Winston Royce en 1970. Es un modelo se-
cuencial de fácil entendimiento e implementación (figura 2.5). Refuerza el buen hábito de
definir antes de diseñar y diseñar antes que programar. Sin embargo, ésta es su gran de-
bilidad porque esperar tener requerimientos definidos completamente al inicio del proyecto
es una situación ideal que casi nunca sucede en la realidad. Además no utiliza la iteración
ni posibilita mecanismos para hacer cambios en los requisitos por lo que nunca encajará
en las metodologías ágiles.
sequential approach6 to software development that begins with customer specifica-
tion of requirements and progresses through planning, modeling, construction, and
deployment, culminating in ongoing support of the completed software (Figure 2.3).
A variation in the representation of the waterfall model is called the V-model.
Represented in Figure 2.4, the V-model [Buc99] depicts the relationship of quality
2. Ingeniería de Software 27
Communication
project initiation Planning
estimating Modeling
requirements gathering analysis Construction
scheduling
code Deployment
tracking design delivery
test
support
feedback
6 Although the original waterfall model proposed by Winston Royce [Roy70] made provision for
Figura 2.5: Esquema del modelo de ciclo de vida en cascada.
“feedback loops,” the vast majority of organizations that apply this process model treat it as if it
were strictly linear.
2.5.2. V
El modelo V es una variación del modelo anterior donde se busca hacer la tarea de
pruebas más efectiva y productiva (figura 2.6). Para ello los planes de pruebas se van
elaborando a medida que avanza el desarrollo del proyecto. Es decir, el equipo de pruebas
hace unos planes de tests en paralelo a las activades de desarrollo y genera entregables
de pruebas para validar el sistema y así asegurar la calidad. En realidad, no hay diferencias
fundamentales entre el modelo en V y en cascada. Sus fortalezas y sus debilidades son
prácticamente las mismas.
2.5.3. Incremental
2.5.4. Prototipo
Es un modelo de tipo evolutivo. El paradigma del modelo (figura 2.8) empieza con
la etapa de comunicación para establecer en qué consistirá el prototipo. Idealmente, es-
pre75977_ch02.qxd 11/27/08 3:21 PM Page 40
2. Ingeniería de Software 28
40 PART ONE THE SOFTWARE PROCESS
FIGURE 2.4
The V-model
Requirements Acceptance
modeling testing
Architectural System
design testing
Component Integration
design testing
Code Unit
generation testing
Executable
software
classic life cycle and the V-model. The V-model provides a way of visualizing how
Modeling (analysis, design)
verification and validation actions are appliedincrement # n engineering work.
to earlier
Construction (code, test)
The waterfall model is the oldest paradigm for software engineering. However,
over Deployment
the past three decades,
(delivery, criticism of this process model has caused even ardent
feedback)
supporters to question its efficacy [Han95]. Among the problems that are sometimes
delivery of
encountered when the waterfall
increment #2 model is applied are: nth increment
? Why does
the waterfall 1. Real projects rarely follow the sequential flow that the model proposes.
model sometimes Although the linear model can accommodate iteration, it does
delivery of so indirectly.
fail? increment # 1 2nd increment
As a result, changes can cause confusion as the project team proceeds.
Figura
plan is developed for 2.7: Esquema
the next del modelo
increment. Thedeplan
cicloaddresses
de vida incremental.
the modification of the
core product to better meet the needs of the customer and the delivery of additional
features and functionality. This process is repeated following the delivery of each
increment, until the complete product is produced.
The incremental process model focuses on the delivery of an operational product
with each increment. Early increments are stripped-down versions of the final prod-
The prototyping paradigm (Figure 2.6) begins with communication. You meet with
When your customer other stakeholders to define the overall objectives for the software, identify whatever
has a legitimate need, requirements are known, and outline areas where further definition is mandatory. A
but is clueless about
prototyping iteration is planned quickly, and modeling (in the form of a “quick de-
the details, develop a
prototype as a first sign”) occurs. A quick design focuses on a representation of those aspects of the soft-
step. warede
2. Ingeniería that will be visible to end users (e.g., human interface layout or output display
Software 29
FIGURE 2.6
The
prototyping
paradigm Quick plan
Communication
Modeling
Quick design
Deployment
Delivery
Construction
& Feedback
of
prototype
te modelo sirve como herramienta para identificar requisitos del software. Por esto es
especialmente recomendable en aquellos proyectos donde el cliente tiene unos requisitos
generales pero no se identifican las funcionalidades y características detalladas. Es decir,
el prototipo ayuda a todos los involucrados del proyecto a entender mejor lo que se va a
construir cuando los requisitos son difusos.
2.5.5. Espiral
Es otro modelo evolutivo creado por Barry Boehm en 1988. Es un modelo (figura 2.9)
que une la naturaleza iterativa del prototipo con los aspectos controlados y sistemáticos
del modelo en cascada. Proporciona los mecanismos para el desarrollo rápido de versiones
cada vez más completas y complejas del software. Cada bucle en la espiral representa una
fase del proceso de software. Por ejemplo, el bucle más interno podría estar preocupado
con la viabilidad del sistema, el siguiente bucle con los requisitos, el siguiente con el diseño
del sistema, etc...
Tiene un enfoque realista para el desarrollo de sistemas software de gran escala. Dado
que el software evoluciona a medida que el proceso avanza, el desarrollador y cliente
comprenden y reaccionan mejor a los riesgos en cada evolución. Por tanto, el punto fuerte
de este modelo frente a otros es el reconocimiento explícito de riesgo y su control y
minimización.
pre75977_ch02.qxd 11/27/08 3:21 PM Page 46
2. Ingeniería de Software 30
46 PART ONE THE SOFTWARE PROCESS
FIGURE 2.7
Planning
A typical estimation
spiral model scheduling
risk analysis
Communication
Modeling
analysis
design
Start
Deployment
Construction
delivery
code
feedback test
A spiralFigura 2.9:
model is Esquema
divided into adel
set modelo de ciclo
of framework de vidadefined
activities en espiral.
by the software
engineering team. For illustrative purposes, I use the generic framework activities
discussed earlier.9 Each of the framework activities represent one segment of the spi-
2.5.6.
The spiral model can Concurrente
ral path illustrated in Figure 2.7. As this evolutionary process begins, the software
be adapted to apply
throughout the entire team performs activities that are implied by a circuit around the spiral in a clockwise
life cycle of an El modelo define
direction, una serie
beginning at thede eventos
center. que desencadenarán
Risk (Chapter 28) is consideredtransiciones de estado a
as each revolution
estado para
application, from cada una de las actividades. Existen todas las actividades
is made. Anchor point milestones—a combination of work products and conditions de ingeniería de
concept development
software that
al mismo tiempo, pero
are attained along the residen enspiral—are
path of the diferentesnoted
estados. Si no
for each una actividad
evolutionary pass. todavía
to maintenance.
no ha empezado estará
The first circuiten estado
around theinactivo. Es aplicable
spiral might a todos
result in the los tipos
development of ade desarrollo de
product
software specification;
y proporciona una imagen
subsequent passesprecisa
arounddethelaspiral
situación
mightactual
be useddel proyecto.
to develop a pro-
totype and then progressively more sophisticated versions of the software. Each pass
through the planning region results in adjustments to the project plan. Cost and
WebRef
2.5.7.
Useful information
Proceso
schedule Unificado
are adjusted based on feedback derived from the customer after delivery.
about the spiral model In addition, the project manager adjusts the planned number of iterations required
can be obtained at:
El Proceso Unificado
to complete (también llamado Proceso Unificado de Desarrollo Software) es un
the software.
www.sei.cmu
marco de Unlike other
desarrollo process
que models thatpor
se caracteriza endestar
when dirigido
software por
is delivered,
casos de theuso,
spiralcentrado
model en la
.edu/publications/
documents/00 can be adapted to apply throughout the life of the computer software. Therefore,
arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado the
.reports/00sr008 first circuit around
.html. del Proceso Unificado es the spiral might
el Proceso representde
Unificado a “concept development
la empresa Rationalproject”
Softwarethat (RUP),
10
startsperteneciente
actualmente at the core of the spiral and continues for multiple iterations
a IBM. until concept
tema fue publicado en 1999 por Ivar Jacobson, Grady Booch y James Rumbaugh, conocidos
further information on the original spiral model, see [Boe88]. More recent discussion of Boehm’s
también porspiral
sermodel can be found in [Boe98].
los desarrolladores del UML. De alguna manera el Proceso Unificado es un
10 The arrows pointing inward along the axis separating the deployment region from the commu-
intento de aprovechar las mejores características de los modelos tradicionales (previamente
nication region indicate a potential for local iteration along the same spiral path.
descritos) incorporando algunos principios del desarrollo ágil de software. En él reconoce
la importancia del cliente y su interacción utilizando métodos simples para describir la
perspectiva que tiene el cliente sobre el sistema (casos de uso). Tiene un flujo de proceso
2. Ingeniería de Software 31
FIGURE 2.8
One element of
Inactive
the concurrent
process model Modeling activity
Awaiting
changes
Under review
Under
revision
Baselined
Done
11 It should be noted that analysis and design are complex tasks that require substantial discussion.
Part 2 of this book considers these topics in detail.
12 A state is some externally observable mode of behavior.
2. Ingeniería de Software 32
1. Inicio. Se analiza el alcance inicial del proyecto, una arquitectura para el sistema,
obtener recursos y conseguir la aceptación por parte de lo involucrados.
Ver la figura 2.11 para comprender como se relacionan dichas fases con las cinco etapas
que se decía al principio de este apartado que todo modelo de ciclo de vida tenía de una
manera más explícita o implícita.
2. Ingeniería de Software 33
URE 2.9
Elaboration
Unified
ess
Inception
ing
plann ling
mode
on
unicati ructio
n
comm const
t
ymen Construction
deplo
Release Transition
software increment
Production
Metodologías tradicionales
3.1. Introducción
Este capítulo trata sobre metodologías de gestión de proyectos que se podrían denominar
tradicionales por tener una filosofía alejada de las ágiles. Se estudiarán 5 metodologías:
PMBOK (y por similitud ISO 21500), ICB, PRINCE2 y SWEBOK. Para cada una de
ellas se hará una introducción hablando de la organización que la creó y su evolución
histórica. Después se resumirá la estructura de cada metodología. Finalmente se reseñan
muy brevemente otras 5 metodologías: 3 públicas (SSADM, MERISE Y MÉTRICA) y 2
privadas (APMBOK y P2M).
3.2.1. Introducción
34
3. Metodologías tradicionales 35
edición publicada en 2013 [1]. Además tiene tres extensiones: Construction Extension,
Government Extension y Software Extension to the PMBOK Guide [2]. Ésta última es la
más reciente y que ha permitido a PMBOK adaptarse a los proyectos software y que se ha
tenido presente para realizar este TFM aunque no aporta mejoras significativas respecto
a PMBOK.
En la actualidad PMI tiene ocho certificaciones: Project Management Professional,
Certified Associate in Project Management, Program Management Professional, Portfolio
Management Professional, PMI Agile Certified Practitioner, PMI Professional in Business
Analysis, PMI Risk Management Professional y PMI Scheduling Professional.
En este apartado se ha agrupado el PMBOK con la norma internacional UNE-ISO
21500 Directrices para la dirección y gestión de proyectos [6] por su gran similitud de éste
último con el primero. Por ello, la estructura del PMBOK será extensible a la del ISO
21500. Sus pequeñas diferencias se mencionarán en el último subapartado.
La ISO 21500 es un estándar internacional desarrollado por la International Organization
for Standardization (ISO) a partir de 2007 y publicado en 2012. Proporciona una orienta-
ción genérica, explica los principios básicos y lo que constituye unas buenas prácticas en la
gestión de proyectos. Es un documento de orientación que no está destinado a ser utilizado
con fines de certificación. ISO tiene previsto que esta norma sea la primero de una familia
de normas de gestión de proyectos y la diseño también para alinearse con otros estándares
relacionados, tales como la ISO 10006:2003, ISO 10007:2003 e ISO 31000:2009.
3.2.2. Estructura
PMBOK e ISO 21500 es una metodología basada en procesos. Esto es, describir el
trabajo por paquetes que se llevan a cabo en procesos. Este enfoque es similar a otras
normas de gestión, tales como ISO 9000 o Capability Maturity Model Integration (CMMI)
del Software Engineering Institute (SEI). Los procesos se superponen e interactúan a lo
largo de un proyecto en sus diversas fases. Los procesos se describen en términos de:
• Herramientas y técnicas: son las transformaciones aplicadas a las entradas que pro-
ducirán las salidas.
1. Inicio. Aquellos procesos realizados para definir un nuevo proyecto o una nueva fase
de un proyecto existente.
5. Cierre. Aquellos procesos realizados para finalizar formalmente todas las actividades
de todos los procesos.
Las 10 áreas de conocimiento son las siguientes (ver la tabla 3.1 para más detalles).
• Gestión de la Integración. Se incluyen todas las actividades y procesos que hay que
realizar para identificar, combinar y coordinar los diversos procesos y actividades de
gestión dentro de los grupos de gestión de procesos.
• Gestión del Alcance. Se incluyen los procesos para asegurar que el proyecto tiene
todo el trabajo necesario y sólo el necesario, para completar el proyecto de forma
satisfactoria.
• Gestión de Costes. Se incluyen los procesos necesarios para poder planificar, estimar,
presupuestar y controlar los costes de forma que se pueda finalizar dentro de los
costes planificados.
• Gestión del Riesgo. Son los procesos que realizan la planificación, identificación,
análisis cualitativo y cuantitativo de los riesgos, así como la planificación de las
medidas a adoptar y su control.
3. Metodologías tradicionales 37
3.3. ICB
3.3.1. Introducción
3. Metodologías tradicionales 39
Table 3-1. Project Management Process Group and Knowledge Area Mapping
4. Project 4.1 Develop 4.2 Develop Project 4.3 Direct and 4.4 Monitor and 4.6 Close Project
Integration Project Charter Management Plan Manage Project Control Project or Phase
Management Work Work
4.5 Perform
Integrated Change
Control
8. Project 8.1 Plan Quality 8.2 Perform Quality 8.3 Control Quality
Quality Management Assurance
Management
12. Project 12.1 Plan 12.2 Conduct 12.3 Control 12.4 Close
Procurement Procurement Procurements Procurements Procurements
Management Management
13. Project 13.1 Identify 13.2 Plan 13.3 Manage 13.4 Control
Stakeholder Stakeholders Stakeholder Stakeholder Stakeholder
Management Management Engagement Engagement
IPMA comenzó con una versión inicial de ICB en 1995, definiendo y validando la com-
petencia de los directores de proyectos. En 1999 se publicó la versión ICB 2.0 y en 2006
se renovó con ICB 3.0 [3] que sigue vigente en la actualidad.
IPMA tiene para individuos 4 niveles de certificación, de menos a más avanzado: técnico
en dirección de proyectos (IPMA nivel D), profesional en dirección de proyectos (IPMA
nivel C), director de proyecto (IPMA nivel B) y director de cartera de proyectos (IPMA
nivel A).
3.3.2. Estructura
ICB contiene los términos básicos, tareas, habilidades, funciones, procesos, métodos,
técnicas y herramientas que se deben usar, tanto teórica como prácticamente, para una
buena gestión de proyectos. El objetivo principal de ICB es estandarizar y reducir las tareas
fundamentales necesarias para completar un proyecto de la forma más efectiva y eficiente.
La estructura de ICB es bastante distinta a las demás metodologías porque se organiza
por competencias, no por procesos. Los 46 elementos de competencia se agrupan en 3
grandes grupos (ver figura 3.2).
Contextual competences
Project orientation
Programme orientation
Portfolio orientation
Project programme & portfolio implementation
Permanent organisation
Business
Systems, products & technology
Personnel management
Health, security, safety
& environment
Finance
Legal Technical competences
Project management success
Behavioural competences Interested parties
Leadership Project requirements & objectives
Engagement & motivation Risk & opportunity
Self-control Quality
Assertiveness Project organisation
Relaxation Teamwork
Openness Problem resolution
Creativity Project structures
Results orientation Scope & deliverables
Efficiency Time & project phases
Consultation Resources
Negotiation Cost & finance
Conflict & crisis Procurement & contract
Reliability Changes
Values appreciation Control & reports
Ethics Information & documentation
Communication
Start-up
Close-out
The Eye of Competence represents the integration of all the elements of project management as seen through the eyes of the
project manager when evaluating a specific situation. The eye represents clarity and vision.
Figura 3.2: Competencias para la gestión de proyectos de ICB.
3.4. PRINCE2
3.4.1. Introducción
del Reino Unido para los sistemas de IT de gestión de proyectos. A su vez, PRINCE
proviene de la metodología Project Resource Organisation Management Planning Tech-
nique (PROMPT) creada a mediados de los 70 por la empresa Simpact Systems Limited
que proporciona un marco adecuado para gestionar la estrategia, viabilidad, desarrollo y
apoyo de los sistemas de IT a través de un enfoque estructurado de gestión de proyectos.
Por tanto, esta metodología tiene una especial significación en este TFM por sus orígenes
ligados al sector Tecnologías de la Información y Comunicación (TIC).
PRINCE es un acrónimo de “proyectos en ambientes controlados” pero pronto llegó a
ser aplicado regularmente fuera del entorno TIC, tanto en el gobierno del Reino Unido
como en el sector privado. PRINCE2 fue lanzado en 1996 como un método genérico de
gestión de proyecto alcanzando cotas de bastante popularidad por ser un estándar de facto
para la gestión de proyectos en varios países (sobre todo de la Commonwealth), empresas
multinacionales y organizaciones internacionales.
En 2009 se publicó una revisión "PRINCE2: 2009 Refresh"manteniendo el nombre (en
lugar de PRINCE3 o similar) para indicar que el método sigue siendo fiel a sus principios.
Sin embargo, se trata de una revisión importante de la versión de 1996 para adaptarla al
entorno empresarial cambiante transformándolo en una metodología más simple y ligera.
PRINCE2 esta perfectamente alineada con la norma ISO 21500.
En 2013 la propiedad de los derechos de PRINCE2 se transfirió del organismo público
Británico HM Cabinet Office a Axelos Ltd, una empresa conjunta de HM Cabinet Office
y la empresa privada Capita plc. Hay 3 niveles de certificación, de menos a más avanzada:
Foundation Examination, Practitioner Examination y Professional Examination.
3.4.2. Estructura
1. Emprender un proyecto (SU). Se realiza al comienzo del proyecto siendo una pre-
paración inicial para la gestión del proyecto, su control y viabilidad. Este proceso lo
crea la Junta del proyecto garantizando los recursos necesarios.
3. Iniciar proyecto (IP). Sólo se realiza una vez durante el ciclo de vida del proyecto.
Sirve para plantear cómo se puede gestionar la totalidad del proyecto y se plasma en
el documento de inicio del proyecto (Project Initiation Document, PID). El objetivo
del documento es el establecimiento de un entendimiento común de los elementos
críticos del proyecto, así como el acuerdo de la Junta para la primera etapa de
desarrollo del proyecto.
4. Planificación (PL). Proceso común para el resto de procesos. Los planes se produ-
cen identificando los entregables del proyecto, las actividades y recursos necesarios
para crearlos. Todo ello tiene en una relación consistente con los requerimientos
identificados en el PID.
5. Control de etapa (CS). Provee una guía para la gestión diaria del proyecto. Incluye
la autorización y recepción de trabajos, gestión del cambio y de versiones, análisis e
informes, consideraciones de viabilidad, acciones correctivas y escalado de incidencias
a la Junta. Este proceso de control se realiza de forma iterativa por cada etapa de
desarrollo.
6. Gestión de entrega del producto (MP). Forma parte del sistema de autorización
siendo el mecanismo que sirve para que los ejecutores del trabajo técnico acuerden
los trabajos a realizar. Se repite por cada paquete de trabajo autorizado.
The Process Model and Project Timeline 9
www.MgmtPlaza.com
Project Corporate or Programme Management
mandate
Corp..
Initiation Project Closure
Notification Notification Notification
Directing a Project (DP) close soon
Direction
direction closure
Project Board
3. Metodologías tradicionales
Advice
Approved PID
Project Starts
Authorize stage
Authorize Project
Exception Report
Auth. To Initiate
FAR, Lessons Rpt
Premature Close
Stage Boundary
Closure Recommend.
Draft Closure Notificat.
Management
Project Manager
Initiating a Closing a
Project (IP) Controlling a Stage (CS) project (CP)
Delivery
Completed WP
Mgmt Prod -- Management Product Products get created & quality checked
Team Manager
Based on OGC PRINCE2® material. Reproduced under license from OGC
• All blue items are executed once in a project. Those items are (a) Starting up the Project,
(b) Initiating the Project, (c) Creating the Project Initiation Documents, (d) Creating the Project
Plan and (e) Closing the Project.
Green items
3. Metodologías tradicionales 45
Por último, hay 8 áreas de gestión de proyectos que deben abordarse de forma continua
durante todo el proyecto.
• Caso de negocio. Desarrollar una idea en una propuesta viable para la organización.
La gestión del proyecto mantiene la atención en los objetivos de la organización y en
los beneficios durante todo el proyecto. Es decir, responde a ¿por qué?
• Planes. Describen los pasos necesarios para entregar los productos, las técnicas que
se deben aplicar y la comunicación a lo largo del proyecto. Es decir, responde a
¿cómo, cuánto y cuándo?
• Cambio. El control de los cambios del alcance calcula el impacto de los potenciales
cambios, su importancia, costes, impacto en el negocio y decidir si se incluyen o no.
Es decir, responde a ¿cuál es el impacto?
3.5. SWEBOK
3.5.1. Introducción
1976. Se funda el comité por la IEEE Computer Society para el desarrollo de normas
de Ing. de Software.
1996. Se publica el ISO/IEC 12207, Standard for Software Life Cycle Processes
proporcionado un importante punto de partida para el conjunto de conocimientos
capturados en el SWEBOK.
3.5.2. Estructura
como las de los apartados anteriores sino que abarca 15 áreas de conocimiento que influyen
en esta disciplina.
Figura
Other aspects of 3.4: Procesos de
organizational la gestión de proyectos
management software deaspect
Another important SWEBOK.of organizational
exert an impact on software engineering (for management is personnel management policies
example, organizational
• Gestión de la Ing.policies and procedures
de Software. Consisteanden procedures for hiring,
la planificación, training, and
coordinación, mentor-
medición,
that provide the framework in which software ing personnel for career development, not only at
presentación de entregables y el control de un proyecto para asegurar que el desarrollo
engineering projects are undertaken). These poli- the project level, but also to the longer-term suc-
y mantenimiento
cies and procedures may del needsoftware es sistemático,
to be adjusted by cess ofdisciplinado y cuantificado.
an organization. Se estudian
Software engineering per-
la iniciación y el alcance del proyecto, su planificación, su ejecución,
the requirements for effective software develop- sonnel may present unique training or personnel la aceptación
del maintenance.
ment and producto, laInrevisión
addition,ya análisis
number of de los resultados
management del proyecto,
challenges su cierre
(for example, y las
maintaining
herramientas
policies de gestión.
specific to software En la figura
engineering may 3.4 se muestra
currency con más
in a context wheredetalle el contenido
the underlying tech-
need tode be in place
este or established
área por ser la quefor effective
interesa nology
en este TFM.undergoes rapid and continuous change).
management of software engineering at the orga- Communication management is also often
• Procesos
nizational deexample,
level. For la Ing. policies
de Software. Se ocupa
are usually de laasdefinición,
mentioned an overlookedimplementación, eva-
but important aspect
necessary to establish specific organization-wide of the performance of individuals
luación, medición, gestión y mejora de los procesos del ciclo de vida. Los temas in a field where
processes or procedures
cubiertos son la for software engineering
implementación precisey understanding
de procesos of user needs, ysoftware
el cambio (infraestructura gestión
tasks such as software design, software construc- requirements, and software designs is necessary.
de procesos, modelos de implementación de procesos y el cambio), definición de pro-
tion, estimating, monitoring, and reporting. Such Furthermore, portfolio management, which pro-
cesos (modelos y procesos del ciclo de vida, notaciones para la definición de procesos
policies are important for effective long-term vides an overall view, not only of software cur-
y la adaptación
management of software y automatización
engineering projectsde procesos),
rently underproceso de modelos
development in variousy métodos de
projects and
acrossevaluación, medición
an organization (de procesos,
(for example, de productos,
establishing técnicas de
programs (integrated medición
projects), y la of
but also calidad
soft-
de losbasis
a consistent resultados)
by whichytoherramientas de proceso
analyze past proj- de software.
ware planned and currently in use in an organiza-
ect performance and implement improvements). tion, is desirable. Also, software reuse is a key
3. Metodologías tradicionales 49
• Economía de la Ing. de Software. Tiene que ver con la toma de decisiones dentro
del negocio para alinear las decisiones técnicas con los objetivos empresariales. Se
estudia los fundamentos (propuestas, flujos de caja, valor temporal del dinero, ho-
rizontes de planificación, inflación y depreciación, decisiones de reemplazo y retiro),
toma de decisiones sin ánimo de lucro (análisis de coste-beneficio y de optimiza-
ción), estimación, el riesgo económico y la incertidumbre (técnicas de estimación,
decisiones relativas al riesgo y la incertidumbre) y la toma de decisiones de atributos
múltiples (escalas de medidas, técnicas compensatorias y no compensatorias).
En conclusión, es una excelente guía por tratar la disciplina de manera exhaustiva aunque
en las áreas de conocimiento no entra muy en detalle explicando las técnicas y cómo habría
que hacer las cosas (la Gestión de Ing. de Software no es una excepción). El detalle se
deja en manos de la bibliografía que se anota para cada área.
3.6.1. SSADM
Structured Systems Analysis and Design Method (SSADM) es una metodología pública
de aproximación en cascada para el desarrollo de sistemas IT y que puede ser considerada
como la más completa de las metodologías estructuradas, por su garantía contrastada a
lo largo de los años por los desarrolladores. Se considera que representa el pináculo del
enfoque riguroso en la documentación hacia el diseño del sistema, en contraposición a las
metodologías ágiles.
Se lanzó la primera versión en 1981 y en 1983 se convirtió en uso obligatorio para
el desarrollo de todos los proyectos nuevos del gobierno del Reino Unido. En 1988 fue
promocionada como un estándar abierto. En el 2000, la CCTA renombró SSADM como
“Business System Development” siendo reorganizada en 15 módulos y añadiendo otros 6.
3.6.2. MERISE
3.6.3. MÉTRICA
3.6.4. APMBOK
3.6.5. P2M
I. Entry
Entry
Project Management
II. Project Management 1) Definition, basic attribute, frame
2) Project management common view
3) Integration management
4) Segment management
5) Integration management skill
Communication management
Figure 1-6: Practical Capability System of Project Management (Project Management Tower)
Figura 3.5: Áreas de conocimiento de la metodología P2M.
Part 1
Page 11
Capítulo Cuarto
Metodologías Ágiles
4.1. Introducción
• Incremental. Las versiones de software son pequeñas con ciclos de desarrollo rápido.
53
4. Metodologías Ágiles 54
14 C HAPTER 1 A B RIEF H ISTORY OF S OFTWARE R EQUIREMENTS M ETHODS
Agile Methodology
3% 5% 6% Most Closely Followed
Scrum
Scrum/XP Hybrid
50%
Extreme Programming (XP)
Custom Hybrid
Lean Development
Don’t Know/Other
Figure 1–7 Survey of most widely adopted agile methods. Fourth Annual State of
Agile DevelopmentFigura
Survey4.1: Metodologías
2009. Courtesy ofágiles más utilizadas.
VersionOne, Inc.
Source: VersionOne’s 2009 Agile Methodology Survey
• Adaptación. Gran capacidad para reaccionar ante cambios en todo momento.
The survey reflects that, currently, the most widely adopted agile methods are
Scrum and XP. According to this survey, Scrum (with or without combination with
En XP)
la figura
is now4.1 se muestran
applied in 74% las metodologías
of agile más utilizadas
implementations, and thisenhas
losbeen
últimos
our años.
experi-Una
metodología ágil no tienen por qué cubrir todas las fases del proyecto: inicio del proyecto,
ence as well.
especificación de requisitos, diseño, codificación, pruebas unitarias, tests de integración,
tests de aceptación
Based on their ypredominance,
sistema en servicio. Luego
we’ll be usingestas
thesemetodologías
two methods pueden no ser adecua-
as base practices for
das o much
aplicables a cualquier tipo de proyecto (empresa, producto, línea de negocio,
of what we discuss in our agile requirements practices in this book, so a brief etc...)
y tendrán que combinarse
description of these is con otras metodologías si se desea seguir unas directrices en
in order.
todas las fases de desarrollo software y en las propias de gestión de proyectos, las cuales
apenas hacen énfasis la mayoría de metodologías ágiles.
Extreme Programming (XP)
La definición moderna de desarrollo ágil de software evolucionó a mediados de 1990
Test Scenarios XP is a widely used agile software develop-
como parte de una reacción contra los métodos de “peso pesado” que se caracterizaban por
ment method that is described in a number
User
ser muy estructurados, burocáticos, lentos y estrictos, extraídos del modelo de desarrollo
Stories
New User Story
Project Velocity of books by Beck and others [Beck 2000; Beck
Bugs
en cascada. Inicialmente, los métodos ágiles fueron llamados métodos de “peso liviano”.
Requirements
Architectural Release
Release
Plan
and Andres 2005]. Key practices of XP include
Latest
Version Acceptance
Customer
Approval Small
Iteration
Spike
En la figura 4.2 se expone un diagramathe
Planning
defollowing.
los métodos de desarrollo de software ágiles
Tests Releases
más relevantes, sus interrelaciones y sus caminos evolutivos. También se han incluido otros
Uncertain Confident
A team
Estimates Estimates
Next Iteration
Spiral model
Evolutionary life-cycle (Boehm, 1986)
(Gilb, 1988)
New product development game
(Takeuchi and Nonaka, 1986)
Object oriented
approaches
1990 Rapid application Internet technologies, Methodology
development (RAD) distributed software Engineering Amethodological IS
(e.g., Martin, 1991) development (Kumar and development
Welke, 1992) (Baskerville, 1992;
Truex et al., 2001)
Scrum development
process
RADical software (Schwaber, 1995;
development (Bayer Open Source
Schwaber and Synch-and-stabilize
and Highsmith, 1994) Dynamic systems Software (OSS)
Beedle, 2001) approach (Microsoft)
development method development
(Cusumano and Selby, 1995;
(DSDM, 1995)
1997)
Unified modeling
language (UML) Crystal family
of methodologies
(Cockburn, 1998; 2001) Extreme Programming (XP) IS development in
(Beck, 1999) emergent organizations
Internet-speed development (Truex et al., 1999)
Adaptive Software Development (Cusumano and Yoffie, 1999;
Rational Unified (ASD) (Highsmith, 2000) Baskerville et al., 2001;
2000
Process (RUP) Baskerville and Pries-Heje, 2001)
(Kruchten, 2000)
Agile manifesto Pragmatic
Feature-Driven (Beck et al., 2001) Programming (PP)
Development (FDD) (Hunt and Thomas,
(Palmer and Felsing, 2002) 2000)
Agile Modeling (AM)
(Ambler, 2002)
4.2. Metodologías
El desarrollo de Agile Modeling (AM) fue iniciado por Scott Ambler en el 2000 publi-
cando su libro “Agile Modeling” en 2002. AM es una metodología para el modelado de
sistemas y documentación de software utilizando las mejores prácticas. Es una colección
de valores, principios y buenas prácticas que se puede aplicar en un proyecto de desarrollo
de software. Es decir, AM no es un proceso prescriptivo, no define los procedimientos deta-
llados para la forma de crear un determinado tipo de modelo, sino que ofrece un conjunto
de recomendaciones. No es una metodología que abarque todas las fases de un proyecto
sino que, como ya se ha dicho, se centra en el modelado y la documentación. No incluye
cómo gestionar el proyecto, la programación de actividades, testeo u otras fases.
Por lo tanto, AM es un complemento a otras metodologías ágiles como Scrum, XP o
Rational Unified Process (RUP). Sin embargo, según estadísticas del 2011, AM se usa
4. Metodologías Ágiles 57
ASD fue propuesta por Jim Highsmith y Sam Bayer a comienzos de 1990 y publicado en
el año 2000. La filosofía de ASD se basa en la colaboración humana y la auto-organización
del equipo. Se adapta al cambio en lugar de luchar contra él, es decir, se basa en la
adaptación continua a circunstancias cambiantes.
El ciclo de desarrollo de ASD se divide en 3 fases (ver figura 4.4).
FIGURE 3.3
adaptive cycle planning Requirements gathering
Adaptive mission statement JAD
software project constraints mini-specs
development basic requirements
time-boxed release plan
n
oratio
collab
lation
specu
ing
learn
Release
software increment
adjustments for subsequent cycles
components implemented/tested
focus groups for feedback
formal technical reviews
postmortems
12 See http://en.wikipedia.org/wiki/Agile_software_development#Agile_methods.
Figura 4.4: Ciclo de desarrollo de la metodología Adaptive Software Development (ASD).
AUP fue creada por Scott Ambler en 2002. Es una versión simplificada de Rational
Unified Process (RUP) desarrollado por IBM. Describe una manera simple de entender
el desarrollo de aplicaciones de negocio usando técnicas ágiles y conceptos heredados de
RUP. Usa técnicas ágiles tales como Test Driven Development (TDD), modelado ágil,
gestión de cambios ágil y la refactorización del código. En 2012, AUP fue reemplazado
por Disciplined Agile Delivery (DAD)1 dejándose de evolucionarse.
Se enumeran los 6 principios en los que se fundamenta AUP: los empleados saben
lo que están haciendo, simplicidad, agilidad, centrarse en las actividades de alto valor,
independencia de herramientas (cualquier conjunto que se adapte y optimize el trabajo) y
adaptar AUP para cumplir con las necesidades propias del proyecto.
En la figura 4.5 se expone el ciclo de desarrollo de AUP. Se compone de 7 disciplinas
y de 4 fases que se explican en los siguientes párrafos. Distingue 2 tipos de iteraciones:
iteraciones de desarrollo (son incrementos menores que van al área de pruebas) e iterac-
ciones de versiones de producción (incrementos mayores y probados que van al área de
producción).
Las disciplinas son ejecutadas de una forma iterativa, definiendo las actividades, las
1
Más información en http://www.disciplinedagiledelivery.com
4. Metodologías Ágiles 59
cuales, el equipo de desarrollo ejecuta para construir, validar y liberar software funcional,
el cual cumple con las necesidades de los involucrados. Las disciplinas son:
• Test. Su finalidad es ejecutar una evaluación de los objetivos para asegurar la calidad.
Esto incluye encontrar defectos, validar que el sistema funciona como fue diseñado
y verificar que cumple los requerimientos.
• Gestión del proyecto. Se dirigen las actividades y recursos del proyecto: gestión del
riesgo, gestión de los RRHH (asignar tareas, seguimiento de los procesos, etc...),
coordinarse con todos los involucrados del proyecto, etc...
1. Inicio. Identificar el alcance inicial del proyecto, una arquitectura recomendable para
el sistema, obtener fondos y la aceptación por parte de las personas involucradas.
4.2.4. Crystal
Alistair Cockburn (uno de los autores del Manifiesto Ágil) describió a mediados de
los 90 un conjunto (familia) de metodologías ligeras o ágiles a las que llamó Crystal. Su
nombre proviene de los minerales, que se caracterizan por 2 dimensiones: color y dureza.
Análogamente los proyectos software también pueden caracterizarse según 2 dimensiones:
tamaño o dimensión (número de personas en el proyecto) y criticidad (consecuencia de
los errores). Ver el esquema de Crystal en la figura 4.6. La criticidad se puede clasificar
de menos a más grave: pérdida de comfort o usabilidad, pérdidas económicas moderadas,
pérdidas económicas graves y pérdida de vidas humanas. Según el número aproximado de
personas se le llama con un color, algunos son: crystal clear, crystal yellow, crystal orange,
crystal orange web, crystal red, crystal maroon, crystal diamond o crystal sapphire.
Cockburn en las conclusiones de uno de sus artículos, llamado la “Cockburn Scale”, rom-
pe con la antigua idea, que aún persiste en algunas empresas, de que existen metodologías
omnipontentes que se implantan directamente y por completo. Así expone que no existe
una metodología de desarrollo software única, mejor y universal, sino que por cada tipo de
proyecto hay una metodología óptima, que permita la maniobrabilidad en el proyecto. Los
parámetros fundamentales para seleccionar una metodología son el tamaño del equipo, su
distribución, la criticidad del proyecto y las prioridades.
Para lograr la maniobrabilidad, el autor definió un conjunto de metodologías, cada una
con elementos básicos comunes a todas. Además definieron los roles, modelos de procesos,
productos de trabajo y prácticas que son únicas para cada una. Crystal es en realidad un
conjunto de ejemplos de procesos ágiles que se han demostrado eficaces para diferentes
tipos de proyectos. El objetivo es permitir a los equipos ágiles seleccionar qué miembro de
la familia Crystal es el más apropiado para su proyecto y entorno.
Las metodologías Crystal se fundamentan en 7 principios.
• Comunicación osmótica. El equipo está en una misma ubicación física para lograr
la comunicación directa y fluida.
• Seguridad personal. Todo el mundo puede expresar su opinión sin cortapisas, con-
siderándose su opinión.
• Fácil acceso al cliente. No es obligatorio que los clientes estén continuamente junto
al equipo de proyecto (no todas las organizaciones pueden hacerlo). Como mínimo,
reuniones semanales y los clientes deben estar accesibles.
Figura 4.7: Ciclo de desarrollo de la metodología Dynamic Systems Development Method (DSDM).
• El alcance a alto nivel y los requerimientos deberían ser estar fijados como una línea
base antes del desarrollo del proyecto.
• Las pruebas son realizadas durante todo el ciclo de vida del proyecto.
4. Metodologías Ágiles 64
DSDM propone varios roles (ver figura 4.8), cada uno con su propia responsabilidad.
Las roles son: esponsor ejecutivo, visionario, usuario embajador, usuario asesor, project
manager, coordinador técnico, líder de equipo, desarrollador, tester, recopilador, facilitador
y especialistas (arquitecto, gestor de calidad, integrador de sistemas, etc...).
Feature Drive Development (FDD) fue concebido originalmente por Peter Coad y Jeff
De Luca mediante su libro “Java Modeling in Color with UML” en 1999 como un modelo
de procesos práctico para la Ing. de Software orientado a objetos. Stephen Palmer y John
Felsing en 2002 publicaron “A Practical Guide to Feature Driven Development” donde
amplian y mejoran el anterior trabajo, que describen unos procesos adaptativos, ágiles,
que se puede aplicar a proyectos de tamaño medios y grandes.
Al igual que otros metodologías ágiles, FDD adopta una filosofía que:
4. Metodologías Ágiles 65
2. Construir lista de características. Se elabora una lista que resuma las funcionalida-
des que debe tener el sistema, cuya lista es evaluada por el cliente. Cada funcionalidad
de la lista se divide en funcionalidades más pequeñas para un mejor entendimiento
del sistema.
Una característica se define como “una función que aporta valor al cliente y que puede
ser implementada en dos semanas o menos”. Esta definición ofrece los siguientes beneficios.
4. Metodologías Ágiles
CHAPTER 3 AGILE DEVELOPMENT 87 66
FIGURE 3.5
Feature Driven
Development
[Coa99] (with Develop
permission) Build a Plan Design Build
an
Features By By By
Overall
List Feature Feature Feature
Model
A feature set groups related features into business-related categories and is defined
Figura 4.9: Ciclo de desarrollo de la metodología Feature Drive Development (FDD).
[Coa99] as:
<action><-ing>
• Debido a(n) <object>
a que las características son pequeñas, su diseño y código son inspeccionables
eficientemente.
For example: Making a product sale is a feature set that would encompass the fea-
tures noted earlier
• La principal and others.
desventaja es que, como todo ciclo de desarrollo incremental, hay costes
derivados al integrardefines
The FDD approach cada nuevo incremento software:
five “collaborating” [Coa99]rediseño,
frameworkrefactorización
activities (in del
código,
FDD these volver a testear
are called el código,
“processes”) etc... in Figure 3.5.
as shown
FDD provides greater emphasis on project management guidelines and tech-
FDD enfatiza
niques las actividades
than many other agiledemethods.
aseguramiento de la grow
As projects calidad
in del
sizesoftware con una es-
and complexity,
trategia incremental de desarrollo, el uso del diseño e inspecciones de código,
ad hoc project management is often inadequate. It is essential for developers, la aplicación
their
de auditorías de aseguramiento de la calidad, métricas y el uso de patrones
managers, and other stakeholders to understand project status—what accomplish-para el análisis,
diseño y construcción.
ments have been made and problems have been encountered. If deadline pressure
is significant, it is critical to determine if software increments (features) are properly
scheduled. To accomplish this, FDD defines six milestones during the design and
4.2.7. Lean Software Development (LSD)
implementation of a feature: “design walkthrough, design, design inspection, code,
code inspection,
Mary promote topublicaron
y Tom Poppendieck build” [Coa99].
el libro “Lean Software Development” en 2003
que da origen a esta metodología. Surge como una corriente de pensamiento que aplica
3.5.6 Lean Software Development (LSD)
los principios de fabricación Lean al desarrollo de software, ideada por Taiichi Ohno en
1956Lean Software
y que Development
es la esencia (LSD)de
del sistema has adapted the
producción de principles of leanToyota
Toyota (llamado manufacturing
Production
System,
to the TPS).
world of Elsoftware
libro presenta los tradicionales
engineering. principios
The lean principles thatLean de the
inspire forma
LSDmodificada,
process
así can
como be summarized ([Pop03], [Pop06a]) as eliminate waste, build quality in, con
un conjunto de 22 instrumentos y herramientas y las comparaciones otras
create
prácticas ágiles.defer
knowledge, La commitment,
participación deliver
de losfast,
autores enpeople,
respect la comunidad del desarrollo
and optimize the whole.ágil de
software,
Eachincluyendo
of these charlas en can
principles varias
beconferencias,
adapted to theha dado lugarprocess.
software a dichosForconceptos,
example,que
soneliminate
más ampliamente aceptados en la comunidad de desarrollo ágil.
waste within the context of an agile software project can be interpreted
to mean
Lean y LSD[Das05]:
no son(1)
unaadding no extraneous
metodología features
de Ing. de or functions,
Software (2) assessing
en el sentido the Es
convencional.
máscost
unaand
síntesis de principios
schedule y una
impact of anyfilosofía para construir
newly requested sistemas (3)
requirement, software. Si Lean
removing any se
superfluous process steps, (4) establishing mechanisms to improve the way team
members find information, (5) ensuring the testing finds as many errors as possible,
4. Metodologías Ágiles 67
Figura 4.10: Diagrama de los procesos detallados de la metodología Feature Drive Development
(FDD).
4. Metodologías Ágiles 68
• Entregar rápido. El desarrollo iterativo permite realizar entregas rápidas a los clientes
encontrándose con código funcional desde etapas tempranas. El código debe ser
desarrollado con calidad para mantener una velocidad importante de entrega si no
se cuenta con calidad y un equipo disciplinado, comprometido y confiable.
4. Metodologías Ágiles 69
• Construir con calidad. La calidad debe ser global, tanto para el proceso como para
el producto. Un proceso que respeta la calidad es aquel que es conocido, entendi-
do y mejorado por sus propios participantes. Para desarrollar productos con calidad
se pueden tener en cuenta elementos como: técnicas como Test Driven Develop-
ment (TDD), el programador es responsable de su propio desarrollo (no se debe
esperar a futuros test de pruebas), fomentar el desarrollo de pruebas automatizadas
y refactorizar el código buscando que no existan duplicaciones (eliminar desperdicios).
74
4. Metodologías Ágiles
PART ONE THE SOFTWARE PROCESS
70
FIGURE 3.2
simple design spike solutions
The Extreme CRC cards prototypes
Programming user stories
process values
acceptance test criteria
iteration plan n
desig
i ng
plann g
codin
refactoring
pair programming
test
Release
software increment unit test
project velocity computed continuous integration
acceptance testing
feel for required output and major features and functionality. Listening leads to the
Figura 4.11:
creation Ciclo
of a set de desarrollo
of “stories” (alsode la metodología
called user stories)eXtreme Programming
that describe (XP).
required output,
? What is an
XP “story”? features, and functionality for software to be built. Each story (similar to use cases
inmediatas, en lugar
described de considerar
in Chapter necesidades
5) is written futuras.
by the customer andLa intención
is placed on anesindex
crearcard.
un diseño
simple que
The puede serassigns
customer implementado fácilmente
a value (i.e., a priority)en
to código.
the storySi el diseño
based on thedebe serbusi-
overall mejorado,
se refactoriza en un
ness value momento
of the feature posterior. 5
or function. Members of the XP team then assess each
story and assign a cost—measured in development weeks—to it. If the story is esti-
Las historias de usuario son la técnica utilizada en XP para especificar los requisitos y
mated to require more than three development weeks, the customer is asked to split
priorizar el desarrollo. Se trata de tarjetas en las cuales el cliente describe brevemente las
the story into smaller stories and the assignment of value and cost occurs again. It
características que el sistema debe poseer, sean requisitos funcionales o no. Es decir, cada
is important to note that new stories can be written at any time.
historia describe las salidas requeridas, sus características y sus funcionalidades. El cliente
WebRef Customers and developers work together to decide how to group stories into the
asigna un valor (prioridad) a esa historia y el equipo desarrollador un coste (medido en
A worthwhile XP next release (the next software increment) to be developed by the XP team. Once a
semanas
“planning game” can de trabajo). El tratamiento de las historias es muy flexible, en cualquier momento
basic commitment (agreement on stories to be included, delivery date, and other
be found at: pueden eliminarse, añadirse nuevas, modificarse o reemplazarse por otras más específicas
project matters) is made for a release, the XP team orders the stories that will be de-
c2.com/cgi/o generales. La velocidad es el número de historias que se hacen por versión ayudando a
wiki?planningGame. veloped in one of three ways: (1) all stories will be implemented immediately (within
dar estimaciones de plazos.
a few weeks), (2) the stories with highest value will be moved up in the schedule and
implemented
El ciclo first,de
de desarrollo or XP
(3) the riskiestdividir
se puede storiesen
will
4 be moved upfundamentales
actividades in the schedule (ver
and figura
4.11). implemented first.
After the first project release (also called a software increment) has been deliv-
4. Test. Además de las pruebas unitarias ya mencionadas también existen las pruebas de
aceptación (o pruebas de clientes) que son especificadas por el cliente centrándose
en las características del sistema en general y en las funcionalidades visibles. Éstas
se derivan de las historias de usuario que se han implementado en la versión. Es
importante que se tenga una estrategia de pruebas de regresión para cada vez que
se modifica el código (que es frecuente dada la filosofía de refactorización).
Los valores en los que se fundamenta XP son 5. Estos valores son la guía para el
desarrollo en sí mismo y la inspiración de toda la metodología.
• Simplicidad. XP propone el principio de hacer la cosa más simple que pueda funcio-
nar, en relación al proceso y la codificación. Es mejor hacer algo simple ahora que
hacerlo complejo y que probablemente nunca se use.
Para que la metodología XP tenga éxito deben seguirse las siguientes 13 buenas prác-
ticas (ver figura 4.12). Se basa en combinar las que han demostrado ser las mejores
prácticas para desarrollar software y llevarlas al extremo.
4. Metodologías Ágiles 72
• Equipo completo. Forman parte del equipo todas las personas que tienen algo que
ver con el proyecto, incluido el cliente y el responsable del proyecto.
• Test del cliente. El cliente, ayudado por los desarrolladores, propone sus propias
pruebas para validar las mini-versiones.
• Integración continua. Deben tenerse siempre un ejecutable del proyecto que fun-
cione y en cuanto se tenga una nueva pequeña funcionalidad, debe recompilarse y
probarse.
• Propiedad colectiva. Cualquiera puede tocar y conocer cualquier parte del código.
Para eso se hacen las pruebas automáticas.
• Metáforas. Hay que buscar frases o nombres que definan las funcionalidades de las
módulos del programa, de forma que sólo con los nombres se sepa a qué se está
haciendo referencia. Esto ayuda a que todos los programadores y el cliente sepan de
qué se está hablando.
• Programación en parejas. Los programadores trabajan por parejas delante del mis-
mo ordenador y se intercambian las parejas con frecuencia (un cambio diario).
En la nueva versión de XP, los principios son el puente entre los valores (sintéticos
y abstractos) y las prácticas (indican cómo desarrollar software). Se enumeran los 14
principios: humanidad, economía, beneficio mutuo, auto-similitud, mejora, diversidad, re-
flexión, flujo, oportunidad, redundancia, fallo, calidad, pasos de bebé y aceptación de la
responsabilidad.
Los roles del proyecto propuestos originalmente por Kent Beck son los siguientes.
• Cliente. El cliente escribe las historias de usuario y las pruebas funcionales para
validar su implementación. Además, asigna la prioridad a las historias de usuario y
decide cuáles se implementan en cada iteración centrándose en aportar mayor valor
al negocio.
4.2.9. Scrum
Los inicios de Scrum se remontan al artículo “The New Product Development Game”
(Harvard Business Review, 1986) de Hirotaka Takeuchi e Ikujiro Nonaka que introducía
las mejores prácticas más utilizadas en 10 compañías tecnológicas japonesas. Describen
un enfoque integral que incrementaba la velocidad y flexibilidad del desarrollo de nuevos
productos. Compararon este nuevo enfoque integral, en el que las fases se solapan fuerte-
mente y el proceso entero es llevado a cabo por un equipo multifuncional a través de las
diferentes fases, con el rugby (de ahí que se llame Scrum). En 1995 Jeff Sutherland y Ken
Schwaber presentaron de forma conjunta la conferencia “Scrum Development Process”
en la OOPSLA (Object-Oriented Programming Systems & Applications conference) en
Austin, su primera aparición pública. Ambos colaboraron durante los siguientes años para
unir los artículos, sus experiencias y las mejores prácticas de la industria en lo que ahora
se conoce como Scrum. Actualmente es la metodología ágil más utilizada con diferencia.
Scrum es un marco de trabajo en el cual las personas pueden acometer problemas
complejos adaptativos, a la vez que entregar productos del máximo valor posible productiva
y creativamente. Según los autores, Scrum es ligero, fácil de entender y extremadamente
difícil de llegar a dominar. Scrum no es un proceso o una técnica para construir productos
sino que es un marco de trabajo dentro del cual se pueden emplear varias técnicas y
procesos. El marco de trabajo Scrum tiene los siguientes componentes: los equipos scrum,
roles, eventos, artefactos y reglas asociadas. Las reglas relacionan los eventos, roles y
artefactos, gobernando las relaciones e interacciones entre ellos. Las estrategias específicas
para usar el marco de trabajo son diversas y no están descritas en la metodología. En la
figura 4.13 se muestra la operativa de Scrum con sus principales componentes.
4. Metodologías Ágiles
Las características más relevantes que se logran con Scrum son: gestión regular de
las expectativas del cliente, resultados anticipados, flexibilidad y adaptación, retorno de
inversión, mitigación de riesgos, productividad y calidad, alineamiento entre cliente y equipo
y un equipo motivado.
Los roles principales en Scrum son el Scrum Master que mantiene los procesos y trabaja
junto con el jefe de proyecto, el Product Owner que representa al cliente y el Team que
incluye a los desarrolladores.
La operativa de Scrum se resume a continuación. En cada iteración (llamado sprint),
típicamente un periodo de 2 a 4 semanas (decidido y fijado para siempre por el equipo),
el equipo crea un incremento de software funcional. El conjunto de características que
entra en una iteración viene del product backlog (pila del producto), que es un conjunto
priorizado de requisitos de trabajo de alto nivel (historias de usuario) con su estimación
temporal correspondiente. Los ítems que entran en una iteración se determinan durante la
reunión de planificación de la iteración. Durante esta reunión, el Product Owner informa
al equipo de los ítems en el product backlog que quiere que se completen. El equipo
determina entonces a cuanto de eso puede comprometerse a completar durante la siguiente
iteración formándose el sprint backlog (pila del sprint). Durante una iteración, nadie
puede cambiar el backlog, lo que significa que los requisitos están congelados para esa
iteración. Se empieza a desarrollar el software haciendo reuniones diarias (scrum diario)
breves, típicamente de 15 minutos, para que cada persona del equipo diga sus avances y
se actualice el sprint backlog. Cuando se completa una iteración, el equipo muestra el
uso del software para que lo validen todos los involucrados del proyecto. Finalmente, se
comenzaría otra nueva iteración.
4.2.10. Kanban
Kanban no prescribe roles porque entiende que su ausencia es una ventaja para el equipo
para así evitar la resistencia al cambio para desempeñar un nuevo trabajo. Tampoco fija
reuniones diarias ni establece unas fases definidas como ya se ha mencionado, sino que
se habla de un flujo que se puede dividir según las necesidades particulares del proyecto
liberando versiones o entregables.
Este método es bastante radical en cuanto a lo adaptativo que es y a lo poco que
define los procesos, roles e incluso la forma de hacer el tablero Kanban. Muchos expertos
consideran a Kanban como una técnica de señalización más que una metodología. Es
decir, Kanban puede complementar a otras como Scrum o XP a la hora de representar
visualmente las tareas y el avance del proyecto. Por tanto, no se tendrá en cuenta en este
TFM como una metodología propiamente dicha como el resto ni se entrará más en detalle.
4.2.11. Scrumban
plejidad o el riesgo sea alto por poder surgir errores de programación inesperados. Para
estos casos, los sprints de Scrum no son factibles, dado que los errores/impedimentos
que surgirán a lo largo de las tareas son difíciles de determinar y consecuentemente no
es posible estimar el tiempo que conlleva cada historia. Por ello, resulta más beneficioso
adoptar flujo de trabajo continuo propio de Kanban.
Capítulo Quinto
5.1. Introducción
Este capítulo trata sobre la comparación de las metodologías descritas en los dos ca-
pítulos anteriores. Como ya se ha dicho, se llama a todo metodologías cuando algunas
de ellas (sobre todo las ágiles) son más bien un conjunto disperso de principios, valores y
buenas prácticas. Sin embargo, la comparación tiene interés para explicar cómo abordan
las distintas áreas, si lo hacen, de las que se componen la gestión de proyectos.
Hay una primera sección que se compara solamente las metodologías ágiles por ser muy
heterogéneas entre sí y para que el lector fije cuales son sus principales diferencias. En la
siguiente sección se hace ya una comparación entre las metodologías tradicionales y ágiles.
En este apartado se van a comparar las metodologías ágiles más conocidas y usadas:
Adaptive Software Development (ASD), Agile Modeling (AM), Crystal, Dynamic Systems
Development Method (DSDM), eXtreme Programming (XP), Feature Drive Develop-
ment (FDD) y Scrum. Para ello se van a evaluar si cubren las distintas fases del ciclo de
vida de desarrollo software: concepción del proyecto, especificación de requisitos, diseño,
codificación, pruebas unitarias, pruebas de integración, pruebas de sistema, pruebas de
aceptación y sistema en servicio. En la comparativa se van a evaluar, para cada fase, 3
aspectos diferentes.
80
5. Comparación entre las metodologías 81
ASD
AM
Crystal
ASD
DSDM
AM
XP
Crystal
FDD
DSDM
ISD
XP
PP
FDD
Scrum
ISD
PP
Project Requirements Design Code Unit test Integration System Acceptance System
inception specification test test test in use
Scrum
de desarrollo. Este es uno de los puntos desfavorables más importantes que se le achacan
a las metodologías ágiles: no concretar cómo hacer las cosas. Sin embargo, XP sí cubre
!"#$%%&'()*+#,+-.%+/0-.+1(-%"(2-'#(23+4#(,%"%($%+#(+5#,-62"%+7()'(%%"'()+814579:;<+
:/=:>0/0=?:;+@A=B::+C+/::;+1777+
5. Comparación entre las metodologías 82
este aspecto pero tiene en su contra que descuida totalmente la gestión del proyecto.
Por último, citar Scrum por su notoriedad actual aun a pesar que desde el punto meto-
dológico no cubre todo el ciclo de desarrollo y hay otras mucho más completas. Scrum se
centra en las fases más importantes del proyecto dejando en blanco las demás (concepción
del proyecto, pruebas de sistema y aceptación y sistema en servicio). Tal vez su éxito se
debe a que sí tiene en cuenta la gestión del proyecto y da directrices concretas en dos
fases cruciales del proyecto (especificación de requisitos y pruebas de integración). Todo
ello hace que sea una metodología útil que combinándola con otra/s (típicamente con XP)
se forme una metodología híbrida con gran aceptación por parte del público. Volver a ver
la figura 4.1 del capítulo anterior donde se observa que la metodología híbrida Scrum/XP
es utilizada un 24 %.
El enfoque para la comparación entre metodologías puede ser diverso según qué pará-
metros se estudien. Aquí se van a comparar atendiendo a los siguientes 3 parámetros.
1. Costes de los cambios. ¿Cómo se afrontan los cambios a lo largo del proyecto para
las tradicionales vs ágiles?
2. Retorno de la inversión (ROI). ¿Cómo es el ROI a lo largo del proyecto para las
tradicionales vs ágiles?
FIGURE 3.1
Change costs
as a function
of time in
development
Development cost
Cost of change
using conventional
software processes
Cost of change
using agile processes
Return on Investment
Starts Here (If You Are Return on Investment
on Time) Starts Here
Deadline
$$$$$ In
$$$$ In
Requirements
Value Delivery
Value Delivery
Design $$$ In
Implementation $$ In
Verification $ In
Deployment
Time Time
Figure 1–9a. Waterfall Return on Investment Figure 1–9b. Agile Return on Investment
Figura 5.3: Retorno de la inversión (ROI) según las metodologías tradicionales vs ágiles.
Figure 1–9 Value delivery and ROI in waterfall versus agile
cimiento sus principios, valores y buenas prácticas. Al no ser metodologías divididas
en áreas si no principios generalistas, es algo subjetivo dónde situarlas.
85
Tabla 5.1: (continuación)
Plazos • Plan de plazos • Gestión límite etapa: • Resolución de pro- • Liberar la planifi- • Fijar la fecha y funcio- • Determinar se-
• Definir actividades planear siguiente eta- blemas cación nalidades para cada ver- cuencia de desa-
• Secuenciar activi- pa • Tiempo y fases de • Iterar la planifica- sión rrollo (paso 3)
dades • Gestión límite etapa: los proyectos ción • Iteraciones mensuales • Asignar paque-
• Estimar recursos reportar final de etapa • Recursos tes trabajo a los
de actividad • Control etapa: to- • Controles e infor- jefes programado-
• Estimar duraciones mar acciones correcti- mes res (paso 3)
de actividad vas • Asignar clases
• Desarrollar calen- a los desarrollado-
dario res (paso 3)
• Controlar calenda-
rio
86
Tabla 5.1: (continuación)
87
Tabla 5.1: (continuación)
• Plan de riesgos • Iniciar proyecto: • Riesgos y oportu- • Crear prototipo • Evalución de riesgos al
• Identificar riesgos estrategia de gestión nidades para reducir riesgos inicio del proyecto
• Analisis cualitativo de riesgos • Resolución de pro- • Revisar los riesgos en
del riesgo • Control etapa: blemas las reuniones de revisión
• Analisis cuantitati- capturar y examinar • Cambios
vo del riesgo problemas y riesgos • Controles e infor-
• Plan de respuesta • Control etapa: mes
a los riesgos reportar problemas y
• Monitorizar y con- riesgos
trolar los riesgos
Aprovisiona-
• Plan de aprovisio- • Resolución de pro-
miento
namientos blemas
• Realizar aprovisio- • Tiempo y fases de
namiento los proyectos
• Administrar apro- • Recursos
visionamientos • Aprovisionamiento
• Cerrar aprovisiona- y contratos
mientos • Controles e infor-
mes
88
Capítulo Sexto
Conclusiones finales
6.1. Conclusiones
Este TFM ha conseguido realizar una presentación general de la Ing. de Software, las
metodologías de desarrollo de software que hay en la actualidad y una comparación ilus-
trativa entre ellas. No se ha podido profundidar en las muchas y variadas metodologías
que hay tanto como le hubiese gustado al autor. Queda para posteriores trabajos o, in-
cluso, una Tesis Doctoral, el ampliar este estudio con más información dando un enfoque
más heterogéneo de la dirección y gestión de proyectos software así como realizar una
comparación exhaustiva y desde distintas perspectivas que enriquezca el estudio.
Resumidamente se exponen algunas conclusiones u observaciones relevantes, a juicio
del autor, que han quedado patentes mientras se realizaba el TFM.
• Se ha realizado una extensa descripción de por qué los proyectos software son diferen-
tes al resto de proyectos de ingeniería enumerando sus particularidades y principales
problemáticas. Esto da una justificación completa al estudio de los métodos de ges-
tión de proyectos software por ser un elemento crucial para alcanzar el éxito.
• Las fronteras entre las metodologías no están delimitadas claramente. Las meto-
dologías aquí llamadas tradicionales tienen características de las ágiles y viceversa.
También se ha simplificado llamando metodologías a todas las formas de gestionar
proyectos aquí tratadas cuando algunas de ellas no son metodologías propiamente
dichas, sino más bien guías de buenas prácticas o directrices para gestionar proyectos.
• Se han encontrado dificultades para realizar la comparación entre las distintas me-
todologías. Esto es debido a que no es trivial encontrar elementos comunes a todas
las metodologías y que, además, las definan completamente. Es complejo encontrar
una base cuando se comparan metodologías de naturaleza diversa.
• A lo largo del trabajo se va afianzando la tesis de que no existe una metodología
única y perfecta que garantice el éxito a cualquier tipo de proyecto. En el mejor de
89
6. Conclusiones finales 90
los casos existirá una metodología que se adapte al tipo de proyecto, cliente, empresa
y equipo que lo va a desarrollar.
• No se puede establecer ninguna superioridad entre las dos familias de metodologías
confrontadas. Como ya se ha dicho en el punto anterior, dependerá del entorno del
proyecto. Por lo tanto, hay que desterrar la idea de que las metodologías ágiles son
la mejor opción siempre. Lo difícil es saber el punto medio recomendable para cada
proyecto entre agilidad y la planificación tradicional.
• Una forma de conseguir una metodología que se ajuste a un proyecto sería coger
una metodología específica y modificarla adaptándola a las necesidades del proyecto.
Además se podría hibridar cogiendo otra/s metodología/s. Por ejemplo, Scrum/XP
es una metodología híbrida muy popular per se podría ir más lejos hibridando meto-
dologías de distintas familias. Por ejemplo, PMBOK/XP donde PMBOK suple las
carencias en gestión de proyectos que tienen XP.
Vivimos una época emocionante donde el software está cambiando nuestra vidas en
todos los aspectos: desde el ámbito laboral hasta la manera de relacionarlos socialmente
pasando por los hábitos de consumo. Además, cada vez hay más sistemas críticos, tanto
para las personas como para los Estados, controlados por sistemas informáticos: plantas
energéticas, distribución de aguas, defensa y seguridad, hospitales, medios de transporte,
etc... Estos macrosistemas deben de tener un software bien diseñado y construido porque
un fallo tendría graves consecuencias. Consecuentemente, la exigencia en dichos sistemas
aumenta cada vez más por lo que la presión para el equipo de desarrollo se incrementa.
Gracias a los avances en otros campos como, por ejemplo, el de los materiales, la
electrónica o la medicina permitirán llevar el software a nuevos sectores creando nuevos
sistemas que ayuden a las personas. Por tanto, la gestión de proyectos software será una
tarea cada vez más crucial. Mientras no se automatice la creación de código y siga siendo
un proceso intelectual y creativo realizado por humanos, la labor del director del proyecto
seguirá siendo de suma importancia. Todavía queda muy lejos el que el ser humano pueda
crear máquinas que tengan la suficiente inteligencia para desarrollar código en base a unas
especificaciones enunciadas con la imprecisión y ambigüedad del lenguaje humano.
Como una línea futura para seguir con este trabajo, se podría analizar el uso de las
metodologías desde un punto de vista práctico. Es decir, no realizar un trabajo meramente
teórico sino que también se consulte bibliografía que recoja casos de éxito y experiencias
reales de proyectos en los que se han utilizado determinadas metodologías. Por ejemplo, el
SEI tiene artículos interesantes en el que tratan cómo se utilizaron las metodologías ágiles
en macroproyectos reales dentro del Department of Defense (USA) (DOD), institución de
referencia en la gestión y dirección de nuevas técnicas en proyectos de ingeniería.
6. Conclusiones finales 91
El sector del desarrollo de software avanza muy rápido creando nuevas formas de trabajo
utilizando las nuevas tecnologías disponibles, adaptándose a las necesidades del cliente y
compitiendo con empresas a nivel global. El hombre siempre ha sigo capaz de adaptarse
a su entorno y seguro que creará metodologías y herramientas cada vez más eficientes y
adaptadas al tipo de proyectos que realice.
Parte II
ANEXOS
92
Apéndice A
93
A. Estándares del IEEE e ISO/IEC sobre gestión de proyectos software 94
las posibilidades de éxito de muchos proyectos. El PMI considera esta norma como
una referencia de gestión del proyecto básica para sus programas y certificaciones de
desarrollo profesional.
IEEE Std. 16085-2006 (a.k.a. ISO/IEC 16085:2006) Standard for Systems and
Software Engineering - Software Life Cycle Processes - Risk Management.
Define un proceso para la gestión de riesgo en el ciclo de vida, tanto del software
como de sistemas. Es una tarea fundamental y crítica determinar continuamente
la viabilidad de los planes del proyecto, mejorar la búsqueda e identificación de los
posibles problemas que pueden afectar a las actividades del ciclo de vida, la calidad
y rendimiento de los productos y también sirve para mejorar la gestión activa de
proyectos.
Manifiesto Ágil
Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia
experiencia como ayudando a terceros. A través de este trabajo hemos aprendido a valorar:
Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquier-
da.
Firmado el 17 de febrero de 2001 por Kent Beck, Mike Beedle, Arie van Bennekum,
Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith,
Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken
Schwaber, Jeff Sutherland y Dave Thomas.
Tras los cuatro valores descritos, los firmantes redactaron los siguientes, como los
principios que de ellos se derivan:
• Son bienvenidos los requisitos cambiantes, incluso si llegan tarde al desarrollo. Los
procesos ágiles se doblegan al cambio como ventaja competitiva para el cliente.
96
B. Manifiesto Ágil 97
• Las personas del negocio y los desarrolladores deben trabajar juntos de forma coti-
diana a través del proyecto.
[1] A guide to the project management body of knowledge (PMBOK guide), 5th edition.
Project Management Institute, 2013. ISBN-13: 978-1-935589-67-9.
[2] Software Extension to the PMBOK Guide. Project Management Institute, 2013.
ISBN-13: 978-1-6282-5013-8.
[3] IPMA Competence Baseline (ICB), version 3.0. International Project Management
Association, 2006. ISBN: 0-9553213-0-1.
[4] Managing Succesful Projects with PRINCE2. The Stationery Office, 2009. ISBN:
978-0-11-331059-3
[5] P. Bourque and R.E. Fairley, eds., Guide to the Software Engineering Body of
Knowledge (SWEBOK), version 3.0. IEEE Computer Society, 2014. ISBN-13: 978-
0-7695-5166-1. Disponible libre y gratuitamente en http://www.computer.org/
portal/web/swebok
[6] UNE-ISO 21500, Directrices para la dirección y gestión de proyectos. AENOR, 2013.
[7] Ken Schwaber and Jeff Sutherland, La Guía Definitiva de Scrum: Las Reglas del
Juego. 2013.
[8] ALLAN KELLY. Changing software development: learning to be agile. John Wiley
& Sons Ltd, 2008. ISBN-13: 978-0-470-51504-4.
[9] DEAN LEFFINGWELL. Agile software requirements: lean requirements practices for
teams, programs, and the enterprise. Addison-Wesley, 2011. ISBN-13: 978-0-321-
63584-6.
[10] JAMES SHORE and SHANE WARDEN. The art of agile development. O’Reilly,
2008. ISBN-13: 978-0-596-52767-9.
98
REFERENCIAS 99
[11] MIKE COHN. Agile estimating and planning. Prentice Hall, 2005. ISBN-13: 978-0-
131-47941-8.
[14] POLLYANNA PIXTON, PAUL GIBSON and NIEL NICKOLAISEN. The agile cul-
ture. Addison-Wesley, 2014. ISBN-13: 978-0-321-94014-8.
[16] Aitken, Ashley; Ilango, Vishnu, A Comparative Analysis of Traditional Software En-
gineering and Agile Software Development. System Sciences (HICSS), 2013 46th
Hawaii International Conference.
[17] Larman, C.; Basili, V.R., Iterative and incremental developments. a brief history.
Computer, vol.36, no.6, pp.47,56, June 2003.
[18] Abrahamsson, P.; Warsta, J.; Siponen, M.T.; Ronkainen, J., New directions on
agile methods: a comparative analysis. Software Engineering, 2003. Proceedings.
25th International Conference.
[19] Coram, M.; Bohner, S., The impact of agile methods on software project mana-
gement. Engineering of Computer-Based Systems, 2005. ECBS ’05. 12th IEEE
International Conference and Workshops.
[20] Sulaiman, T.; Barton, B.; Blackburn, T., AgileEVM - earned value management in
Scrum Projects. Agile Conference, 2006.
[21] Fitsilis, P., Measuring the Complexity of Software Projects, Computer Science and
Information Engineering, 2009 WRI World Congress on , vol.7, no., pp.644,648,
2009.
[22] J. Laurenz Eveleens and Chris Verhoef, The rise and fall of the Chaos report figures.
IEEE Computer Society, 2010.
Artículos de otras fuentes:
[23] Boehm, B.W., A View of 20th and 21st Century Software Engineering, ACM Press,
In Proc. ICSE?06, 2006.
[25] Fitsilis, P., Comparing PMBOK and Agile Project Management software develop-
ment processes. Computer Science and Information Engineering, 2009 WRI World
Congress on, vol.7, no., pp.644,648, 2009.
Trabajos académicos:
[29] Luis Álvarez Puertas, Oficina de Gestión de Proyectos Ágil: control y seguimiento
de proyectos ágiles. Trabajo Fin de Máster en Dirección de Proyectos, Universidad
de Oviedo, Junio 2013.
Páginas web consultadas:
[45] Repositorio del Institute of Electrical and Electronics Engineers (IEEE): http://
ieeexplore.ieee.org
[47] Vocabulario de Sistemas e Ing. de Software del IEEE Standard 24765:2010: http:
//www.computer.org/sevocab