Metodologias Desarrollo Software
Metodologias Desarrollo Software
Metodologias Desarrollo Software
Este documento est disponible en la Biblioteca Digital de la Universidad Catlica Argentina, repositorio institucional
desarrollado por la Biblioteca Central San Benito Abad. Su objetivo es difundir y preservar la produccin intelectual
de la Institucin.
La Biblioteca posee la autorizacin del autor para su divulgacin en lnea.
Maida, EG, Pacienzia, J. Metodologas de desarrollo de software [en lnea]. Tesis de Licenciatura en Sistemas y
Computacin. Facultad de Qumica e Ingeniera Fray Rogelio Bacon. Universidad Catlica Argentina, 2015.
Disponible en: http://bibliotecadigital.uca.edu.ar/repositorio/tesis/metodologias-desarrollo-software.pdf [Fecha de
consulta:.........]
FACULTAD DE QUMICA E INGENIERIA FRAY ROGELIO BACON
METODOLOGIAS DE
DESARROLLO DE
SOFTWARE
Tesis Final de Licenciatura en Sistemas y Computacin
Pacienzia, Julin
Diciembre 2015
Ctedra Seminario de Sistemas
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
2|P gin a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Agradecimientos y dedicatorias
3|P gin a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Resumen
En la actualidad la rapidez y el dinamismo en la industria del software han hecho replantear los
cimientos sobre los que se sustenta el desarrollo de software tradicional. Estudios recientes y el mismo
mercado actual est marcando la tendencia en la ingeniera del software teniendo como caractersticas
principales atender a las necesidades de rapidez, flexibilidad y variantes externas que hacen de nuestro
entorno una ventaja ms competitiva al aumentar la productividad y satisfacer las necesidades del
cliente en el menor tiempo posible para proporcionar mayor valor al negocio.
Ante esta situacin, el grado de adaptacin de las metodologas tradicionales a estos entornos de
trabajo no eran del todo eficientes y no cubran las necesidades del mercado actual.
En la actualidad existen una gran cantidad de metodologas para el desarrollo de software,
separadas en dos grandes grupos; las metodologas tradicionales o pesadas y las metodologas agiles.
Las metodologas tradicionales se basan en las buenas prcticas dentro de la ingeniera del
software, siguiendo un marco de disciplina estricto y un riguroso proceso de aplicacin.
Las metodologas agiles, en cambio, representan una solucin a los problemas que requieren una
respuesta rpida en un ambiente flexible y con cambios constantes, haciendo caso omiso de la
documentacin rigurosa y los mtodos formales.
El objetivo de esta investigacin es presentar e introducir sobre las existentes metodologas para el
desarrollo de software y los paradigmas que marcan la diferencia entre un mtodo estructurado y un
mtodo gil para as poder identificar cual se adapta de manera ms eficiente a un proyecto
determinado.
4|P gin a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
INDICE
1. INTRODUCCION
2. MARCO TEORICO
5|P gin a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
3. INGENIERIA DE SOFTWARE
3.1. INTRODUCCION
3.2. OBJETIVOS
3.3. DISTRIBUCION DEL ESFUERZO EN UN PROYECTO DE SOFTWARE
3.4. ADMINISTRACION DE PROYECTOS DE SOFTWARE
3.4.1. INTRODUCCION
3.4.2. FACTORES DE LA ADMINISTRACION DE UN PROYECTO
3.4.3. SECUENCIA DE ACTIVIDADES DE ADMINISTRACION DE UN
PROYECTO
3.4.4. VALORES DEL CAPITAL HUMANO
3.4.5. ORGANIZACIN DE UN EQUIPO
3.5. RECURSOS
3.5.1. RECURSOS HUMANOS Y PARTICIPANTES
3.5.2. RECURSOS DE SOFTWARE
3.5.3. RECURSOS DE ENTORNO
3.6. CICLO DE VIDA DE UN PROYECTO DE SISTEMAS
3.6.1. RECOPILACION DE LOS REQUERIMIENTOS
3.6.2. ANLISIS
3.6.3. LIMITACIONES
3.6.4. ESPECIFICACIN
3.6.5. DISEO Y ARQUITECTURA
3.6.6. PROGRAMACIN
3.6.7. PRUEBAS DE SOFTWARE
3.6.8. IMPLEMENTACIN
3.6.9. DOCUMENTACIN
3.6.10. MANTENIMIENTO
6|P gin a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
4. METODOLOGIAS CLASICAS
4.1. INTRODUCCION
4.2. VENTAJAS Y DESVENTAJAS
4.3. TIPOS DE METODOLOGIAS
4.3.1. WATERFALL (CASCADA)
4.3.2. PROTOTYPING
4.3.3. SPIRAL
4.3.4. INCREMENTAL
4.3.5. RAD
5. METODOLOGIAS AGILES
5.1. INTRODUCCION
5.2. BENEFICIOS
5.3. TIPOS DE METODOLOGIAS
5.3.1. PROGRAMACION EXTREMA
5.3.2. SCRUM
5.3.3. CRYSTAL
5.3.4. KANBAN
5.3.5. FEATURE DRIVEN DEVELOPMENT (FDD)
5.3.6. ADAPTIVE SOFTWARE DEVELOPMENT (ASD)
5.3.7. LEAN DEVELOPMENT (LD) Y LEAN SOFTWARE DEVELOPMENT (LSD)
5.3.8. PROCESO UNIFICADO DE DESARROLLO SOFTWARE
7|P gin a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
7. CONCLUSION
8. REFERENCIAS BIBLIOGRAFICAS
9. APENDICE
8|P gin a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
1. INTRODUCCION
Actualmente las metodologas de ingeniera de software pueden considerarse como una base
necesaria para la ejecucin de cualquier proyecto de desarrollo de software que se considere serio, y
que necesite sustentarse en algo ms que la experiencia y capacidades de sus programadores y equipo.
Estas metodologas son necesarias para poder realizar un proyecto profesional, tanto para poder
desarrollar efectiva y eficientemente el software, como para que sirvan de documentacin y se puedan
rendir cuentas de los resultados obtenidos.
Un amplio y buen conocimiento de estas metodologas servir de base terica y permitir
comprender completamente todo lo que requiere el anlisis, diseo, desarrollo e implantacin de un
sistema. Adems es importante, por la demanda que se tiene hoy en da por parte de muchas
empresas, el conocimiento de algunas metodologas de desarrollo de software en especfico.
Lo ms importante en una primera etapa es poder identificar qu metodologa de ingeniera de
software se adeca de la mejor manera a nuestro proyecto, para as lograr el mejor resultado en
tiempo y forma.
La presente tesis se orienta a realizar una contribucin en el rea de metodologa para el diseo,
desarrollo y evaluacin de software, necesarios para abordar proyectos con una metodologa diferente
a la estructurada.
9|P gin a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Para conseguir el objetivo de construir productos de alta calidad dentro de la planificacin, las
metodologas en general emplean una serie de prcticas para:
Entender el problema
Disear una solucin
Implementar la solucin correctamente
Probar la solucin
Gestionar las actividades anteriores para conseguir alta calidad
La utilizacin de la metodologa adecuada, representa un proceso formal que incorpora una serie
de mtodos bien definidos para el anlisis, diseo, implementacin y pruebas del software y sistemas.
Adems, abarca una amplia coleccin de mtodos y tcnicas de gestin de proyectos para el
aseguramiento de la calidad y la gestin de la configuracin del software.
1.4. ALCANCES
Se realiza una exposicin de los dos grandes grupos de metodologas, estructuradas y giles, en
toda su extensin, desde las primeras etapas del anlisis hasta la implementacin final del software y
su seguimiento. El alcance de la tesis trata de introducir al conocimiento de metodologas de trabajo
ms modernas de acuerdo a los desafos presentados en el mundo actual.
1.5. LIMITACIONES
Este trabajo permite la introduccin al conocimiento terico para comprender las fases y etapas
de las metodologas para el desarrollo de software existente. Tambin se tratarn algunos casos
prcticos en el captulo 6.
1.6. METODOLOGIAS
El desarrollo de software no es una tarea fcil. Prueba de ello es que existen numerosas
propuestas metodolgicas que inciden en distintas dimensiones del proceso de desarrollo. Por una
parte tenemos aquellas propuestas ms tradicionales que se centran especialmente en el control del
proceso, estableciendo rigurosamente las actividades involucradas, los artefactos que se deben
producir, y las herramientas y notaciones que se usarn. Estas propuestas han demostrado ser
efectivas y necesarias en un gran nmero de proyectos, pero tambin han presentado problemas en
muchos otros. Una posible mejora es incluir en los procesos de desarrollo ms actividades, ms
artefactos y ms restricciones, basndose en los puntos dbiles detectados. Sin embargo, el resultado
final sera un proceso de desarrollo ms complejo que puede incluso limitar la propia habilidad del
equipo para llevar a cabo el proyecto. Otra aproximacin es centrarse en otras dimensiones, como por
10 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
ejemplo el factor humano o el producto software. Esta es la filosofa de las metodologas giles, las
cuales dan mayor valor al individuo, a la colaboracin con el cliente y al desarrollo incremental del
software con iteraciones muy cortas. Este enfoque est mostrando su efectividad en proyectos con
requisitos muy cambiantes y cuando se exige reducir drsticamente los tiempos de desarrollo pero
manteniendo una alta calidad. Las metodologas giles estn revolucionando la manera de producir
software, y a la vez generando un amplio debate entre sus seguidores y quienes por escepticismo o
convencimiento no las ven como alternativa para las metodologas tradicionales.
Un objetivo claro ha sido encontrar procesos y metodologas, que sean sistemticas, predecibles
y repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software.
La evolucin de la disciplina de ingeniera del software ha trado consigo propuestas diferentes para
mejorar los resultados del proceso de construccin. Las metodologas tradicionales haciendo nfasis
en la planificacin y las metodologas giles haciendo nfasis en la adaptabilidad del proceso, delinean
las principales propuestas presentes.
En el prximo captulo trataremos algunos conceptos bsicos referidos al marco terico, tales
como, definicin de ingeniera, software, metodologas y paradigmas de la ingeniera. En el captulo 3
(tres) abordaremos temas relacionados especficamente a la ingeniera del software, como por
ejemplo, cules son los objetivos fundamentales, administracin de un proyecto, recursos y el ciclo de
vida. Continuaremos con el captulo n 4 (cuatro) donde explicaremos las metodologas clsicas, con
sus ventajas y desventajas, para luego proseguir con el siguiente captulo donde trataremos temas
exclusivos de las metodologas agiles. Posteriormente veremos estudios y anlisis de casos reales,
como casos de xitos, de fracasos y anlisis crticos. Finalmente sacaremos nuestras propias
conclusiones respecto a todo el trabajo realizado.
11 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
2. MARCO TEORICO
2.2. SOFTWARE
2.2.1. METODOLOGIA
Una metodologa es un conjunto integrado de tcnicas y mtodos que permite abordar de forma
homognea y abierta cada una de las actividades del ciclo de vida de un proyecto de desarrollo. Es un
proceso de software detallado y completo. (Autores varios).
Las metodologas se basan en una combinacin de los modelos de proceso genricos. Definen
artefactos, roles y actividades, junto con prcticas y tcnicas recomendadas.
La metodologa para el desarrollo de software es un modo sistemtico de realizar, gestionar y
administrar un proyecto para llevarlo a cabo con altas posibilidades de xito. Una metodologa para el
desarrollo de software comprende los procesos a seguir sistemticamente para idear, implementar y
mantener un producto software desde que surge la necesidad del producto hasta que cumplimos el
objetivo por el cual fue creado.
Si esto se aplica a la ingeniera del software, podemos destacar que una metodologa:
Optimiza el proceso y el producto software.
Mtodos que guan en la planificacin y en el desarrollo del software.
Define qu hacer, cmo y cundo durante todo el desarrollo y mantenimiento de un proyecto.
Una metodologa define una estrategia global para enfrentarse con el proyecto. Entre los
elementos que forman parte de una metodologa se pueden destacar:
Fases: tareas a realizar en cada fase o etapa.
Productos: E/S de cada fase, documentos.
12 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Una metodologa de desarrollo de software es un marco de trabajo que se usa para estructurar,
planificar y controlar el proceso de desarrollo de sistemas de informacin. Una gran variedad de estos
marcos de trabajo han evolucionado durante los aos, cada uno con sus propias fortalezas y
debilidades. Una metodologa de desarrollo de sistemas no tiene que ser necesariamente adecuada
para usarla en todos los proyectos. Cada una de las metodologas disponibles es ms adecuada para
tipos especficos de proyectos, basados en consideraciones tcnicas, organizacionales, de proyecto y
de equipo.
Una metodologa de desarrollo de software o metodologa de desarrollo de sistemas en ingeniera
de software es un marco de trabajo que se usa para estructurar, planificar y controlar el proceso de
desarrollo de un sistema de informacin.
Una filosofa de desarrollo de software, con el enfoque o enfoques del proceso de desarrollo
de software.
Mltiples herramientas, modelos y mtodos para ayudar en el proceso de desarrollo de
software.
Estos marcos de trabajo estn con frecuencia vinculados a algunos tipos de organizaciones, que se
encargan del desarrollo, soporte de uso y promocin de la metodologa. La metodologa con frecuencia
se documenta de alguna manera formal.
El software es ahora la clave del xito de muchas empresas y negocios, ya que sin l sera casi
imposible el mantenimiento y crecimiento de los mismos. Lo que diferencia una compaa de otra es
la suficiencia, exactitud y oportunidad de la informacin dada por el software.
El desarrollo de software se ha convertido en una industria con crecimiento vertical en los ltimos
aos. Hace un par de dcadas se sostena la teora de que los pases que posean los mejores recursos
naturales estaban destinados a ser los ms ricos y poderosos del mundo. Indudablemente los recursos
naturales tienen un papel importante en la economa de los pases, sin embargo poco a poco se fue
acuando una nueva ideologa que se sintetiza en lo siguiente: El que posee la informacin y el
conocimiento y hace mejor uso de l, es el que tiene el poder.
13 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Falta de productividad.
La calidad del software es a veces inaceptable.
Estos problemas al final crean insatisfaccin y falta de confianza de los clientes. Los problemas
anteriores son slo manifestacin de otras dificultades:
El software es un elemento del sistema que es lgico. Por tanto, el software tiene caractersticas
considerablemente distintas al hardware:
14 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
2.2.5. CLASIFICACION
15 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Software de aplicacin: son los programas diseados para o por los usuarios para facilitar la
realizacin de tareas especficas en la computadora, como pueden ser las aplicaciones ofimticas u
otros tipos de software especializados. Incluye entre muchos otros:
Aplicaciones para Control de sistemas y automatizacin industrial
Aplicaciones ofimticas (procesador de texto, hoja de clculo, programa de presentacin)
Software educativo
Software empresarial
Bases de datos
Telecomunicaciones (por ejemplo Internet y toda su estructura lgica)
Software mdico
Software de clculo numrico y simblico.
Software de diseo asistido (CAD)
Software de control numrico (CAM)
Haciendo una recopilacin de todos los conceptos que se han dado sobre la Ingeniera de software,
la podemos definir como la disciplina o rea de la informtica, que hace uso razonable de los principios
de ingeniera con el objetivo de obtener soluciones informticas econmicamente factible y que se
adapte a las necesidades de las empresas reales, tomando en cuenta los procesos de produccin y
mantenimiento de software que son desarrollados y modificados en el tiempo y con los costos
estimados.
Esta ingeniera trata con reas muy diversas de la informtica y de las Ciencias de la Computacin,
tales como construccin de compiladores, Sistemas Operativos, o desarrollos Intranet/Internet,
abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de Sistema de Informacin
y aplicables a infinidad de reas (negocios, investigacin cientfica, medicina, produccin, logstica,
banca, etc.).
16 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
En conclusin podemos decir que los cuatro autores anteriores, de manera diferente describen en
si el principal objetivo de la ingeniera de software, la cual es el establecimiento y puesta en prctica
de los principios y metodologas que nos lleven a un desarrollo eficiente de software en todas las
etapas desde sus inicios hasta su implementacin y mantenimiento.
17 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Este enfoque nace como respuesta a los problemas que puedan ocasionar las metodologas
tradicionales y se basa en dos aspectos fundamentales, retrasar las decisiones y la planificacin
adaptativa. Basan su fundamento en la adaptabilidad de los procesos de desarrollo.
Un modelo de desarrollo gil, generalmente es un proceso Incremental (entregas frecuentes con
ciclos rpidos), tambin Cooperativo (clientes y desarrolladores trabajan constantemente con una
comunicacin muy fina y constante), Sencillo (el mtodo es fcil de aprender y modificar para el
equipo) y finalmente Adaptativo (capaz de permitir cambios de ltimo momento). Las metodologas
giles proporcionan una serie de pautas y principios junto a tcnicas pragmticas que hacen que la
entrega del proyecto sea menos complicada y ms satisfactoria tanto para los clientes como para los
equipos de trabajo, evitando de esta manera los caminos burocrticos de las metodologas
tradicionales, generando poca documentacin y no haciendo uso de mtodos formales.
Estas metodologas ponen de relevancia que la capacidad de respuesta a un cambio es ms
importante que el seguimiento estricto de un plan.
En las metodologas tradicionales el principal problema es que nunca se logra planificar bien el
esfuerzo requerido para seguir la metodologa. Pero entonces, si logramos definir mtricas que apoyen
la estimacin de las actividades de desarrollo, muchas prcticas de metodologas tradicionales podran
ser apropiadas. El no poder predecir siempre los resultados de cada proceso no significa que estemos
frente a una disciplina de azar. Lo que significa es que estamos frente a la necesidad de adaptacin de
los procesos de desarrollo que son llevados por parte de los equipos que desarrollan software.
Tener metodologas diferentes para aplicar de acuerdo con el proyecto que se desarrolle resulta
una idea interesante. Estas metodologas pueden involucrar prcticas tanto de metodologas giles
como de metodologas tradicionales. De esta manera podramos tener una metodologa por cada
proyecto, la problemtica sera definir cada una de las prcticas, y en el momento preciso definir
parmetros para saber cul usar.
Es importante tener en cuenta que el uso de un mtodo gil no vale para cualquier proyecto. Sin
embargo, una de las principales ventajas de los mtodos giles es su peso inicialmente ligero y por eso
las personas que no estn acostumbradas a seguir procesos encuentran estas metodologas bastante
agradables.
18 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
En la tabla que se muestra a continuacin aparece una comparativa entre estos dos grupos de
metodologas.
________________
Tabla N 1 Extrada de [1]
19 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
La ingeniera de software es reconocida como una disciplina legtima, digna de tener una
investigacin seria, un estudio cuidadoso y generando una gran controversia. En la industria el
ingeniero del software ha sustituido al programador como ttulo de trabajo preferente. Los modelos
de procesos de software, mtodos de ingeniera de software y herramientas se han adoptado con xito
en el amplio espectro de las aplicaciones industriales. Los gestores y usuarios reconocen la necesidad
de un enfoque ms disciplinado del software.
Los paradigmas relacionados con la programacin de alto nivel se agrupan en tres categoras de
acuerdo con la solucin que aportan para resolver el problema:
Paradigma: El concepto de paradigma se utiliza en la vida cotidiana como sinnimo de ejemplo o para hacer referencia a
algo que se toma como modelo.
20 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
3. INGENIERIA DE SOFTWARE
3.1. INTRODUCCION
En este captulo se desean presentar los fundamentos en que se basa el software, los mtodos, las
herramientas y los procedimientos que provee la ingeniera de software a fin de considerarlos para el
desarrollo de los programas en general. Se describen y analizan las etapas del proceso de la ingeniera
del software, desde la recopilacin de los requerimientos hasta la implementacin y posterior
mantenimiento.
Uno de los problemas ms importantes con los que se enfrentan los ingenieros en software y los
programadores en el momento de desarrollar un software de aplicacin, es la falta de marcos tericos
comunes que puedan ser usados por todas las personas que participan en el desarrollo del proyecto
informtico.
"La ingeniera del software surge a partir de las ingenieras de sistemas y de hardware, y considera
tres elementos claves: que son los mtodos, las herramientas y los procedimientos que facilitan el
control del proceso de desarrollo de software y brinda a los desarrolladores las bases de la calidad de
una forma productiva" (Pressman, 1993).
La ingeniera de software est compuesta por una serie de modelos que abarcan los mtodos, las
herramientas y los procedimientos. Estos modelos se denominan frecuentemente paradigmas de la
ingeniera del software y la eleccin de un paradigma se realiza bsicamente de acuerdo a la naturaleza
del proyecto y de la aplicacin, los controles y las entregas a realizar.
Para la construccin de un sistema de software, el proceso puede describirse sintticamente
como: la obtencin de los requisitos del software, el diseo del sistema de software (diseo preliminar
y diseo detallado), la implementacin, las pruebas, la instalacin, el mantenimiento y la ampliacin o
actualizacin del sistema.
El proceso de construccin est formado por etapas que son: la obtencin de los requisitos, el
diseo del sistema, la codificacin y las pruebas del sistema. Desde la perspectiva del producto, se
parte de una necesidad, se especifican los requisitos, se obtiene el diseo del mismo, el cdigo
respectivo y por ltimo el sistema de software. Algunos autores sostienen que el nombre ciclo de vida
ha sido relegado en los ltimos aos, utilizando en su lugar proceso de software, cambiando la
perspectiva de producto a proceso.
El software o producto, en su desarrollo pasa por una serie de etapas que se denominan ciclo de
vida, siendo necesario, definir en todas las etapas del ciclo de vida del producto, los procesos, las
actividades y las tareas a desarrollar.
Un ciclo de vida establece el orden de las etapas del proceso de software y los criterios a tener en
cuenta para poder pasar de una etapa a la siguiente. El tema del ciclo de vida lo han tratado algunas
organizaciones profesionales y organismos internacionales como la IEEE (Institute of Electrical and
electronics Engineers) y la ISO/IEC (International Standards Organization/International
Electrochemical Commission), que han publicado normas tituladas Standard for Developing Software
Life Cycle Proccesses (Estndar IEEE para el desarrollo de procesos del ciclo de vida del software)
(IEEE, 1991) y Software life-cycle process (Proceso de ciclo de vida del software) (ISO, 1994).
21 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
3.2. OBJETIVOS
Hoy en da, los productos de software se construyen con un nivel de urgencia que no se vea en
aos anteriores. La prioridad ms alta de las compaas es reducir el tiempo de salida al mercado, que
es la base del desarrollo rpido.
La ingeniera de software es percibida por algunos como demasiado formal, que consume
demasiado tiempo y demasiado estructurada para la flexibilidad necesaria durante el desarrollo de
hoy en da. Las personas que hacen estas crticas exponen que no se pueden permitir la formalidad de
un enfoque de ingeniera para construir software porque necesitan desarrollar productos de forma
rpida. Las personas que lanzan tales objeciones ven la ingeniera como una disciplina esttica y
piensan que no se puede adaptar a las necesidades cambiantes del negocio y la industria. La verdad
es, sin embargo, que la ingeniera del software es adaptativa y por lo tanto, relevante para cualquiera
que construya un producto software.
La ingeniera del software es adaptativa y no una metodologa rgida. Es una filosofa que puede
ser adaptada y aplicada a todas las actividades y dominios de aplicacin del desarrollo de software.
La ingeniera del software proporciona una amplia coleccin de opciones que los profesionales
pueden elegir para construir productos de alta calidad. Sin embargo, no hay un enfoque de ingeniera
individual o un conjunto de procesos, mtodos o herramientas de ingeniera del software para
construir un producto software.
22 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
El enfoque de ingeniera del software, incluyendo los procesos, mtodos y herramientas puede y
debera ser adaptada al producto, la gente que lo construye y el entorno del negocio.
Todo este conjunto de ideas y opiniones llevaron a lo que hoy en da son las metodologas giles.
Entre los principios ms destacados de la ingeniera del software, podemos sealar los siguientes:
23 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
El ciclo de vida de un proyecto de software est dividido en varias etapas. Cada una comprende un
cierto porcentaje de esfuerzo en donde conjuntamente conforman lo que se denomina el proyecto en
s.
Cada etapa va a requerir de una porcin de esfuerzo distinta a las dems las cuales son detalladas
a continuacin:
Como se puede ver en la Figura N 2 el mantenimiento est constituido por todas las actividades
posteriores a la liberacin inicial del producto, las cuales son, el mejoramiento de las capacidades del
producto, adaptacin del producto a nuevos ambientes de cmputo y la depuracin de errores.
Por lo tanto, se puede decir que el mantenimiento de un software se lleva la mayor porcin de la
vida de un sistema, ya que este se va a mantener durante la existencia del sistema hasta que se vuelva
obsoleto.
_____________________
Figura N 2 Extrada de [2]
24 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
3.4.1. INTRODUCCION
Las actividades tcnicas y gerenciales son igualmente importantes para el xito de un proyecto de
programacin. Las actividades de la administracin de un proyecto comprenden los mtodos para
organizar y seguir el curso del proyecto; estimacin de costos, polticas de asignacin de recursos,
control de presupuesto, determinacin de avances, ajustes al calendario de trabajo, procedimientos
de control de calidad, comunicacin con el cliente, etc.
25 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
La calidad, la capacidad, los costos y los tiempos de realizacin son magnitudes que hay que
gestionar a los largo de un proyecto. El grado en el que estos cuatro factores pueden controlarse
depende de la naturaleza del proyecto y de quien o quienes los administra.
26 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Programar el proceso (organigramas en los que se fijan los tiempos de ejecucin de cada
actividad).
Programar que actividades deben realizarse y en qu tiempo.
El ingrediente principal requerido para producir software de alta calidad es la gente. Para esto se
cuenta con las actitudes de los ingenieros y tambin con la coordinacin en el tiempo para realizar el
proyecto. Esto requiere una combinacin de profesionalidad, trabajo en equipo y liderazgo.
27 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
1. Se selecciona un lder
Asegura que se activen todos los aspectos del proyecto.
Resuelve las diferencias.
Propone las primeras tentativas.
Busca que el equipo lo acepte.
3.5. RECURSOS
Son todas aquellas personas que intervienen y participan activamente en el ciclo de vida del
desarrollo del software desde cualquier instancia del proyecto. El nmero de personas requerido para
un proyecto de software slo puede ser determinado despus de realizar una estimacin del esfuerzo
de cada etapa implicada en el mismo (Analistas, Desarrolladores, PM, Lder tcnico, Arquitectos, etc.).
Son aquellos componentes de un software que son usados en otras aplicaciones de la misma
ndole, ya sea para reducir costos o tiempo (IDE, API, Herramientas de gestin, etc.).
Es el entorno de las aplicaciones (hardware) el cual proporciona el medio fsico para desarrollar las
aplicaciones (software), esto hace que este recurso es indispensable.
28 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
El ciclo de vida de un proyecto de sistema est dividido en varias etapas. Cada etapa describe las
actividades que hay que realizar para obtener un conjunto concreto de productos de desarrollo del
software, las cuales se nombran a continuacin:
En esta primera etapa se realiza una recopilacin y/o encuesta con el cliente, la cual nos permite
obtener una visin de alto nivel sobre el proyecto, poniendo nfasis en la descripcin del problema
desde el punto de vista de los clientes y desarrolladores. Tambin se considera la posibilidad de una
planificacin de los recursos sobre una escala de tiempos.
3.6.2. ANALISIS
El propsito principal de esta etapa es conseguir una comprensin ms precisa de los requisitos y
una descripcin de los mismos que sea fcil de mantener y que nos ayude a estructurar el sistema
completo, incluyendo la arquitectura.
El anlisis de requerimientos facilita al ingeniero de sistemas especificar la funcin y
comportamiento de los programas, indicar la interfaz con otros elementos del sistema y establecer las
ligaduras de diseo que debe cumplir el programa.
Tambin permite al ingeniero refinar la asignacin de software y representar el dominio de la
informacin que ser tratada por el programa. As como tambin brinda al diseador la representacin
de la informacin y las funciones que pueden ser traducidas en datos, arquitectura y diseo
procedimental.
Finalmente, la especificacin de requerimientos suministra al tcnico y al cliente, los medios para
valorar la calidad de los programas, una vez que se haya construido.
En la medida que logremos una clara comprensin de lo anterior obtendremos una arquitectura
estable y slida que nos facilite una comprensin en profundidad de los requisitos.
3.6.3. LIMITACIONES
En esta etapa se va a detallar la frontera del proyecto, es decir, cul es el alcance de nuestro
sistema.
Todo cambio que est fuera de las limitaciones se deber tratar como un cambio de alcance en la
etapa de mantenimiento.
29 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
3.6.4. ESPECIFICACIONES
3.6.6. PROGRAMACION
Convertir un diseo a cdigo puede ser interpretada como la parte ms obvia e importante del
trabajo de ingeniera de software, pero no necesariamente es la que demanda mayor trabajo y ni la
ms complicada. La complejidad y la duracin de esta etapa est ntimamente relacionada al o a los
lenguajes de programacin utilizados, as tambin como a la calidad del diseo previamente realizado.
La prueba del software es un elemento crtico para la garanta de la calidad del software. El objetivo
de la etapa de pruebas es garantizar la calidad del producto desarrollado.
30 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
La prueba no es una actividad sencilla, no es una etapa del proyecto en la cual se asegura la calidad,
sino que la prueba debe ocurrir durante todo el ciclo de vida. Podemos probar la funcionalidad de los
primeros prototipos, la estabilidad, cobertura y rendimiento de la arquitectura, probar el producto
final, etc.
La prueba es un proceso que se enfoca sobre la lgica interna del software y las funciones externas.
La prueba es un proceso de ejecucin de un programa con la intencin de descubrir un error que
probablemente no fue previsto en las fases inciales del desarrollo del software.
Tipos de pruebas:
Prueba del sistema: verifica que cada elemento encaja de forma adecuada y que se
alcanza la funcionalidad y el rendimiento del sistema total. La prueba del sistema est
constituida por una serie de pruebas diferentes cuyo propsito primordial es ejercitar
profundamente el sistema basado en computadora. Algunas de estas pruebas son:
31 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Pruebas de regresin: Las pruebas de regresin son una estrategia de prueba en la cual las
pruebas que se han ejecutado anteriormente se vuelven a realizar en la nueva versin
modificada, para asegurar la calidad despus de aadir la nueva funcionalidad. El propsito
de estas pruebas es asegurar que los defectos identificados en la ejecucin anterior de la
prueba se hayan corregido, que los cambios realizados no introduzcan nuevos o viejos
defectos.
La prueba de regresin puede implicar la re-ejecucin de cualquier tipo de prueba.
Normalmente, las pruebas de regresin se llevan a cabo durante cada iteracin,
ejecutando otra vez las pruebas de la iteracin anterior.
3.6.8. IMPLEMENTACION
La instalacin puede realizarse segn cuatro mtodos: Directo, paralelo, piloto y en fases.
32 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Mtodo paralelo: Los sistemas de informacin antiguo y nuevo operan juntos hasta que el
nuevo demuestra ser confiable. Este mtodo es de bajo riesgo. Si el sistema nuevo falla, la
organizacin puede mantener sus actividades con el sistema antiguo. Esto puede representar
un alto costo al requerir contar con personal y equipo para laborar con los dos sistemas, por
lo que este mtodo se reserva especficamente para casos en los que el costo de una falla sera
muy considerable.
Mtodo piloto: Pone a prueba el nuevo sistema slo en una parte de la organizacin. Al
comprobar su efectividad, se implementa en el resto de la organizacin. El mtodo es menos
costoso que el paralelo, aunque ms riesgoso. En este caso el riesgo es controlable al limitarse
a ciertas reas, sin afectar toda la empresa.
Mtodo en fases: La implementacin del sistema se divide en partes o fases, que se van
realizando a lo largo de un periodo de tiempo, sucesivamente. Una vez iniciada la primera fase,
la segunda no se inicia hasta que la primera se ha completado con xito. As se contina hasta
que se finaliza con la ltima fase. Es costoso porque se hace ms lenta la implementacin, pero
sin duda tiene el menor riesgo.
3.6.9. DOCUMENTACION
Documentacin Interna: Son los comentarios o mensajes que se aaden al cdigo fuente para
hacer ms claro el entendimiento de los procesos que lo conforman, incluyendo las
precondiciones y las pos condiciones de cada funcin.
33 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
o Diccionario de Datos
o Cdigo Fuente (programa)
Manual de Usuario: Describe paso a paso la manera cmo funciona el programa, con el fin de
que el usuario lo pueda manejar para que obtenga el resultado deseado.
3.6.10. MANTENIMIENTO
Bugs: Defecto de software, es el resultado de un fallo o deficiencia durante el proceso de creacin de programas de software.
34 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
4. METODOLOGIAS CLASICAS
4.1. INTRODUCCION
En febrero de 2001, tras una reunin celebrada en Utah-EEUU, nace el trmino gil aplicado al
desarrollo de software. En esta reunin participan un grupo de 17 expertos de la industria del software,
incluyendo algunos de los creadores o impulsores de metodologas de software. Su objetivo fue
esbozar los valores y principios que deberan permitir a los equipos desarrollar software rpidamente
y respondiendo a los cambios que puedan surgir a lo largo del proyecto.
Se pretenda ofrecer una alternativa a los procesos de desarrollo de software tradicionales,
caracterizados por ser rgidos y dirigidos por la documentacin que se genera en cada una de las
actividades desarrolladas.
Tras esta reunin se cre The Agile Alliance, una organizacin, sin nimo de lucro, dedicada a
promover los conceptos relacionados con el desarrollo gil de software y ayudar a las organizaciones
para que adopten dichos conceptos. El punto de partida es fue el manifiesto gil, un documento que
resume la filosofa gil.
Se encarga de valorar al individuo y las iteraciones del equipo ms que a las herramientas o los
procesos utilizados.
Se hace mucho ms importante crear un producto software que funcione, que escribir mucha
documentacin.
El cliente est en todo momento colaborando en el proyecto.
Es ms importante la capacidad de respuesta ante un cambio realizado que el seguimiento
estricto de un plan.
Ventajas:
La primera y ms importante, es que estas metodologas ofrecen una rpida respuesta a
cambios de requisitos a lo largo del desarrollo del proyecto gracias a su proceso iterativo, es
tan importante realizar una buena recolecta de requisitos, como despus poder modificarlos
evitando grandes prdidas en cuanto a costes, motivacin, tiempo.
El cliente, si quiere colaborar, puede observar cmo va avanzando el proyecto, y por supuesto,
opinar sobre su evolucin gracias a las numerosas reuniones que realiza el equipo con el
cliente. Esto le da tranquilidad.
Uniendo las dos anteriores, se puede deducir que al utilizar estas metodologas, los cambios
que quiera realizar el cliente van a tener un menor impacto, ya que se va a entregar en un
35 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
pequeo intervalo de tiempo un pequeo trozo del proyecto al cliente, y si ste quiere
cambiarlo, solo se habr perdido unas semanas de trabajo. Con las metodologas tradicionales
las entregas al cliente se realizaban tras la realizacin de una gran parte del proyecto, eso
quiere decir que el equipo ha estado trabajando meses para que luego un mnimo cambio que
quiera realizar el cliente, conlleve la prdida de todo ese trabajo.
Importancia de la simplicidad al eliminar trabajo innecesario
Los equipos que trabajan para crear productos regulados por estndares de la industria, deben
demostrar el cumplimiento de esas normas. Estos equipos suelen adoptar importantes sobrecargas de
trabajo para asegurarse de que cumplen con los estrictos mandatos de cdigo. Las metodologas giles
pueden ayudarles a cumplir los estndares de la industria con menos sobrecarga utilizando iteraciones
ms cortas y empaquetadas. El beneficio neto es un proceso que:
Calidad mejorada
Las prcticas de desarrollo gil proporcionan la funcionalidad suficiente como para satisfacer las
expectativas de los accionistas con una alta calidad. Piensa en lo que significa ofrecer lo suficiente.
Eso es, proporcionar la mnima funcionalidad con la mxima calidad. La mnima funcionalidad no
implica necesariamente una pobre funcionalidad, implica lo suficiente como para conseguir que el
trabajo se realice. Los accionistas suelen pensar que saben lo que quieren cuando especifican altos
niveles de requerimientos para un producto TI o de software. Sin embargo, la mayora de las veces,
cuando ven el producto final, ste no resuelve el problema. Simplemente, no se han imaginado de
forma precisa el mismo, o el problema ha cambiado o, incluso, la tecnologa no era tan buena como
pareca. Tambin puede ser que el producto no funcione realmente del modo en que las partes
interesadas tenan intencin, incluso aunque pensaran que haban descrito los requerimientos de
manera clara. Desarrollar iteraciones en poco tiempo y demostrar a los accionistas los productos
pronto y con frecuencia, permite tanto a los accionistas como a los equipos de desarrollo ponerse de
acuerdo y coincidir en que el producto cumple con cada una de sus necesidades.
36 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Cuando los equipos de desarrollo no cumplen con sus fechas de lanzamiento, a menudo se debe a
muchas razones completamente justificables. Puede ser que el equipo no hubiera entendido bien lo
difcil que sera utilizar la nueva tecnologa; los requerimientos podan no estar del todo claros o los
clientes cambiaron de opinin cuando el trabajo estaba prcticamente finalizado. En cualquier caso,
los negocios demandan productos que cumplan con las fechas de entrega, de modo que los planes de
negocio directamente relacionados con ellos puedan cumplirse. Hay muchas formas en las que las
metodologas giles pueden ayudar a que los proyectos TI cumplan con las fechas de lanzamiento
previstas.
o Dar prioridad a los riegos. Las prcticas giles priorizan los aspectos de desarrollo de
alto riesgo permitiendo as una reduccin de los riesgos iniciales.
o Evaluacin de riesgos en paralelo. Para reas de riesgo donde debera haber mltiples
soluciones y el equipo no se pone de acuerdo a la hora de tomar el camino ms
adecuado, se debe tener en cuenta la posibilidad de optar por el desarrollo multi-set.
Esto requiere que diferentes equipos trabajen en paralelo resolviendo el mismo
problema con diferentes soluciones. La mayora de los equipos no considerarn ni tan
siquiera esta forma de trabajar, porque estn convencidos de que el tiempo y el coste
requeridos para hacer una evaluacin paralela son demasiado grandes. De hecho, el
desarrollo paralelo de alternativas es probable que traiga consigo las decisiones clave
a seguir.
Los equipos giles son ms productivos que aquellos que utilizan mtodos tradicionales a lo largo
de todo el ciclo de desarrollo. El desarrollo tradicional suele mostrar un patrn de trabajo parecido a
un palo de hockey, empezando con un ciclo de diseo de abajo arriba, movindose hasta una fase de
prototipo para pasar luego a un ciclo de desarrollo largo, seguido por otro ciclo totalmente
impredecible en el que se integran las piezas para pasar, por ltimo, a la fase de prueba final. A medida
que el proyecto progresa, los equipos tienen que trabajar juntos de manera ms coherente, confiando
en que todas las piezas trabajen juntas tal y como esperan. Pero lo cierto es que esto raramente ocurre,
de modo que la interaccin entre los equipos aumenta a medida que lo hacen los problemas de
integracin. Por ltimo, la fase de pruebas lleva todo esto al lmite. Trabajando juntos como un nico
equipo en fases verticales del producto desde el principio del ciclo de produccin, se evita el ciclo de
productividad tradicional de palo de hockey. Los equipos giles tienden a ser muy productivos desde
la primera iteracin hasta su lanzamiento y su ritmo tiene que ser gestionado de modo que no se
produzca agotamiento. Los equipos giles que mantienen este cdigo de trabajo con cada iteracin,
permiten realizar pruebas de rendimiento y sistemas desde el principio, pudiendo empezar en las
primeras iteraciones. De este modo, defectos crticos como problemas de integracin se descubren
37 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
antes, la calidad general del producto es mayor y el equipo funciona de manera ms productiva
durante todo el ciclo de desarrollo.
Adoptar las tcnicas giles de manera satisfactoria precisa un importante soporte de herramientas.
La mayora de los equipos invierten fuertemente en buenas herramientas de software y necesitan
elevar esa inversin y reducir la cantidad de cambios cuando empiezan a adoptar las metodologas
giles. La inversin ms crtica es una buena planificacin y una herramienta de gestin del trabajo que
proporcione una cartera de pedidos del equipo visible y que asocie el trabajo con cada elemento de
trabajo en cartera. Idealmente, esa herramienta de planificacin se integra con otras herramientas de
desarrollo, lo que permite a los equipos mantener la trazabilidad de la cartera de pedidos en otros
aspectos, incluyendo:
Las herramientas de Rational trabajan muy bien juntas y con otros productos para ayudar a
entregar con xito proyectos giles. IBM Rational Team Concert es el componente central de
colaboracin y flujo de trabajo de la solucin IBM Rational para ingeniera de software y sistemas.
Proporciona una interfaz Open Services for Lifecycle Collaboration (OSLC) que permite a las
herramientas capacitadas OSLC integrarse sin problemas. Rational Team Concert proporciona al
equipo planificacin gil, visible y probada. De hecho, su adopcin para simplemente ese propsito ha
sido viral en IBM Software Group. Rational Team Concert proporciona gestin de elementos,
planificacin de equipos asociada a cargas de trabajo y visibilidad de proyectos, todos ellos, elementos
crticos en los proyectos giles. Los elementos de trabajo en Rational Team Concert son muy flexibles
en su uso y pueden asociarse con lanzamientos, equipos y dems.
Desventajas:
Falta de documentacin del diseo. Al no haber documentacin es el cdigo (junto con sus
comentarios) lo que se toma como documentacin.
Problemas derivados de la comunicacin oral. No hace falta decir que algo que est escrito
no se puede borrar, en cambio, algo dicho es muy fcil crear ambigedad.
Fuerte dependencia de las personas.
Falta de reusabilidad derivada de la falta de documentacin
Restricciones en cuanto a tamao de los proyectos
Problemas derivados del fracaso de los proyectos giles. Si un proyecto gil fracasa no hay
documentacin o hay muy poca; lo mismo ocurre con el diseo. La comprensin del sistema
se queda en las mentes de los desarrolladores.
38 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
39 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Ingeniera y Anlisis del Sistema: debido que el software es siempre parte de un sistema mayor,
el trabajo comienza estableciendo los requisitos de todos los elementos del sistema y luego asignando
algn subconjunto de estos requisitos al software.
Anlisis de los requisitos del software: el proceso de recopilacin de los requisitos se centra e
intensifica especialmente en el software. El ingeniero de software (Analistas) debe comprender el
mbito de la informacin del software, as como la funcin, el rendimiento y las interfaces requeridas.
Diseo: el diseo del software se enfoca en cuatro atributos distintos del programa: la estructura
de los datos, la arquitectura del software, el detalle procedimental y la caracterizacin de la interfaz.
El proceso de diseo traduce los requisitos en una representacin del software con la calidad requerida
antes de que comience la codificacin.
Codificacin: el diseo debe traducirse en una forma legible para la mquina. El paso de
codificacin realiza esta tarea. Si el diseo se realiza de una manera detallada la codificacin puede
realizarse mecnicamente.
Prueba: una vez que se ha generado el cdigo comienza la prueba del programa. La prueba se
centra en la lgica interna del software, y en las funciones externas, realizando pruebas que aseguren
que la entrada definida produce los resultados que realmente se requieren.
Mantenimiento: el software sufrir cambios despus de que se entrega al cliente. Los cambios
ocurrirn debido a se han encontrado errores, a que el software deba adaptarse a cambios del entorno
externo (sistema operativo o dispositivos perifricos), o debido a que el cliente requiera ampliaciones
funcionales o del rendimiento.
Desventajas:
Los proyectos reales raramente siguen el flujo secuencial que propone el modelo, siempre hay
iteraciones y se crean problemas en la aplicacin del paradigma.
El cliente debe tener paciencia. Hasta llegar a las etapas finales del proyecto, no estar
disponible una versin operativa del programa. Un error importante no detectado hasta que
el programa est funcionando puede ser desastroso.
40 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
4.3.2. PROTOTYPING
Ventajas:
41 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Desventajas:
______________________
Figura N 4 Extrada de [4]
42 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
4.3.3. SPIRAL
Toma las ventajas del modelo de desarrollo en cascada y el de prototipos aadindole el concepto
de anlisis de riesgo.
Planificacin: en la que se recolectan los requisitos iniciales o nuevos requisitos a aadir en esta
iteracin.
43 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
El esquema del ciclo de vida para estos casos puede representarse por un bucle en espiral, donde
los cuadrantes son, habitualmente, fases de especificacin, diseo, realizacin y evaluacin (o
conceptos y trminos anlogos).
En cada fase el producto gana madurez (aproximacin al final deseado) hasta que en una
iteracin se logre el objetivo deseado y este sea aprobado se termina las iteraciones.
4.3.4. INCREMENTAL
Permite construir el proyecto en etapas incrementales en donde cada etapa agrega funcionalidad.
Estas etapas, consisten en requerimientos, diseo, codificacin, pruebas y entrega. Permite
entregar al cliente un producto ms rpido en comparacin del modelo en cascada.
Reduce los riegos ya que provee visibilidad sobre el progreso de las nuevas versiones.
Provee retroalimentacin a travs de la funcionalidad mostrada.
Permite atacar los mayores riesgos desde el inicio.
Se pueden hacer implementaciones parciales si se cuenta con la suficiente funcionalidad.
Las pruebas y la integracin son constantes.
El progreso se puede medir en periodo cortos de tiempo.
Resulta ms sencillo acomodar cambios al acortar el tamao de los incrementos.
Se puede planear en base a la funcionalidad que se quiere entregar primero.
Por su versatilidad requiere de una planeacin cuidadosa tanto a nivel administrativo como
tcnico.
Ventajas:
44 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Desventaja:
Para apoyar el desarrollo de proyectos por medio de este modelo se han creado Framework
(entornos de trabajo), de los cuales los dos ms famosos son el Rational Unified Process (RUP) y el
Dynamic Systems Development Method.
El desarrollo incremental e iterativo es tambin una parte esencial de un tipo de programacin
conocido como Extreme Programming y los dems frameworks de desarrollo rpido de software.
______________________
Figura N 6 Extrada de [6]
45 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
4.3.5. RAD
La metodologa de desarrollo conocida como diseo rpido de aplicaciones RAD (rapid application
development) ha tomado gran auge debido a la necesidad que tienen las instituciones de crear
aplicaciones funcionales en un plazo de tiempo corto. RAD es un ciclo de desarrollo diseado para
crear aplicaciones de computadoras de alta calidad.
El mtodo comprende el desarrollo interactivo, la construccin de prototipos y el uso de
utilidades CASE (Computer Aided Software Engineering). Tradicionalmente, el desarrollo rpido de
aplicaciones tiende a englobar tambin la usabilidad, utilidad y la rapidez de ejecucin.
Hoy en da se suele utilizar para referirnos al desarrollo rpido de interfaces grficas de
usuario tales como Glade, o entornos de desarrollo integrado completos. Algunas de las plataformas
ms conocidas son Visual Studio, Lazarus, Gambas, Delphi, Foxpro, Anjuta, Game Maker, Velneo
o Clarion. En el rea de la autora multimedia, software como Neosoft Neoboo y MediaChance
Multimedia Builder proveen plataformas de desarrollo rpido de aplicaciones, dentro de ciertos
lmites.
Modelado de proceso: los objetos de datos definidos en la fase de modelado de datos quedan
transformados para lograr el flujo de informacin necesario para implementar una funcin de
gestin. Las descripciones del proceso se crean para aadir, modificar, suprimir, o recuperar
un objeto de datos. Es la comunicacin entre los objetos.
46 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Caractersticas de RAD:
Equipos Hbridos:
Herramientas Especializadas:
Desarrollo "visual"
Creacin de prototipos falsos (simulacin pura)
Creacin de prototipos funcionales
Mltiples lenguajes
Calendario grupal
Herramientas colaborativas y de trabajo en equipo
Componentes reusables
Interfaces estndares (API)
47 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Timeboxing:
Las funciones secundarias son eliminadas como sea necesario para cumplir con el calendario.
Ventajas:
Desventajas:
48 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
_____________________
Figura N 7 Extrada de [7]
49 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
5. METODOLOGIAS AGILES
5.1. INTRODUCCION
En las dos ltimas dcadas las notaciones de modelado y posteriormente las herramientas
pretendieron ser la clave para el xito en el desarrollo de software, no obstante, las expectativas no
fueron satisfechas del todo. Esto se debe en gran parte a que otro importante elemento, la
metodologa de desarrollo, haba sido postergado. De nada sirven buenas notaciones y herramientas
si no se proveen directivas eficientes para su aplicacin.
Hasta hace poco el proceso de desarrollo llevaba asociada un marcado nfasis en el control del
proceso mediante una rigurosa definicin de roles, actividades y artefactos, incluyendo modelado y
documentacin detallada. Este esquema tradicional para abordar el desarrollo de software ha
demostrado ser efectivo y necesario en proyectos de gran tamao donde por lo general se exige un
alto grado de ceremonia en el proceso. Sin embargo, este enfoque no resulta ser el ms adecuado y
eficiente para muchos de los proyectos actuales donde el entorno del sistema es muy cambiante, y en
donde se exige reducir drsticamente los tiempos de desarrollo pero manteniendo una alta calidad.
Ante las dificultades para utilizar metodologas tradicionales con estas restricciones de tiempo y
flexibilidad, muchos equipos de desarrollo se resignan a prescindir del buen hacer de la ingeniera del
software, asumiendo el riesgo que esto conlleva. Esto puede dar la impresin de que se van a hacer
mal las cosas o de dejarlo a medias pero lo cierto es que ser giles" no significa renunciar a
formalismos ni dejar de ser estrictos, rigurosos y metdicos.
En esta profesin y sobre todo en el rea del desarrollo de software, la teora nos orienta a ser
extremadamente estrictos al momento de hacer el anlisis y documentacin de nuestro sistema, pero
en la prctica actual no se puede perder tanto tiempo realizando estas tareas porque cuando se finaliza
el sistema, ste ya ha cambiado y el cliente se ha aburrido. Ser abducido y caer en esta nueva dinmica,
es muy fcil, cuando la presin nos cae encima y los plazos de entrega se acercan y cada vez se acortan
ms.
La alta competitividad actual hace que los sistemas de informacin se tengan que desarrollar de
forma rpida para adaptarse a la organizacin. Las prisas hacen que lo primero que se deseche sea un
anlisis exhaustivo y se sustituye por uno superficial o simplemente se elimina. ste es sin duda el gran
error, ya que deseamos tener un sistema desarrollado rpidamente pero con lo que realmente nos
encontramos es con un sistema lleno de errores, inmanejable y que no se puede mantener.
Es difcil cambiar las reglas del mercado mundial, as que lo que se ha pensado es adaptar las
metodologas de especificacin y desarrollo a este entorno cambiante y lleno de presiones, en el que
obtener un resultado rpido, algo que se pueda ver, mostrar y sobre todo utilizar, se ha vuelto crucial
para el xito de las organizaciones. La metodologa necesariamente ha de ser gil, debe tener un ciclo
corto de desarrollo y debe incrementar las funcionalidades en cada iteracin del mismo preservando
las existentes, ayudando al negocio en lugar de darle la espalda.
Es para este entorno para el que han nacido las metodologas giles y como consecuencia se cre
el Manifiesto gil.
50 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
El Manifiesto gil describe, bsicamente, cuales son los principios sobre los que se basan los
mtodos reconocidos como giles.
ste manifiesto sugiere un enfoque orientado a la participacin de los usuarios y clientes, ms que
hacia los procesos y herramientas, trabajando ms en el software y menos en la documentacin,
colaborando ms con los clientes en vez de estar negociando y respondiendo a los cambios
sacrificando el plan de trabajo si es necesario.
En el "Manifiesto gil" se definen los cuatro valores principales por las que se deberan guiar las
metodologas giles.
51 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
son pocos los que con las presiones externas de tiempo y dinero acaban actualizando la
documentacin. Generalmente, cuando se tiene que arreglar un programa porque algo falla o
surge un cambio de alcance, nos concentramos en que funcione ya que es muy posible que
haya usuarios parados y que la empresa o la organizacin est perdiendo dinero, en estos
casos, ni nos paramos a mirar detenidamente la documentacin ni, cuando se acaba de
arreglar, nos ponemos a actualizarla.
En la filosofa gil, lo primordial es evitar estos fallos, centrar nuestro tiempo en
asegurar que el software funciona y que se ha testeado exhaustivamente, e intentar reducir la
creacin de documentos poco tiles, de stos que acaban no mantenindose y ni siquiera
consultndose. La regla no escrita es no producir documentos superfluos, y slo producir
aquellos que sean necesarios de forma inmediata para tomar una decisin importante durante
el proceso de desarrollo. Estos documentos deben ser cortos y centrarse en lo fundamental,
olvidndonos de las ambigedades que no aportan nada a la comprensin del problema. No
obstante, los documentos son soporte de documentacin, permiten la transferencia del
conocimiento, registran informacin histrica, y en muchas cuestiones legales o normativas
son obligatorios, pero se resalta que son menos importantes que los productos que funcionan.
52 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Llegados a este punto, podemos intuir que las formas de hacer las cosas en la ingeniera del
software estn cambiando, adaptndose ms a las personas y a las organizaciones en las que han
de funcionar las aplicaciones.
Las metodologas giles no son la gran solucin a todos los problemas del desarrollo de
aplicaciones, ni tan siquiera se pueden aplicar en todos los casos, pero s que nos aportan otro
punto de vista de cmo se pueden llegar a hacer las cosas, de forma ms rpida, ms adaptable y
sin tener que perder la rigurosidad de las metodologas clsicas.
53 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
5.2. BENEFICIOS
Durante la dcada pasada, las metodologas giles demostraron ser muy beneficiosas ayudando a
los equipos de desarrollo de software a la hora de entregar en fecha software de alta calidad que
compensara las necesidades de los clientes. Los equipos de software quieren trabajar con
metodologas giles porque necesitan un proceso que pueda responder de manera eficiente a los
cambios en los productos en desarrollo. Las metodologas giles permiten una mayor flexibilidad que
las metodologas tradicionales de desarrollo, ya que stas se bloquean y ralentizan en los detalles del
proyecto y son menos capaces de ajustarse a las cambiantes necesidades de los clientes, del mercado
y de los desafos imprevistos que plantea la tecnologa y el medio ambiente.
Algunos de los beneficios son los siguientes:
Los equipos que trabajan para crear productos regulados por estndares de la industria, deben
demostrar el cumplimiento de esas normas. Estos equipos suelen adoptar importantes sobrecargas de
trabajo para asegurarse de que cumplen con los estrictos mandatos de cdigo. Las metodologas giles
pueden ayudarles a cumplir los estndares de la industria con menos sobrecarga utilizando iteraciones
ms cortas y empaquetadas. El beneficio neto es un proceso que:
2. Calidad mejorada
Las prcticas de desarrollo gil proporcionan la funcionalidad suficiente como para satisfacer las
expectativas de los clientes con una alta calidad. Eso es, proporcionar la mnima funcionalidad con la
mxima calidad. La mnima funcionalidad no implica necesariamente una pobre funcionalidad, sino
que implica lo suficiente como para conseguir que el trabajo se realice. Los clientes suelen pensar que
saben lo que quieren cuando especifican altos niveles de requerimientos para un producto de
software. Sin embargo, la mayora de las veces, cuando ven el producto final, ste no resuelve el
problema. Simplemente, no se han imaginado de forma precisa el mismo, o el problema ha cambiado
o, incluso, la tecnologa no era tan buena como pareca. Tambin puede ser que el producto no
funcione realmente del modo en que las partes interesadas tenan intencin, incluso aunque pensaran
que haban descrito los requerimientos de manera clara. Desarrollar iteraciones en poco tiempo y
demostrar a los clientes los productos pronto y con frecuencia, permite tanto a los clientes como a los
equipos de desarrollo ponerse de acuerdo y coincidir en que el producto cumple con cada una de sus
necesidades.
54 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Cuando los equipos de desarrollo no cumplen con sus fechas de lanzamiento, a menudo se debe a
muchas razones completamente justificables. Puede ser que el equipo no hubiera entendido bien lo
complejo que sera utilizar la nueva tecnologa, los requerimientos podan no estar del todo claros o
los clientes cambiaron de opinin cuando el trabajo estaba prcticamente finalizado. En cualquier
caso, los negocios demandan productos que cumplan con las fechas de entrega, de modo que los
planes de negocio directamente relacionados con ellos puedan cumplirse. Hay muchas formas en las
que las metodologas giles pueden ayudar a que los proyectos cumplan con las fechas de lanzamiento
previstas.
Dar prioridad a los riegos. Las prcticas giles priorizan los aspectos de desarrollo de alto riesgo
permitiendo as una reduccin de los riesgos iniciales.
Evaluacin de riesgos en paralelo. Para reas de riesgo donde debera haber mltiples soluciones
y el equipo no se pone de acuerdo a la hora de tomar el camino ms adecuado, se debe tener en cuenta
la posibilidad de optar por el desarrollo multi-set. Esto requiere que diferentes equipos trabajen en
paralelo resolviendo el mismo problema con diferentes soluciones. La mayora de los equipos no
considerarn ni tan siquiera esta forma de trabajar, porque estn convencidos de que el tiempo y el
coste requeridos para hacer una evaluacin paralela son demasiado grandes. De hecho, el desarrollo
paralelo de alternativas es probable que traiga consigo las decisiones clave a seguir.
Los equipos giles son ms productivos que aquellos que utilizan mtodos tradicionales a lo largo
de todo el ciclo de desarrollo. El desarrollo tradicional comienza con un ciclo de diseo de abajo arriba,
movindose hasta una fase de prototipo para pasar luego a un ciclo de desarrollo largo, seguido por
otro ciclo totalmente impredecible en el que se integran las piezas para pasar, por ltimo, a la fase de
prueba final. A medida que el proyecto progresa, los equipos tienen que trabajar juntos de manera
ms coherente, confiando en que todas las piezas trabajen juntas tal y como esperan. Pero lo cierto es
que esto raramente ocurre, de modo que la interaccin entre los equipos aumenta a medida que lo
hacen los problemas de integracin. Por ltimo, la fase de pruebas lleva todo esto al lmite. Trabajando
juntos como un nico equipo en fases verticales del producto desde el principio del ciclo de
produccin, se evita el ciclo de productividad tradicional. Los equipos giles tienden a ser muy
productivos desde la primera iteracin hasta su lanzamiento y su ritmo tiene que ser gestionado de
modo que no se produzca agotamiento. Los equipos giles que mantienen este cdigo de trabajo con
cada iteracin, permiten realizar pruebas de rendimiento y sistemas desde el principio, pudiendo
empezar en las primeras iteraciones. De este modo, defectos crticos como problemas de integracin
se descubren antes, la calidad general del producto es mayor y el equipo funciona de manera ms
productiva durante todo el ciclo de desarrollo.
55 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Algunas de las herramientas ms conocidas para la gestin y administracin de proyectos giles son:
De forma temprana el cliente recibe entregables de valor, lo que permite ver los constantes
avances, logrando as, aportar en lo necesario para que el equipo vaya construyendo en la direccin
correcta lo anterior, inmediatamente reduce de forma drstica los errores y la posibilidad de costosas
correcciones, respondiendo a los cambios en requisitos de forma rpida y eficaz. El cliente es una parte
ms del equipo.
7. Equipo motivado
Cuando se realiza un proyecto aplicando alguna de las metodologas agiles, las personas
involucradas en el mismo estn ms motivadas ya que pueden usar su creatividad para resolver
problemas y cuando pueden decidir organizar su trabajo. Esto hace que las personas se sienten ms
satisfechas cuando pueden mostrar los logros que consiguen tomando sus propias decisiones.
56 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
La programacin extrema (XP) puede que marque un antes y un despus en la ingeniera del
software. sta nueva forma de trabajo fue creada por Kent Beck, Ward Cunninghamn y Ron Jeffries a
finales de los noventa. La programacin extrema ha pasado de ser una simple idea para un nico
proyecto a inundar todas las factoras de software. Algunos la definen como un movimiento social de
los analistas del software hacia los hombres y mujeres de negocios, de lo que debera ser el desarrollo
de soluciones en contraposicin a los legalismos de los contratos de desarrollo.
Es el ms destacado de los procesos giles de desarrollo de software. Al igual que stos, la
programacin extrema se diferencia de las metodologas tradicionales principalmente en que pone
ms nfasis en la adaptabilidad que en la previsibilidad. Los defensores de XP consideran que los
cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable del
desarrollo de proyectos. Creen que ser capaz de adaptarse a los cambios de requisitos en cualquier
punto de la vida del proyecto es una aproximacin mejor y ms realista que intentar definir todos los
requisitos al comienzo del proyecto e invertir esfuerzos despus en controlar los cambios en los
requisitos.
Es una metodologa gil centrada en potenciar las relaciones interpersonales como clave para el
xito en desarrollo de software, promoviendo el trabajo en equipo, preocupndose por el aprendizaje
de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en realimentacin continua
entre el cliente y el equipo de desarrollo, comunicacin fluida entre todos los participantes, simplicidad
en las soluciones implementadas y coraje para enfrentar los cambios. XP se define como especialmente
adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo
tcnico.
Para alcanzar el objetivo de software como solucin gil, la metodologa XP se estructura en tres
capas que agrupan las doce prcticas bsicas de XP:
57 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Introducir la vertiente de las relaciones sociales dentro de una metodologa es lo que hace de XP
algo ms que una gua de buenas maneras. Convierte a la programacin en algo mucho ms
humanizado, en algo que permite a las personas relacionarse y comunicarse para encontrar soluciones,
sin jerarquas ni enfrentamientos. Los analistas y programadores trabajan en equipo con el cliente final,
todos estn comprometidos con el mismo objetivo, que la aplicacin solvente o mitigue los problemas
que tiene el cliente. La vertiente social es fundamental en otras reas del conocimiento. XP tambin
humaniza a los desarrolladores. Un entorno agradable para el trabajo, que facilite la comunicacin y
los descansos adecuados, forma parte de esta metodologa.
Pero donde XP centra la mayor innovacin es en desmontar la preconcebida idea del coste del
cambio de las metodologas en cascada, es decir, lo que cuesta cambiar alguna funcionalidad de
nuestro aplicativo a medida que vamos avanzando en l. La idea generalizada es que cualquier
modificacin a final del proyecto es exponencialmente ms costosa que al principio del mismo. Si algo
no estaba especificado inicialmente, cuesta mucho introducirlo al final del proyecto.
_____________________
Figura N 8 Extrada de [8]
58 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Lo que XP mantiene es que esta curva ha perdido vigencia y que con una combinacin de buenas
prcticas de programacin y tecnologa es posible lograr que la curva no crezca siempre de forma
exponencial.
XP pretende conseguir una curva de coste del cambio con crecimiento leve, que en un inicio es
ms costosa, pero que a lo largo del proyecto permite tomar decisiones de desarrollo lo ms tarde
posible sin que esa nueva decisin de cambio implique un alto coste en el proyecto.
_______________________
Figura N 9 Extrada de [9]
Figura N 10 Extrada de [10]
59 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
El punto de partida de la metodologa XP son las variables que utiliza para cada proyecto:
De estas cuatro variables, tres podrn ser fijadas por el cliente y/o por el jefe de proyectos, la
cuarta es responsabilidad del equipo de desarrollo y se establecer en funcin de las otras tres.
Obviamente con XP no se establece el valor de todas las variables a la primera de cambio, es un
proceso paulatino en el que cada uno de los responsables (cliente, jefe de proyecto y equipo de
desarrollo) negocian los valores de las variables que tienen asignadas hasta conseguir una ecuacin
equilibrada y que satisfaga a todos.
Distinguir entre los requisitos ms importantes y los que aportan menor valor al negocio, dando
prioridad a los primeros, nos ayudar a conseguir que el proyecto tenga en cada instante tanta
funcionalidad como sea posible. De esta manera, cuando nos acerquemos al plazo de entrega nos
aseguraremos de que lo principal est implementado y que slo quedarn los detalles de los que
podemos prescindir en el caso de necesidad. El objetivo es siempre maximizar el valor de negocio.
Los creadores de esta metodologa quisieron medir su utilidad a travs de cuatro valores, que
representan aquellos aspectos cuyo cumplimiento nos va a garantizar el xito en el proyecto:
comunicacin, simplicidad, realimentacin y coraje.
Comunicacin: debe ser fluida entre todos los participantes en el proyecto. El entorno tiene
que favorecer la comunicacin espontnea, ubicando a todos los miembros en un mismo lugar.
La comunicacin directa nos da mucho ms valor que la escrita, podemos observar los gestos
del cliente, o la expresin de cansancio de nuestro compaero.
60 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Coraje: con XP debemos tocar continuamente cosas que ya funcionan, para mejorarlas,
optimizarlas o agregar funcionalidad. Es por eso que el coraje es parte del proyecto tambin,
ya que el miedo a tocar o modificar cosas que ya funcionan perfectamente, a veces puede ser
difcil.
Kent Beck, Ward Cunninghamn y Ron Jeffries tenan muy claro las prcticas que les haban dado
mejores resultados en sus proyectos. As que intentaron aplicarlas todas juntas dando una vuelta de
tuerca. sa fue la semilla de la metodologa de Programacin Extrema. Crearon las doce prcticas que
se refuerzan entre s para obtener los mejores resultados. Las relaciones entre ellas las podemos ver
en el siguiente grfico:
61 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
En el centro estn situadas las prcticas que ms resultados nos pueden dar al adaptarlas (diseo
simple, el test y la refactorizacin).
Incluso si no queremos tomar la totalidad de las prcticas de XP adoptando estas tres a nuestra
metodologa habitual, podemos tener una sustancial mejora en los resultados obtenidos.
1. Diseo simple: si nuestro diseo es simple, cuando alguien lo vea lo entender, si es complejo,
probablemente no pueda descifrarlo.
El principio es utilizar el diseo ms sencillo que consiga que todo funcione, de esta
manera facilitaremos el mantenimiento y minimizaremos los riesgos de modificaciones que se
hagan sin necesidad de entender el cdigo en su mximo nivel.
Refactorizacin: inicialmente, nuestro sistema, son todas lneas de cdigo bien ordenadas
y comentadas, pero a medida que vamos introduciendo cambios, el orden se va perdiendo
hasta que aquello deriva en una serie de lneas de cdigo caticas, llenas de cdigo comentado
de las diferentes pruebas y con comentarios obsoletos que no se corresponden con la realidad
de la funcionalidad.
El excesivo coste de las modificaciones de las metodologas tradicionales se debe en gran
medida a este deterioro progresivo del cdigo, tras la acumulacin de modificaciones.
Para mantener la curva del coste de cambio tan plana como sea posible, en la metodologa
XP se aplica la refactorizacin, que no es otra cosa que modificar el cdigo para dejarlo en buen estado,
volviendo a escribir las partes que sean necesarias pero siempre desde un punto de vista global
a la funcionalidad, independientemente del cambio que hagamos.
El cdigo final debe conservar la claridad y sencillez del original. Los comentarios son muy
importantes para mantener esta claridad y sencillez.
2. Test: es el pilar fundamental de las prcticas de esta metodologa, sin los test, XP sera un
fracaso total, es el punto de anclaje que le da la base metodolgica a la flexibilidad de XP.
Si una funcionalidad no se ha testeado, slo funciona en apariencia, los tests han de ser
aplicados tras cada cambio, y han de ser automatizados en la medida que estos sean posibles.
Si no lo hacemos, podemos incurrir en fallos humanos a la hora de testearlos y eso puede
resultar fatal.
62 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
El objetivo de los tests no es detectar errores, sino evitarlos, no se trata de corregir errores,
sino de prevenirlos. Para ello, los tests siempre se escriben antes que el cdigo a testear, nunca
despus. De esta manera estamos obligados a pensar por adelantado cules son los problemas
que podemos encontrar cuando usen nuestro cdigo, a ponernos en el lugar del usuario final,
y este hecho de pensar por adelantado evita muchos problemas, previnindonos sobre ellos
en lugar de dejar que aparezcan y luego responder sobre la marcha.
Cuando escribimos el cdigo, ya sabemos a qu se ha de enfrentar y de esta manera los
errores se minimizan. El objetivo de nuestro software ya no es cumplir unas funcionalidades
sino pasar una serie de tests definidos previamente. Es por esto por lo que el usuario final debe
ayudar al programador a desarrollar los tests unitarios de forma conjunta, ya que en stos
estar implcita la funcionalidad que queremos que tenga. Otro factor clave es que debe ser el
mismo programador el que los desarrolle, si no es as, perdemos la ventaja de minimizacin de
errores.
Los tests han de ser de tres tipos: de aceptacin, unitarios y de integridad; y siempre han
de estar automatizados en su mayor medida posible.
Test de aceptacin: es creado conjuntamente con el cliente final y debe reflejar las
necesidades funcionales del primero.
Test unitario: es creado por el programador para ver que todos los mtodos de la clase
funcionan correctamente.
Test de integridad: es creado por el equipo de desarrollo para probar que todo el
conjunto funciona correctamente con la nueva modificacin.
El uso de los tests nos facilita la refactorizacin, permitindonos comprobar de forma
sencilla que los cambios originados por la refactorizacin no han cambiado el
comportamiento del cdigo.
La primera letra ha de ser una "v" si es variable local o una "p" si nos viene por
parmetro de entrada o una "o" si es parmetro de entrada y salida.
La segunda letra ha de indicar el tipo de datos "n" si es numrico, "s" si es una cadena
de caracteres, "d" si es una fecha y "b" si es booleano.
El resto del nombre ha de ser descriptivo con su contenido lgico, separando
significados con el "_".
Si yo ahora en el cdigo veo la siguiente sentencia:
63 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
4. Propiedad colectiva del cdigo: para poder aplicar la refactorizacin y para asegurarnos de
que el diseo es simple y que se codifican segn los estndares, tenemos que eliminar otra de
las ideas que estn muy arraigadas en el mundo del desarrollo de aplicaciones que es la
propiedad individual del cdigo. Frases como "que lo modifique quien lo hizo que seguro que
lo entiende mejor" o "quin ha tocado mi funcin?" dejan de tener sentido en XP, ya que el
diseo simple nos garantiza que ser fcilmente entendible, la refactorizacin permite que
cualquier miembro del equipo rehaga el cdigo, los test automatizados nos garantizan que no
hemos modificado el comportamiento esperado del cdigo con nuestra modificacin, y la
codificacin con estndares nos da ese grado de comprensin adicional.
En XP el cdigo es propiedad de todo el equipo y cualquier miembro tiene el derecho
y la obligacin de modificarlo, para hacerlo ms eficiente o comprensible, sin que nadie se
tenga por qu sentir ofendido o con miedo de tocar algo.
5. Programacin por parejas: la programacin siempre se ha visto como algo solitario, y tener
dos personas delante de un solo teclado y de un solo monitor sorprende en un inicio. Pero las
ventajas son muchas.
Nos es muy complicado pensar a nivel abstracto y luego pasar a pensar a nivel
concreto, y si lo hacemos de forma continua, acabamos desconcentrados y cometemos
errores. Es por esto por lo que, cuando programamos, primero pensamos la estrategia de
codificacin que vamos a seguir y luego nos ponemos a codificar cada una de las partes, sin
pensar de nuevo a nivel estratgico hasta que no finalizamos alguna de las partes o a veces la
totalidad del cdigo, y entonces vemos los errores o las cosas que nos hemos dejado en la
estrategia de codificacin original.
Pensar a lo grande y en detalle a la vez nos es imposible con un solo cerebro. En la
programacin en parejas uno de los miembros debe estar pensando a nivel tctico y el otro a
nivel estratgico de manera que esos dos procesos siempre estn activos reduciendo as los
errores y mejorando la calidad del programa. Obviamente, estos dos roles deben
intercambiarse cada poco tiempo entre los miembros de la pareja para abarcar todas las
posibilidades tcticas y estratgicas.
El nivel de los miembros de la pareja ha de ser equivalente, no sirve que uno sepa
mucho y otro no tenga ni idea, deben de estar equilibrados y obviamente llevarse bien para
que tenga xito.
Tambin la rotacin ha de ser muy importante, cada miembro del equipo ha de ser
capaz de trabajar en cualquier rea de la aplicacin que se est desarrollando. De esta manera
no provocaremos cuellos de botella cuando asignemos las tareas.
64 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
El hecho de que asignemos las tareas por parejas hace que el tiempo de aprendizaje
se reduzca casi a cero, simplemente sustituyendo uno de los miembros por otro nuevo. As
pues, la rotacin de reas y de parejas nos garantiza que podremos hacer un reparto ms
equitativo del trabajo sin tener que depender de una sola persona para un trabajo especfico.
Otro efecto que produce la programacin en parejas es el psicolgico, disminuye la
frustracin de la programacin en solitario, tienes a alguien que entiende el problema justo al
lado, y con el que compartir el problema. Adems, muchas veces los problemas vienen por
falta de concentracin y se tiene la solucin delante de nosotros y no se ve, y se pierde mucho
tiempo.
6. Integracin contina: en XP no esperamos a que todas las partes estn desarrolladas para
integrarlas en el sistema, sino que a medida que se van creando las primeras funcionalidades
ya se ensamblan en el sistema, de manera que ste puede ser construido varias veces durante
un mismo da. Esto se hace para que las pruebas de integracin vayan detectando los errores
desde el primer momento y no al final de todo y hace que el impacto sea mucho menor. Es
responsabilidad de cada equipo publicar lo antes posible cada funcionalidad o cada
modificacin. La idea es que todos los miembros del equipo trabajen con la ltima versin del
cdigo, para as evitar pisar versiones desarrolladas por otros compaeros y tambin poder
interactuar nuestro cdigo con la ltima versin vigente y as evitar posibles errores de
compatibilidad.
7. 40 horas semanales: no se pueden trabajar durante 14 horas seguidas y hacerlo con calidad.
Las semanas de 70 horas de trabajo son contraproducentes. Al final de la semana se tiene que
llegar cansado pero satisfecho, nunca exhausto ni desmotivado. Trabajar horas extras
disminuye la moral y el espritu del equipo. Si durante dos semanas hay que hacer horas extras,
entonces es que el proyecto va mal y se debe replantear alguna de las cuatro variables.
8. Metfora del negocio: para que dos o ms personas se puedan comunicar de forma eficiente,
deben tener el mismo vocabulario y compartir el mismo significado. El modelo de negocio que
entiende el usuario final seguramente no se corresponder con el que cree entender el
programador. Es por esto por lo que en los equipos de XP se debe crear una "metfora" con la
que el usuario final se encuentre cmodo y que le sirva al equipo de desarrollo a la hora de
modelar las clases y mtodos del sistema. La metfora, es un requerimiento comn
compartido por el usuario y el equipo de desarrollo que describe cmo deben comportarse las
diferentes partes del sistema que se quiere implementar, en un alto nivel de abstraccin.
65 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
ha sido errnea, mucho del trabajo realizado puede ser en vano y as haber aumentado el
coste de nuestro proyecto.
XP necesita que el cliente final forme parte del equipo de desarrollo y est ubicado
fsicamente en el mismo sitio para que as se agilice el tiempo de respuesta y se puedan validar
todas las funcionalidades lo antes posible.
En XP, el cliente siempre tiene que estar disponible para el resto del equipo, formando parte
de l y fomentando la comunicacin cara a cara, que es la ms eficiente de las comunicaciones
posibles.
10. Entregas frecuentes: Se deben desarrollar lo antes posible versiones pequeas del sistema,
que aunque no tengan toda la funcionalidad, nos den una idea de cmo ha de ser la entrega
final y que nos sirvan para que el usuario final se vaya familiarizando con el entorno y para que
el equipo de desarrollo pueda ejecutar las pruebas de integridad.
Las nuevas versiones tienen que ser tan pequeas como sean posibles, pero tienen
que aportar un nuevo valor agregado del negocio para el cliente. Dar valor al negocio es lo que
har que la visin final del cliente sea la mejor posible.
11. Planificacin incremental: la planificacin nunca ser perfecta, variar en funcin de cmo
varen las necesidades del negocio y en cada ciclo de re planificacin se volvern a establecer
las cuatro variables de la metodologa XP.
Asumir una planificacin esttica no corresponde con la agilidad que queremos dar, ya
que las necesidades del negocio pueden cambiar drsticamente mientras estamos
desarrollando el aplicativo. En XP la planificacin se va revisando continuamente, de forma
incremental, priorizando aquellas necesidades de negocio que nos aporten mayor valor.
La planificacin se plantea como un permanente dilogo entre los responsables de la
perspectiva empresarial y de la perspectiva tcnica del proyecto.
66 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Las doce prcticas mencionadas anteriormente haban dado por separado muy buenos resultados
a Kent Beck y compaa, pero unificadas en un mismo ciclo de vida es lo que dio origen a la metodologa
XP.
Una de las caractersticas ms importantes de este modelo es la comunicacin y la mejor forma de
hacerlo es presencialmente. Cuando tenemos algo importante que decir, no hay mejor manera que
hacerlo cara a cara, para que no haya equvocos. La expresin, la entonacin y las miradas son muy
importantes en este proceso.
El ciclo de vida de XP se organiza como si fuese una conversacin cliente- desarrollador.
_______________________
Figura N 12 Extrada de [12]
67 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
ste sera el desarrollo ideal de un proyecto XP. Para acercarnos a esto, se establece un ciclo de
vida dividido en seis fases.
1. Fase de exploracin
2. Fase de planificacin
3. Fase de iteraciones
4. Fase de produccin
5. Fase de mantenimiento
6. Fase de muerte del proyecto
Todo comienza con las historias del usuario" (users stories). En esta fase los usuarios plantean
a grandes rasgos las funcionalidades y requerimientos que desean obtener del aplicativo. Las
historias de usuario tienen el mismo propsito que los casos de uso, salvo en un punto crucial, las
escriben los usuarios y no el analista. Han de ser descripciones cortas y escritas en el lenguaje del
usuario sin terminologa tcnica.
Estas historias son las que guiarn la creacin de los tests de aceptacin que han de garantizar
que dichas historias se han comprendido y se han implementado correctamente.
_______________________
Figura N 13 Extrada de [13]
68 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
69 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Una vez tenemos la lista de historias priorizadas junto con su coste de implementacin,
pasamos a convocar la reunin del plan de entregas.
3. La fase de iteraciones: como hemos dividido el proyecto en iteraciones, esta fase se repetir
tantas veces como iteraciones tengamos. Generalmente, cada iteracin suele ser de dos a tres
semanas.
El plan de iteracin se trata de la siguiente manera:
Se recogen las historias de usuario asignadas a esta iteracin.
Se detallan las tareas a realizar por cada historia de usuario.
Las tareas deben ser de uno o tres das de desarrollo. Si son ms grandes, se debera
intentar dividir en varias ms sencillas.
Se estima el coste de cada tarea. Si el total es superior al tiempo de iteracin, se deber
prescindir de alguna historia de usuario que se pasara a la siguiente iteracin. Si son
muchas las historias de usuario desechadas, entonces hay que volver a estimar las
cuatro variables de la metodologa y volver a planificar el proyecto.
Si el tiempo total estimado de las tareas es inferior al tiempo de iteracin, se puede
asumir una historia de usuario que correspondiese a la siguiente iteracin.
Se priorizan las tareas que ms valor darn al negocio, intentando que se finalicen
historias de usuario lo antes posible.
Se reparten las primeras tareas al equipo de desarrollo y el resto se deja en una cola
de tareas sin asignar de dnde se irn tomando a medida que se vayan finalizando las
anteriores.
Se convocan reuniones de seguimiento diarias para ver si nos vamos retrasando en las
estimaciones o nos vamos adelantando a ellas y as poder desechar o incorporar historias de
usuario.
Lo ms importante es que en cada momento de cada iteracin estemos realizando la tarea
que ms valor posible da al negocio de entre las que tenemos pendientes, de manera que, si
tenemos que reducir el alcance del proyecto, slo afecte a las funcionalidades secundarias de
nuestro aplicativo.
70 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
4. La fase de produccin: llegamos a esta fase al alcanzar la primera versin que el usuario final
decida que puede ponerse en produccin.
Pasaremos el aplicativo a produccin cuando alcance las funcionalidades mnimas que
aporten un valor real al negocio y una operativa arquitectnica estable.
Es decir, no esperamos a tener todas las funcionalidades implementadas, sino que en
cuanto tenemos algo que los usuarios pueden utilizar y que ayuda al negocio, pasamos la
primera versin a produccin.
Paralelamente, se sigue con las iteraciones finales de proyecto. De esta manera, antes de
que finalice el proyecto, ya estamos dando valor a la organizacin, el ROI (retorno de la
inversin) del proyecto empieza a generarse antes de que ste finalice su versin final.
En la etapa de produccin se realizan tambin iteraciones como en la anterior etapa, pero
el ritmo de stas ya no es de dos a tres semanas, sino mensuales.
Esta fase se mantiene hasta que realizamos la ltima entrega, con la que finalizamos el
mbito del aplicativo y pasamos al mantenimiento del mismo.
Durante la fase de produccin, el ritmo de desarrollo decae debido a que el equipo debe
solventar las incidencias de los usuarios. Es por esto por lo que a veces es necesario incorporar
nuevo personal al equipo.
5. La fase de mantenimiento: una vez el alcance del proyecto se ha conseguido, y tenemos todas
las funcionalidades en produccin, se revisan con el usuario aquellas nuevas historias de
usuario que se han producido tras la puesta en produccin del proyecto.
Estas nuevas funcionalidades se van incorporando segn su valor de negocio y el
presupuesto adicional del que se disponga.
El equipo de desarrollo se reduce a la mnima expresin, dejando algunos miembros para
el mantenimiento.
6. La fase de muerte del proyecto: Cuando no existen ms historias de usuario para introducir
en nuestro sistema o cuando se reduce progresivamente valor de las historias de usuario
implementadas en l, el proyecto entra en la fase de muerte.
Se ir desinvirtiendo en l hasta abandonarlo totalmente cuando no aporte valor al
negocio o cuando sus historias de usuario hayan sido absorbidas por otro sistema de
informacin.
71 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Cada rol tiene unas funciones claras dentro de la metodologa. Cada persona del equipo puede
ejecutar uno o varios roles, o incluso cambiar de rol durante las diferentes fases del proyecto.
1. Programador:
Escribe las pruebas unitarias.
Produce el cdigo del programa.
2. Cliente:
Escribe las historias de usuario.
Disea las pruebas de aceptacin.
Prioriza las historias de usuario.
Aporta la dimensin de negocio al equipo de desarrollo.
Representa al colectivo de usuarios finales.
Est siempre disponible para consultas.
4. Lder Tcnico
Se encarga del proceso global.
Garantiza que se sigue la filosofa de XP.
Conoce a fondo la metodologa.
Provee guas y ayudas a los miembros del equipo a la hora de aplicar las prcticas
bsicas de XP.
72 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
5. Consultor:
No forma parte del equipo.
Tiene un conocimiento especfico de un rea en concreto.
Ayuda a resolver un problema puntual, ya sea de spike tecnolgico o de valor de
negocio.
6. PM (Project Manager):
Es el mximo responsable del proyecto.
Hace de enlace con los clientes.
Se encarga de coordinar y de garantizar las condiciones necesarias para el desarrollo
del trabajo.
5.3.2. SCRUM
73 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Scrum tambin se utiliza para resolver situaciones en que no se est entregando al cliente lo que
necesita, cuando las entregas se alargan demasiado, los costes se disparan o la calidad no es aceptable,
cuando se necesita capacidad de reaccin ante la competencia, cuando la moral de los equipos es baja
y la rotacin alta, cuando es necesario identificar y solucionar ineficiencias sistemticamente o cuando
se quiere trabajar utilizando un proceso especializado en el desarrollo de producto.
Fundamentos de Scrum
El desarrollo incremental de los requisitos del proyecto en bloques temporales cortos y fijos
(iteraciones de un mes natural y hasta de dos semanas, si as se necesita).
Las iteraciones se pueden entender como mini proyectos, en todas las iteraciones se repite un
proceso de trabajo similar (de ah el nombre iterativo) para proporcionar un resultado
completo sobre el producto final, de manera que el cliente pueda obtener los beneficios del
proyecto de forma incremental. Para ello, cada requisito se debe completar en una nica
iteracin. El equipo debe realizar todas las tareas necesarias para completarlo (incluyendo
pruebas y documentacin) y que est preparado para ser entregado al cliente con el mnimo
esfuerzo necesario. De esta manera no se deja para el final del proyecto ninguna actividad
arriesgada relacionada con la entrega de requisitos.
La priorizacin de los requisitos por valor para el cliente y coste de desarrollo en cada iteracin.
Para que un proyecto proporcione el mejor resultado posible, y como soporte fundamental
al control emprico del proyecto, es necesario repriorizar los requisitos de manera regular, en
cada iteracin, segn el valor que proporcionan al cliente en ese momento y su coste estimado
de desarrollo. Como resultado de esta re priorizacin se actualiza la lista de requisitos
priorizada (Product Backlog).
El control emprico del proyecto. Por un lado, al final de cada iteracin se demuestra al cliente
el resultado real obtenido, de manera que pueda tomar las decisiones necesarias en funcin
de lo que observa y del contexto del proyecto en ese momento. Por otro lado, el equipo se
sincroniza diariamente y realiza las adaptaciones necesarias.
La potenciacin del equipo, que se compromete a entregar unos requisitos y para ello se le
otorga la autoridad necesaria para organizar su trabajo.
El timeboxing de las actividades del proyecto, para ayudar a la toma de decisiones y conseguir
resultados. La tcnica del timebox consiste en fijar el tiempo mximo para conseguir ciertos
objetivos, tomar una decisin o realizar unas tareas, y hacer lo mejor que podamos en ese
74 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
intervalo. De esta manera, en lugar de ponerse a trabajar en algo hasta que est hecho, de
antemano se acuerda que slo se dedica un tiempo limitado. La consciencia de esta limitacin
temporal favorece la priorizacin de objetivos/tareas y fuerza la toma de decisiones.
Los siguientes puntos son de especial importancia para la implantacin de una gestin gil de
proyectos como Scrum:
1. Cultura de empresa
La cultura de la empresa proveedora del proyecto debe estar alineada con la filosofa de una
gestin gil de proyectos como Scrum y debe fomentar:
Scrum sistematiza la identificacin de obstculos que pueden impedir el correcto progreso del
proyecto. Los problemas previamente existentes en la organizacin (procesos, personas,
75 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
herramientas, etc.) y que atentan contra la productividad se harn ms evidentes cuando se aplique
Scrum y ser necesario ir solucionndolos en cada iteracin.
Scrum exige del cliente una alta implicacin y una dedicacin regular:
3. Compromiso de la Direccin
Se harn muy evidentes los obstculos ya existentes y por venir que impiden el correcto
desarrollo de los proyectos (a nivel de expectativas del cliente, productividad, calidad, etc.),
sean organizativos, tcnicos, procesos, relaciones entre personas/departamentos, habilidades
de los equipos y dems.
Ser necesario tomar decisiones, realizar cambios organizativos, alinear a personas
y proporcionar recursos para hacer la transicin. Gestores y equipos debern desaprender
formas de trabajar y de relacionarse a las que estaban habituados y aprender nuevas
dinmicas.
Un proyecto ya no consistir en que cada Departamento/rea realice su parte del trabajo y se
la pase al siguiente. Ser necesario formar equipos autogestionados y
multidisciplinares capaces de conseguir un objetivo por ellos mismos.
Habr gestores que tendrn que cambiar sus roles para ser Facilitadores o Clientes, en una
jerarqua de equipos organizada.
Se tendr que gestionar aquellas conductas personales que no permiten que otras personas
puedan aportar ideas sobre el qu y el cmo de un proyecto, que defienden a toda costa su
parcela de responsabilidad, que les cuesta mucho cederla al equipo y dejar de controlarlo, que
no son capaces de delegar tareas o de colaborar con otras personas en la resolucin de
problemas.
76 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Scrum se basa en el compromiso conjunto y la colaboracin entre los miembros del equipo. La
transparencia entre todos es fundamental para poder inspeccionar la situacin real del proyecto y as
poder hacer las mejores adaptaciones que permitan conseguir el objetivo comn. Por ello, ser difcil
trabajar utilizando Scrum para las personas que:
No confan en los dems, no permiten que otras personas puedan aportar ideas sobre el qu
y el cmo, no son capaces de colaborar en la resolucin de problemas ni de delegar tareas.
No son transparentes respecto a su trabajo personal, sea por que defienden a toda costa su
parcela de responsabilidad o por inseguridad para comunicarse o colaborar, cosa que no
permite que sean ayudados.
Su modo de relacin se basa en la generacin de conflicto o bien evitan entrar en conflictos
sanos en que ambas partes ganen y terminar sin adquirir un compromiso real con el equipo.
Priorizan su ego, sus intereses personales, de carrera o de departamento, por encima de los
intereses del equipo.
No son capaces de cambiar sus hbitos y salir de su zona de confort, tienen miedo al cambio,
prefieren que se les diga qu tienen que hacer.
Quieren seguir siendo los hroes que solucionan los proyectos y/o las personas de las que
depende la empresa.
La relacin entre el cliente y el proveedor del proyecto debe estar basada en el principio de obtener
el mayor beneficio posible en todos los puntos del proyecto. En lugar de estar ligados por un contrato
frreo de alcance, tiempo y coste, las dos partes asumen que habr cambios para que cliente pueda
obtener lo que realmente necesita, no lo que est escrito en un documento inicial o seguir un plan
inicial que vaya perdiendo su sentido. La relacin contractual se aproxima a un contrato de un equipo
por meses, donde el cliente dirige mes a mes los resultados que el proyecto debe ir proporcionando.
Debe existir transparencia en la ejecucin del proyecto para facilitar esta relacin. Esta transparencia
la facilita de manera regular el propio proceso de Scrum, especialmente en la actividad
de demostracin de los requisitos completados al final de cada iteracin.
Para poder utilizar Scrum se debe poder ir incorporando requisitos de manera incremental en el
producto del proyecto y realizar cambios de forma controlada sin un coste prohibitivo para el cliente.
Para ello es necesario:
77 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Mantener la simplicidad y calidad interna del producto que se est creando. Para cubrir los
requisitos actuales del cliente no hay que realizar ms esfuerzo del que sea necesario y, a la
vez, se debe vigilar de no hacer nada en contra de futuros requisitos.
Dado que los requisitos se desarrollan priorizados por su valor, es ms improbable que ocurran
cambios sustanciales en los primeros requisitos desarrollados, cuando se construye la base del
producto. Se fomenta que los cambios que suelen aparecen cuando el proyecto ya est avanzado se
realicen sobre requisitos que no son tan importantes.
La arquitectura emerge conforme se va necesitando, iteracin a iteracin, con lo que se asegura
que todo lo que se disea se utiliza y se prueba.
El tamao de un equipo debe estar conformado entre 5 y 9 personas. Por debajo de 5 personas
cualquier imprevisto o interrupcin sobre un miembro del equipo compromete seriamente el
compromiso que han adquirido y, por tanto, el resultado que se va a entregar al cliente al finalizar la
iteracin. Por encima de 9 personas, la comunicacin y colaboracin entre todos los miembros se hace
ms difcil y se forman subgrupos.
Todos los miembros del equipo deben trabajar en la misma localizacin fsica, para poder
maximizar la comunicacin entre ellos mediante conversaciones cara a cara, diagramas en pizarras,
tarjetas en el tabln de tareas, etc. De esta manera se minimizan otros canales de comunicacin menos
eficientes (llamadas telefnicas, correos electrnicos, documentos), que hacen que las tareas se
transformen en un pasa manos o que hacen perder el tiempo en el establecimiento de la
comunicacin.
Los miembros del equipo deben dedicarse al proyecto a tiempo completo para de esta manera:
Evitar daar su productividad, que se vera afectada si tuviesen que ir cambiando de tarea para
diferentes proyectos o duplicando el nmero de reuniones para estos diferentes proyectos. Si
el equipo est dedicado a un nico proyecto es ms sencillo mantener el compromiso que
adquiere en cada iteracin. Como ayuda adicional para conseguir la mxima productividad, el
Facilitador se encarga de proteger al equipo de interrupciones externas.
Facilitar la gestin de recursos humanos de la organizacin. Esta gestin se simplifica si en la
organizacin las personas se reservan a un proyecto por iteraciones completas.
Por otro lado, el cliente y el facilitador deben estar dedicados al proyecto el tiempo necesario
para cumplir con sus responsabilidades.
78 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
El equipo debe ser estable durante el proyecto, sus miembros deben cambiar lo mnimo posible,
para poder aprovechar el esfuerzo que les ha costado construir sus relaciones interpersonales,
conectarse y establecer su organizacin del trabajo.
_______________________
Figura N 14 Extrada de [14]
79 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
o El equipo examina la lista, pregunta al cliente las dudas que le surgen, aade ms
condiciones de satisfaccin y selecciona los objetivos/requisitos ms prioritarios que
se compromete a completar en la iteracin, de manera que puedan ser entregados si
el cliente lo solicita.
o Define las tareas necesarias para poder completar cada objetivo/requisito, creando la
lista de tareas de la iteracin (Sprint Backlog).
o Se realiza una estimacin conjunta del esfuerzo necesario para realizar cada tarea
(Pocker Planning).
o Cada miembro del equipo se autoasigna a las tareas que puede realizar.
Beneficios
Productividad mediante comunicacin y creacin de sinergias. Todos los miembros del equipo
tienen una misma visin del objetivo y se ha utilizado los conocimientos y las experiencias de
todos para elaborar la mejor solucin entregable en el mnimo tiempo y con el mnimo
esfuerzo, eliminando tareas innecesarias, detectando conflictos y dependencias entre tareas.
Potenciacin del compromiso del equipo sobre el objetivo comn de la iteracin:
o Es todo el equipo quien asume la responsabilidad de completar en la iteracin los
requisitos que selecciona. Facilita la ayuda de cualquier miembro si se detecta algn
impedimento que bloquea el progreso de la iteracin, especialmente si cuando se est
llegando al final de la iteracin es necesaria la participacin de todos para poder
completar los objetivos comprometidos.
80 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
o Es cada una de las personas la que se responsabiliza de realizar sus tareas (a las que se
autoasign) en los tiempos que proporcion. Si existe falta de compromiso con
respecto al resto de miembros del equipo se har muy evidente en las reuniones
diarias de sincronizacin del equipo (Daily meeting).
Una estimacin conjunta es ms fiable, dado que tiene en cuenta los diferentes conocimientos,
experiencia y habilidades de los integrantes del equipo.
Cada da el equipo realiza una reunin de sincronizacin (Daily meeting), donde cada miembro
inspecciona el trabajo de los otros para poder hacer las adaptaciones necesarias, comunica
cuales son los impedimentos con que se encuentra, actualiza el estado de la lista de tareas de
la iteracin (Sprint Backlog) y los grficos de trabajo pendiente (Burndown charts).
El Facilitador (Scrum Master) se encarga de que el equipo pueda cumplir con su compromiso
y de que no se reduzca su productividad. Tambin se encarga de eliminar los obstculos que
el equipo no puede resolver por s mismo y protege al equipo de interrupciones externas que
puedan afectar su compromiso o su productividad.
81 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
En esta reunin, la cual es dirigida por el Scrum Master, cada miembro del equipo debe responder
las siguientes preguntas en un timebox de cmo mximo 15 minutos:
Qu he hecho desde la ltima reunin de sincronizacin? Pude hacer todo lo que tena
planeado? Cul fue el problema?
Qu voy a hacer a partir de este momento?
Qu impedimentos tengo o voy a tener para cumplir mis compromisos en esta iteracin y en
el proyecto?
Como apoyo a la reunin, el equipo cuenta con la lista de tareas de la iteracin, donde se
actualiza el estado y el esfuerzo pendiente para cada tarea, as como con el grfico de horas pendientes
en la iteracin.
Recomendaciones
Realizar la reunin diaria de sincronizacin de pie, para que los miembros del equipo no se
relajen ni se extiendan en ms detalles de los necesarios.
Realizar las reuniones de colaboracin entre miembros del equipo justo despus de la de
sincronizacin.
Es una reunin informal donde el equipo presenta al cliente los requisitos completados en
la iteracin, en forma de incremento de producto preparado para ser entregado con el mnimo
esfuerzo, haciendo un recorrido por ellos lo ms real y cercano posible al objetivo que se pretende
cubrir.
En funcin de los resultados mostrados y de los cambios que haya habido en el contexto del
proyecto, el cliente realiza las adaptaciones necesarias de manera objetiva, ya desde la primera
iteracin, re planificando el proyecto.
Se realiza en un timebox de 1 a 2 horas promedio.
Beneficios
El cliente puede ver de manera objetiva cmo han sido desarrollados los requisitos que
proporcion, ver si se cumplen sus expectativas, entender ms qu es lo que necesita y tomar
mejores decisiones respecto al proyecto.
El equipo puede ver si realmente entendi cules eran los requisitos que solicit el cliente y
ver en qu puntos hay que mejorar la comunicacin entre ambos.
El equipo se siente ms satisfecho cuando puede ir mostrando los resultados que va
obteniendo. No est meses trabajando sin poder exhibir su obra.
82 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Restricciones
Slo se pueden mostrar los requisitos completados, para que el cliente no se haga falsas
expectativas y pueda tomar decisiones correctas y objetivas en funcin de la velocidad de
desarrollo y el resultado realmente completado. Un requisito no completado quedar como
un requisito ms a re planificar.
Con el objetivo de mejorar de manera continua su productividad y la calidad del producto que se
est desarrollando, el equipo analiza cmo ha sido su manera de trabajar durante la iteracin, por qu
est consiguiendo o no los objetivos a los que se comprometi al inicio de la iteracin y por qu el
incremento de producto que acaba de demostrar al cliente era lo que l esperaba o no.
Notar que esta reunin se realiza despus de la reunin de demostracin al cliente de los objetivos
conseguidos en la iteracin, para poder incorporar su feedback y cumplimiento de expectativas
como parte de los temas a tratar en la reunin de retrospectiva. Se realiza en un timebox de cmo
mximo 2 horas.
Beneficios
83 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Modificaciones que el cliente solicita tras la demostracin que el equipo realiza al final de cada
iteracin sobre los resultados obtenidos, ahora que el cliente entiende mejor el producto o
proyecto.
Cambios en el contexto del proyecto (sacar al mercado un producto antes que su competidor,
hacer frente a urgencias o nuevas peticiones de clientes, etc).
Nuevos requisitos o tareas como resultado de nuevos riesgos en el proyecto.
Para cada nuevo objetivo/requisito, conjuntamente se hace una identificacin inicial de sus
condiciones de satisfaccin (que se detallarn en la reunin de planificacin de la iteracin).
El cliente obtiene del equipo la re estimacin de costes de desarrollo para completar los
objetivos/requisitos siguientes. El equipo ajusta el factor de complejidad, el coste para
completar los requisitos y su velocidad de desarrollo en funcin de la experiencia adquirida
hasta ese momento en el proyecto.
El cliente re prioriza la lista de objetivos/requisitos en funcin de estas nuevas estimaciones.
Ser el representante de todas las personas interesadas en los resultados del proyecto (internas
o externas a la organizacin, promotores del proyecto y usuarios finales o consumidores
finales del producto) y actuar como interlocutor nico ante el equipo, con autoridad para
tomar decisiones.
Definir los objetivos del producto o proyecto.
Dirigir los resultados del proyecto y maximizar su ROI.
Es el propietario de la planificacin del proyecto. Crea y mantiene la lista priorizada con los
requisitos necesarios para cubrir los objetivos del producto o proyecto, conoce el valor que
aportar cada requisito y calcula el ROI a partir del coste de cada requisito que le proporciona
el equipo.
Reparte los objetivos/requisitos en iteraciones y establece un calendario de entregas.
Antes de iniciar cada iteracin re planifica el proyecto en funcin de los requisitos que aportan
ms valor en ese momento, de los requisitos completados en la iteracin anterior y del
contexto del proyecto en ese momento
Colaborar con el equipo para planificar, revisar y dar detalle a los objetivos de cada iteracin.
84 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Controlar que todos los participantes del proyecto sigan los valores y principios giles,
las reglas y proceso de Scrum y guiar la colaboracin dentro del equipo y con el cliente de
manera que las sinergias sean mximas.
Asegurar que exista una lista de requisitos priorizada y que est preparada antes de la
siguiente iteracin.
Facilitar las reuniones de Scrum (planificacin de la iteracin, reuniones diarias de
sincronizacin del equipo, demostracin, retrospectiva), de manera que sean productivas y
consigan sus objetivos.
Ensear al equipo a auto gestionarse. No da respuestas, si no que gua al equipo con preguntas
para que descubra por s mismo una solucin.
Quitar los impedimentos que el equipo tiene en su camino para conseguir el objetivo de cada
iteracin, proporcionar un resultado til al cliente de la manera ms efectiva y as poder
finalizar el proyecto con xito. Estos obstculos se identifican de manera sistemtica en
las reuniones diarias de sincronizacin del equipo y en las reuniones de retrospectiva.
Proteger y aislar al equipo de interrupciones externas durante la ejecucin de la iteracin
(introduccin de nuevos requisitos, desvinculacin no prevista de un miembro del equipo,
etc.). De esta manera, el equipo puede mantener su productividad y el compromiso que
adquiri sobre los requisitos que completara en la iteracin.
3. Equipo (Team)
Es el grupo de personas que de manera conjunta desarrollan el producto del proyecto. Tienen un
objetivo comn y comparten la responsabilidad del trabajo que realizan.
El tamao del equipo est entre 5 y 9 personas. Por debajo de 5 personas cualquier imprevisto o
interrupcin sobre un miembro del equipo compromete seriamente el compromiso que han adquirido
y, por tanto, el resultado que se va a entregar al cliente al finalizar la iteracin. Por encima de 9
personas, la comunicacin y colaboracin entre todos los miembros se hace ms difcil y se forman
subgrupos.
85 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Desarrollador
Analista funcional
Analista Tcnico
Tester
Arquitecto
Proyect Manager
Team Leader
Es un equipo auto-organizado, que comparte informacin y cuyos miembros confan entre ellos.
Realiza de manera conjunta las siguientes actividades:
Seleccionar los requisitos que se compromete a completar en una iteracin, de forma que
estn preparados para ser entregados al cliente.
Estimar la complejidad de cada requisito en la lista de requisitos priorizada del producto o
proyecto.
En la reunin de planificacin de la iteracin decide cmo va a realizar su trabajo:
o Seleccionar los requisitos que pueden completar en cada iteracin, realizando al
cliente las preguntas necesarias.
o Identificar todas las tareas necesarias para completar cada requisito.
o Estimar el esfuerzo necesario para realizar cada tarea.
o Cada miembro del equipo se auto asigna a las tareas.
Durante la iteracin, trabajar de manera conjunta para conseguir los objetivos de la iteracin.
Cada especialista lidera el trabajo en su rea y el resto colaboran si es necesario para poder
completar un requisito.
Al finalizar la iteracin:
o Demostrar al cliente los requisitos completados en cada iteracin.
o Hacer una retrospectiva la final de cada iteracin para mejorar de forma continua su
manera de trabajar.
86 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Es una lista de tareas que el equipo elabora en la reunin de planificacin de la iteracin (Sprint
planning) como plan para completar los objetivos/requisitos seleccionados para la iteracin y que se
compromete a demostrar al cliente al finalizar la iteracin, en forma de incremento de producto
preparado para ser entregado. A cada tarea se la suele llamar Historia (History)
Consiste en un grfico que indica el trabajo pendiente a lo largo del tiempo y muestra la
velocidad a la que se estan completando los objetivos/requisitos. Permite predecir si el equipo podr
completar el trabajo en el tiempo estimado.
5.3.3. CRYSTAL
Crystal no es solo una metodologa de desarrollo de software gil, ya que se la considera una
familia de metodologas, debido a que se subdivide en varios tipos en funcin a la cantidad de persona
involucradas en el proyecto. Esta nueva serie de metodologas fue creada por el antroplogo
Alistair Cockburn, el cul tomo como base el anlisis de distintos proyectos de desarrollo de software
y su propia experiencia, lo cual fusionando ambos aspectos dio lugar este nuevo mtodo de trabajo.
Estas metodologas presentan un enfoque gil, con gran nfasis en la comunicacin y con cierta
tolerancia que la hace ideal en los casos en que sea inaplicable la disciplina requerida por Extreme
Programming.
Crystal Clear es la encarnacin ms gil de la serie y de la que ms documentacin se dispone. La
misma se define con mucho nfasis en la comunicacin y de forma muy liviana en relacin a los
entregables. Crystal maneja iteraciones cortas con feedback frecuente por parte de los
usuarios/clientes, minimizando de esta forma la necesidad de productos intermedios. Otra de las
cuestiones planteadas es la necesidad de disponer de un usuario real aunque sea de forma part time
para realizar validaciones sobre la UI (Interface de Usuario) y para participar en la definicin de los
requerimientos funcionales y no funcionales del software.
87 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
La familia Crystal dispone de un cdigo de color para marcar la complejidad de una metodologa,
ya que cuanto ms oscuro es el color, ms pesado es el mtodo y cuanto ms crtico es un sistema,
ms rigor se requiere. El cdigo cromtico se aplica a una forma tabular que se usa para situar el rango
de complejidad al cual se aplica una metodologa.
El nombre Crystal deriva de la caracterizacin de los proyectos segn 2 dimensiones, tamao y
complejidad.
En la siguiente imagen se puede apreciar la escala de colores dependiendo de la complejidad del
sistema:
_______________________
Figura N 15 Extrada de [15]
88 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Entrega frecuente: consiste en entregar software a los clientes con frecuencia, no solamente
en compilar el cdigo. La frecuencia depender del proyecto, pero puede ser diaria, semanal
o mensual.
Comunicacin osmtica: todos juntos en el mismo cuarto. Una variante especial es disponer
en la sala de un experto diseador senior y discutir respecto del tema que se trate.
Mejora reexiva: tomarse un pequeo tiempo diariamente para pensar bien qu se est
haciendo, cotejar notas, reexionar, discutir.
Seguridad personal: hablar con los compaeros cuando algo molesta dentro del grupo.
Foco: saber lo que se est haciendo y tener la tranquilidad y el tiempo para hacerlo.
Fcil acceso a usuarios expertos: tener alguna comunicacin con expertos desarrolladores.
Roles:
89 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
La gua de trabajo que presenta Crystal Clear es altamente recomendable para equipos pequeos.
Da flexibilidad y prioriza la parte humana, apuntando a lograr eficiencia, habitabilidad y confianza en
los miembros del equipo.
Presta especial importancia a la ubicacin fsica del grupo, donde la comunicacin cumple el
principal rol.
La entrega frecuente de cdigo confiable mantiene el foco y evita distracciones.
5.3.4. Kanban
Esta metodologa tiene como base de su origen la aplicacin de los procesos de produccin JIT
(Just in Time) ideados por la empresa automotriz Toyota, en la cual utilizaban tarjetas visuales para
identificar necesidades de material en la cadena de produccin.
Kanban se basa en la idea de que el trabajo en curso debera limitarse, y slo deberamos empezar
con algo nuevo cuando un bloque de trabajo anterior haya sido entregado o ha pasado a otra funcin
posterior de la cadena.
La metodologa Kanban utiliza un mecanismo de control visual para hacer seguimiento del trabajo
conforme este viaja a travs del flujo de valor. Normalmente, se emplea un panel o pizarra con notas
adhesivas o un panel electrnico de tarjetas para gestionar el flujo de trabajo y las asignaciones. Las
mejores prcticas apuntan al uso de ambos mtodos.
El Kanban (o tarjeta visual) implica que se genera una seal visual para indicar que hay nuevos
bloques de trabajo que pueden ser comenzados porque el trabajo en curso actual no alcanza el
mximo acordado.
El aporte principal de Kanban a las metodologas agiles es que a travs de la implementacin de
tarjetas visuales, proporciona transparencia al proceso, ya que su flujo de trabajo expone los cuellos
de botella, colas, variabilidad y desperdicios a lo largo del tiempo y todas las cosas que impactan al
rendimiento de la organizacin en trminos de la cantidad de trabajo entregado y el ciclo de tiempo
requerido para entregarlo. Proporciona a los miembros del equipo y a las partes interesadas visibilidad
sobre los efectos de sus acciones o falta de accin. De esta forma, cambia el comportamiento y motiva
a una mayor colaboracin en el trabajo. La visibilidad de los cuellos de botella, desperdicios y
variabilidades y su impacto tambin promueve la discusin sobre las posibles mejoras, y hace que los
equipos comiencen rpidamente a implementar mejoras en su proceso.
Como resultado, Kanban propicia la evolucin incremental de los procesos existentes, una
evolucin que generalmente est alineada con los valores de las metodologas agiles. Kanban no
genera una revolucin radical de la forma en la que las personas trabajan, sino que sugiere un cambio
gradual. Es un cambio que surge del entendimiento y del consenso de entre todos los participantes del
proyecto.
90 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Las principales ventajas de esta metodologa es que es muy fcil de aplicar, actualizar y asumir
por parte del equipo. Adems, se destaca por utilizar una tcnica de gestin de las tareas muy visual y
prctica, lo que permite ver a simple vista el estado de los proyectos, as como tambin pautar el
desarrollo del trabajo de manera efectiva.
Calidad garantizada: todo lo que se hace debe salir bien en la primera instancia, no hay margen
de error. Para lograr esto no se premia la rapidez, sino la calidad final de las tareas realizadas.
Esto se basa en el hecho que muchas veces cuesta ms arreglarlo despus que hacerlo bien de
entrada.
Reduccin del desperdicio: se basa en hacer solamente lo justo y necesario, para garantizar
que se haga bien. Esto supone la reduccin de todo aquello que es superficial o secundario.
Mejora continua: Se acuerda perseguir el cambio incremental y evolutivo. No es simplemente
un mtodo de gestin, sino tambin un sistema de mejora en el desarrollo de proyectos, segn
los objetivos a alcanzar.
El equipo debe estar de acuerdo que el cambio continuo, gradual y evolutivo es la manera de
hacer mejoras en el sistema y debe apegarse a ello. Los cambios radicales pueden parecer ms
eficaces, pero tienen una mayor tasa de fracaso debido a la resistencia y el miedo en la
organizacin.
Flexibilidad: es necesario poder priorizar aquellas tareas entrantes segn las necesidades del
momento y tener la capacidad de dar respuesta a estas tareas imprevistas.
La aplicacin del mtodo Kanban implica la generacin de un tablero de tareas que permitir
mejorar el flujo de trabajo y alcanzar un ritmo sostenible. Para implantar esta metodologa, deberemos
tener claro los siguientes aspectos:
1. Definir el flujo de trabajo de los proyectos: para ello, simplemente deberemos crear nuestro
propio tablero, que deber ser visible y accesible por parte de todos los miembros del equipo.
Cada una de las columnas corresponder a un estado concreto del flujo de tareas, que nos
servir para saber en qu situacin se encuentra cada proyecto. El tablero debe tener tantas
columnas como estados por los que pasa una tarea, desde que se inicia hasta que finaliza. A
diferencia de SCRUM, una de las peculiaridades del tablero es que este es continuo. Esto
significa que no se compone de tarjetas que se van desplazando hasta que la actividad queda
realizada por completo. En este caso, a medida que se avanza, las nuevas tareas (mejoras,
incidencias o nuevas funcionalidades) se acumulan en la seccin inicial, de manera que en las
reuniones peridicas con el cliente se priorizan y se colocan dentro de la seccin que se estima
oportuna.
91 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Dicho tablero puede ser especfico para un proyecto en concreto o bien genrico. No hay unas
fases del ciclo de produccin establecidas sino que se definirn segn el caso en cuestin, o se
establecer un modelo aplicable genricamente para cualquier proyecto de la organizacin.
2. Visualizar las fases del ciclo de produccin. Al igual que Scrum, Kanban se basa en el principio
de desarrollo incremental, dividiendo el trabajo en distintas partes. Esto significa que no
hablamos de la tarea en s, sino que lo dividimos en distintos pasos para agilizar el proceso de
produccin.
Normalmente cada una de esas partes se escribe en un post-it y se pega en el tablero, en la
fase que corresponda. Dicho post-it contiene, normalmente, la descripcin de la tarea con la
estimacin de horas, la informacin bsica para que el equipo sepa rpidamente la carga total
de trabajo que supone. Adems, se pueden emplear fotos para asignar responsables as como
tambin usar tarjetas con distintas formas para poner observaciones o indicar bloqueos
(cuando una tarea no puede hacerse porqu depende de otra).
Al final, el objetivo de la visualizacin es clarificar al mximo el trabajo a realizar, las tareas
asignadas a cada equipo de trabajo (o departamento), as como tambin las prioridades y la
meta asignada.
3. Stop Starting, start finishing. Este es el lema principal de la metodologa Kanban. De esta
manera, se prioriza el trabajo que est en curso en vez de empezar nuevas tareas.
Precisamente, una de las principales aportaciones del Kanban es que el trabajo en curso debe
estar limitado y, por tanto, existe un nmero mximo de tareas a realizar en cada fase; no se
puede abrir una nueva tarea sin finalizar otra.
De esta manera, se pretende dar respuesta al problema habitual de muchas empresas de tener
muchas tareas abiertas pero con un promedio de finalizacin muy bajo. Aqu lo importante es
que las tareas que se abran se cierren antes de empezar con la siguiente.
1. Mostrar el proceso
2. Limitar el trabajo en curso
3. Optimizar el flujo de trabajo
92 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
1. Mostrar el proceso
Consiste en la visualizacin de todo el proceso de desarrollo, mediante un tablero fsico,
pblicamente asequible. El objetivo de mostrar el proceso, consiste en:
La cantidad y nombre de las columnas, vara de acuerdo a las necesidades de cada equipo y en la
mayora de los casos, stas, son subdivididas en dos columnas: cola de espera y en curso.
_______________________
Figura N 16 Extrada de [16]
93 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Es un valor a tener en cuenta, que la resolucin de cuellos de botella, la mayora de las veces,
motiva la colaboracin del equipo entre los diferentes procesos. Pues mientras existen procesos
colapsados, existen a la vez, procesos libres para aceptar nuevos tems. El cuello de botella ha generado
un estancamiento, y los procesos libres, pueden ayudar a destrabar a los procesos colapsados.
3. Optimizar el flujo de trabajo
El objetivo es generar una produccin estable, continua y previsible. Midiendo el tiempo que el
ciclo completo de ejecucin del proyecto demanda (por ejemplo, cantidad de das desde el inicio del
anlisis hasta el fin de la implementacin), se obtiene el CycleTime.
Al dividir, el CycleTime por el WIP (trabajo en curso), se obtiene el rendimiento de trabajo,
denominado Throughput, es decir, la cantidad de tems que un equipo puede terminar en un
determinado perodo de tiempo.
Con estos valores, la optimizacin del flujo de trabajo consistir en la bsqueda de:
Minimizar el CycleTime
Maximizar el Throughput
Lograr una variabilidad mnima entre CycleTime y Throughput
Dicho todo esto, se puede decidir que implementando Kanban se consigue aumentar la eficiencia
en los procesos, evitar retrasos y no desaprovechar recursos, reduccin de tiempos muertos en y entre
procesos, mejor mantenimiento, informacin ms rpida y precisa, minimizacin de entregas con
errores y evitar sobrecarga de trabajo.
La metodologa gil FDD, con sus siglas en ingls Feature Driven Development, fue impulsada por
Jeff de Luca y Meter Coad en los aos 80.
Como las otras metodologas adaptables, se enfoca en iteraciones cortas que entregan
funcionalidad tangible. Dicho enfoque no hace nfasis en la obtencin de los requerimientos sino en
cmo se realizan las fases de diseo y construccin. Sin embargo, fue diseado para trabajar con otras
actividades de desarrollo de software y no requiere la utilizacin de ningn modelo de proceso
especfico. Hace nfasis en aspectos de calidad durante todo el proceso e incluye un monitoreo
permanente del avance del proyecto. Al contrario de otras metodologas, FDD promete ser
conveniente para el desarrollo de sistemas crticos y est orientada a equipos de trabajo ms grandes,
con ms personas que aquellos a los que normalmente se aplican otras metodologas como Scrum.
Define claramente entregas tangibles y formas de evaluacin del progreso del proyecto. No hace
nfasis en la obtencin de los requerimientos sino en cmo se realizan las fases de diseo y
construccin.
FDD se basa en un ciclo muy corto de iteracin, nunca superior a dos semanas, y en el que el
anlisis y los desarrollos estn orientados a cumplir una lista de Features que tiene que tener el
software a desarrollar.
94 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Debe ser simple y poco costosa de desarrollar, de entre uno y diez das.
Debe aportar valor al cliente y ser relevante para su negocio.
Debe poderse expresar en trminos de accin, resultado y objeto.
Ventajas
El equipo de desarrollo no malgasta el tiempo y dinero del cliente desarrollando soluciones
innecesariamente generales y complejas que en realidad no son un requisito del cliente.
Cada componente del producto final ha sido probado y satisface los requerimientos.
Rpida respuesta a cambios de requisitos a lo largo del desarrollo.
Entrega continua y en plazos cortos de software funcional.
Trabajo conjunto entre el cliente y el equipo de desarrollo.
Minimiza los costos frente a cambios.
Importancia de la simplicidad, al eliminar el trabajo innecesario.
Atencin continua a la excelencia tcnica y al buen diseo.
Mejora continua de los procesos y el equipo de desarrollo.
Evita malentendidos de requerimientos entre el cliente y el equipo.
Desventajas
Falta de documentacin del diseo. El cdigo no puede tomarse como una documentacin. En
sistemas de tamao grande se necesita leer los cientos o miles de pginas del listado de cdigo
fuente.
Problemas derivados de la comunicacin oral. Este tipo de comunicacin resulta difcil de
preservar cuando pasa el tiempo y est sujeta a muchas ambigedades.
Fuerte dependencia de las personas. Como se evita en lo posible la documentacin y los
diseos convencionales, los proyectos giles dependen crticamente de las personas.
Falta de reusabilidad. La falta de documentacin hacen difcil que pueda reutilizarse el cdigo
gil.
95 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Esta metodologa parte de la idea de que las necesidades del cliente son siempre cambiantes
durante el desarrollo del proyecto y posteriormente a su entrega.
Esta tcnica fue desarrollada por Jim Highsmith y Sam Bayer a comienzos de los 90. La novedad
de esta metodologa es que en realidad no es una metodologa de desarrollo de software, sino un
mtodo/tcnica, a travs del cual inculcar una cultura adaptativa a la empresa para adaptarse al
cambio y no luchar contra l. En ella no hay un ciclo de vida esttico (planear-disear-construir), si no
que ofrece un ciclo de vida iterativo, donde cada ciclo puede ser modificado al tiempo que otro es
ejecutado (especular colaborar-aprender).
1) Iterativo.
2) Orientado a los componentes software ms que a las tareas.
3) Tolerante a los cambios.
4) Guiado por los riesgos.
5) La revisin de los componentes sirve para aprender de los errores y volver a iniciar el ciclo de
desarrollo.
El ciclo utilizado por ASD es conocido como: especular-colaborar-aprender, el cual est dedicado
a un constante aprendizaje y colaboracin entre desarrollador y cliente.
Especulacin
96 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Una primera fase de iniciacin para establecer los principales objetivos y metas del proyecto en su
conjunto y comprender las limitaciones (zonas de riesgo) con las que operar el proyecto.
En ASD se realizan estimaciones de tiempo sabiendo que pueden sufrir desviaciones. Sin embargo,
estas son necesarias para la correcta atencin de los trabajadores que se mueven dentro de plazos de
forma que puedan priorizar sus tareas. Se decide el nmero de iteraciones para consumir el proyecto,
prestando atencin a las caractersticas que pueden ser utilizadas por el cliente al final de la iteracin.
Son por tanto necesarios, marcar objetivos prioritarios dentro de las mismas iteraciones.
Estos pasos se puede volver a examinar varias veces antes de que el equipo y los clientes estn
satisfechos con el resultado.
Colaborar
Es la fase donde se centra la mayor parte del desarrollo manteniendo una componente cclica. Un
trabajo importante es la coordinacin que asegure que lo aprendido por un equipo se transmite al
resto y no tenga que volver a ser aprendido por los otros equipos.
Aprender
Esta ltima etapa termina con una serie de ciclos de colaboracin, su trabajo consiste en capturar
lo que se ha aprendido, tanto positivo como negativo. Es un elemento crtico para la eficacia de los
equipos.
Calidad del producto desde un punto de vista del cliente: es la nica medida legtima de xito,
pero adems, dentro de las metodologas giles, los clientes tienen un valor importante.
Calidad del producto desde un punto de vista de los desarrolladores: se trata de la evaluacin
de la calidad de los productos desde un punto de vista tcnico. Ejemplos de esto incluyen la
adhesin a las normas y objetivos conforme a la arquitectura.
La gestin del rendimiento: este es un proceso de evaluacin para ver lo que se ha aprendido
mediante el empleo de los procesos utilizados por el equipo.
Situacin del proyecto: como paso previo a la planificacin de la siguiente iteracin del
proyecto, es el punto de partida para la construccin de la siguiente serie de caractersticas.
97 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Ventajas
Se utiliza para poder aprender de los errores e iniciar nuevamente el ciclo de desarrollo.
Utiliza informacin disponible acerca de todos los cambios para poder mejorar el
comportamiento del software.
Promulga la colaboracin y la interaccin de personas.
Apunta hacia el Rapid Application Development (RAD), el cual enfatiza velocidad de desarrollo
para crear un producto de alta calidad, bajo mantenimiento involucrando al usuario lo ms
posible.
Desventajas
Los errores y cambios que no son detectados con anterioridad afectan la calidad del producto
y su costo total.
Ya que esta es una metodologa gil, no permite realizar procesos que son requeridos en las
metodologas tradicionales.
El desarrollo Lean es una adaptacin a los entornos de desarrollo de software, del mtodo de
produccin que desarroll Toyota, para equipos pequeos de programadores. Se fundamenta
principalmente en constituir un equipo fuerte y altamente preparado capaz de llevar a cabo cualquier
tarea en poco tiempo, legando todo a la eficacia y la cohesin de los componentes del equipo y
obviando los procesos y la burocracia que conlleva normalmente el tener un sistema de produccin
preestablecido.
La filosofa Lean consiste en tener un equipo muy preparado, altamente motivado y muy unido.
Los activos ms importantes a tener en cuenta cuando se est desarrollando un proyecto bajo Lean
Development no son el tiempo o el dinero que se est invirtiendo sino el grado de compromiso y, sobre
todo, cunto est aprendiendo el equipo. Se considera que cuanto ms hayan aprendido los miembros
del equipo y ms unidos se sientan, la cantidad de tiempo y dinero necesario para llevar a cabo los
desarrollos ser cada vez menor.
Comprendiendo esta prctica desde un punto de vista empresarial, se deber hacer una inversin
fuerte al principio para sostener a un equipo poco fogueado y trabajar en mejorar su compromiso con
la empresa y dotarles de experiencia, pero a medio plazo estos costes se reducirn y la productividad
subir, previendo a la larga un escenario en el que los costes de produccin se mantienen estables y la
productividad del equipo es extraordinaria.
Las ventajas que se derivan de tener un equipo muy slido son entonces evidentes y muy tiles en
el mundo del desarrollo de software. Se dispone de programadores que son capaces de analizar la
situacin, tomar decisiones correctas y llevarlas a cabo a una velocidad fuera de lo normal. Se puede
comenzar a desarrollar teniendo una vaga idea de cul es el objetivo final del proyecto e ir variando el
98 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
rumbo a la vez que se programa, posponiendo las decisiones importantes lo ms posible a medida que
se va disponiendo de datos estadsticos sobre la aceptacin del producto que se est desarrollando.
Es un mtodo de desarrollo gil muy eficaz para proyectos a medio plazo: se concibe una idea, se
programa y se lanza un prototipo que se ofrecen a un conjunto de personas para que lo prueben y
poder analizar su comportamiento. Una vez analizado, se toman decisiones, se vara el rumbo, se
desarrolla rpidamente y se repite el anlisis con un nuevo prototipo. Despus de una serie de
iteraciones, se obtendr un producto muy definido y que ha sido diseado especficamente para
cumplir el objetivo con el que fue concebido en funcin de las opiniones de los propios clientes finales.
Principios Lean
Ampliar el aprendizaje
El desarrollo de software es un proceso de aprendizaje continuo, a ello se le suman los retos de los
equipos de desarrollo y el tamao del producto final. El mejor enfoque para encarar una mejora en el
ambiente de desarrollo de software es ampliar el aprendizaje. La acumulacin de defectos debe
evitarse ejecutando las pruebas tan pronto como el cdigo est escrito en lugar de aadir ms
99 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
documentacin o planificacin detallada. Las distintas ideas podran ser probadas escribiendo cdigo
e integrndolo. El proceso de recopilacin de requisitos de usuarios podra simplificarse mediante la
presentacin de las pantallas de los usuarios finales para que estos puedan hacer sus aportes. El
proceso de aprendizaje es acelerado, con el uso de iteraciones cortas, cada una de ellas acompaada
de refactorizacin y sus pruebas de integracin.
Incrementando la retroalimentacin mediante reuniones cortas con los clientes se ayuda a
determinar la fase actual de desarrollo y se ajustan los esfuerzos para introducir mejoras en el futuro.
Durante las reuniones, tanto los clientes como el equipo de desarrollo, logran aprender sobre el
alcance del problema y buscan posibles soluciones para un mejor desarrollo. Por lo tanto, los clientes
comprenden mejor sus necesidades basndose en el resultado de los esfuerzos del desarrollo y los
desarrolladores aprenden a satisfacer mejor estas necesidades.
Otra idea para ampliar el aprendizaje es a travs de la integracin del cliente en el ambiente de
desarrollo para concentrar la comunicacin en las soluciones futuras y no en las soluciones posibles,
promoviendo as el nacimiento de la solucin a travs del dilogo con el cliente.
El desarrollo de software est siempre asociado con cierto grado de incertidumbre, los mejores
resultados se alcanzan con un enfoque basado en opciones por lo que se pueden retrasar las decisiones
tanto como sea posible hasta que stas se basen en hechos y no en suposiciones y pronsticos
inciertos. Cuanto ms complejo es un proyecto, ms capacidad para el cambio debe incluirse en ste,
as que debe permitirse el retraso de los compromisos importantes y cruciales. El enfoque iterativo
promueve este principio: la capacidad de adaptarse a los cambios y corregir los errores, ya que un
error podra ser muy costoso si se descubre despus de la liberacin del sistema.
Un enfoque de desarrollo de software gil puede llevarles opciones rpidamente a los clientes, lo
que implica, retrasar algunas decisiones cruciales hasta que los clientes hayan reconocido mejor sus
necesidades. Esto tambin permite la adaptacin tarda a los cambios y previene las costosas
decisiones delimitadas por la tecnologa. Esto no significa que no haya planificacin involucrada en el
proceso, por el contrario, las actividades de planificacin deben centrarse en las diferentes opciones y
se les adapta a la situacin actual; as como, se deben clarificar las situaciones confusas estableciendo
las pautas para una accin rpida.
Cuanto antes se entrega el producto final sin defectos considerables ms pronto se pueden recibir
comentarios y se incorporan en la siguiente iteracin. Cuanto ms cortas sean las iteraciones, mejor
es el aprendizaje y la comunicacin dentro del equipo. Sin velocidad, las decisiones no pueden ser
postergadas. La velocidad asegura el cumplimiento de las necesidades actuales del cliente y no lo que
ste requera para ayer. Esto les da la oportunidad de demorarse pensando lo que realmente
100 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
necesitan, hasta que adquieran un mejor conocimiento. Los clientes valoran la entrega rpida de un
producto de calidad.
La ideologa de produccin Just In Time podra aplicarse a programas de desarrollo, reconociendo
sus necesidades especficas y el ambiente. Lo anterior se logra mediante la presentacin de resultados,
la necesidad de dejar que el equipo se organizarse y dividiendo las tareas para lograr el resultado
necesario para una iteracin especfica.
Al principio, el cliente dispone los requisitos necesarios. Esto podra ser simplemente presentar los
requisitos en pequeas fichas o historias y los desarrolladores estimarn el tiempo necesario para la
aplicacin de cada tarjeta. As, la organizacin del trabajo cambia en sistema autopropulsado: cada
maana durante una reunin inicial cada miembro del equipo evala lo que se ha hecho ayer, lo que
hay que hacer hoy y maana y pregunta por cualquier nueva entrada necesaria de parte de sus colegas
o del cliente. Esto requiere la transparencia del proceso, que es tambin beneficioso para la
comunicacin del equipo.
Potenciar el equipo
Una creencia errnea es la de considerar a las personas como recursos. Las personas podran ser
los recursos desde el punto de vista de una hoja de datos estadsticos, pero en el desarrollo de
software, as como cualquier organizacin de negocios, las personas necesitan algo ms que la lista de
tareas y la seguridad de que no ser alterada durante la realizacin de las tareas. Las personas
necesitan motivacin y un propsito superior para el cual trabajar, un objetivo alcanzable dentro de la
realidad con la garanta de que el equipo puede elegir sus propios compromisos. Los desarrolladores
deberan tener acceso a los clientes; el jefe de equipo debe proporcionar apoyo y ayuda en situaciones
difciles, as como asegurarse de que el escepticismo no arruine el espritu de equipo.
Crear la integridad
101 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Los sistemas de software hoy en da no son simplemente la suma de sus partes, sino tambin el
producto de sus interacciones. Los defectos en el software tienden a acumularse durante el proceso
de desarrollo por medio de la descomposicin de las grandes tareas en pequeas tareas y de la
normalizacin de las diferentes etapas de desarrollo. Las causas reales de los defectos deben ser
encontradas y eliminadas. Cuanto ms grande sea el sistema, ms sern las organizaciones que
participan en su desarrollo y ms partes son las desarrolladas por diferentes equipos y mayor es la
importancia de tener bien definidas las relaciones entre los diferentes proveedores con el fin de
producir una buena interaccin entre los componentes del sistema.
Como se puede ver, Lean va ms all de ser un conjunto de tcnicas, hoy por hoy es una filosofa
de gestin empresarial por s misma, que promueve la comunicacin y la motivacin como base de su
aprendizaje para llevar a cabo proyectos chicos-medianos de manera exitosa.
Proceso Unificado de Desarrollo (RUP) es una metodologa de desarrollo de software que est
basado en componentes e interfaces bien definidas, y junto con el Lenguaje Unificado de Modelado
(UML), constituye la metodologa estndar ms utilizada para el anlisis, implementacin y
documentacin de sistemas orientados a objetos.
Es un proceso que puede especializarse para una gran variedad de sistemas de software, en
diferentes reas de aplicacin, diferentes tipos de organizaciones, diferentes niveles de aptitud y
diferentes tamaos de proyecto.
RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologas
adaptables al contexto y necesidades de cada organizacin.
Es el resultado de varios aos de desarrollo y uso prctico en el que se han unificado tcnicas de
desarrollo, a travs del UML, y trabajo de muchas metodologas utilizadas por los clientes. La versin
que se ha estandarizado vio la luz en 1998 y se conoci en sus inicios como Proceso Unificado de
Rational 5.0, de ah las siglas con las que se identifica a este proceso de desarrollo.
Principales Elementos
102 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Artefactos: productos tangibles del proyecto que son producidos, modificados y usados
por las actividades. Pueden ser modelos, elementos dentro del modelo, cdigo fuente y
ejecutables.
Flujo de actividades: secuencia de actividades realizadas por trabajadores y que produce
un resultado de valor observable.
Principales ventajas:
Los casos de uso reflejan lo que los usuarios futuros necesitan y desean, lo cual se capta cuando
se modela el negocio y se representa a travs de los requerimientos. A partir de aqu los casos de uso
guan el proceso de desarrollo ya que los modelos que se obtienen, como resultado de los diferentes
flujos de trabajo, representan la realizacin de los casos de uso (cmo se llevan a cabo).
Centrado en la arquitectura
La arquitectura muestra la visin comn del sistema completo en la que el equipo de proyecto y
los usuarios deben estar de acuerdo, por lo que describe los elementos del modelo que son ms
importantes para su construccin, los cimientos del sistema que son necesarios como base para
comprenderlo, desarrollarlo y producirlo econmicamente. RUP se desarrolla mediante iteraciones,
comenzando por los casos de uso relevantes desde el punto de vista de la arquitectura. El modelo de
arquitectura se representa a travs de vistas en las que se incluyen los diagramas de UML.
103 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Iterativo e Incremental
Una iteracin involucra actividades de todos los flujos de trabajo, aunque desarrolla
fundamentalmente algunos ms que otros.
Por ejemplo, una iteracin de elaboracin centra su atencin en el anlisis y diseo, aunque refina
los requerimientos y obtiene un producto con un determinado nivel, pero que ir creciendo
incrementalmente en cada iteracin.
Es prctico dividir el trabajo en partes ms pequeas o miniproyectos. Cada miniproyecto es una
iteracin que resulta en un incremento. Las iteraciones hacen referencia a pasos en los flujos de
trabajo, y los incrementos, al crecimiento del producto. Cada iteracin se realiza de forma planificada
es por eso que se dice que son miniproyectos.
Modelo del Negocio: describe los procesos de negocio, identificando quines participan y las
actividades que requieren automatizacin.
Requerimiento: define qu es lo que el sistema debe hacer, para lo cual se identifican las
funcionalidades requeridas y las restricciones que se imponen.
104 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Anlisis y Diseo: describe cmo el sistema ser realizado a partir de la funcionalidad prevista
y las restricciones impuestas (requerimientos), por lo que indica con precisin lo que se debe
programar.
Implementacin: define cmo se organizan las clases y objetos en componentes, cules nodos
se utilizarn y la ubicacin en ellos de los componentes y la estructura de capas de la
aplicacin.
Prueba (Testing): busca los defectos a lo largo del ciclo de vida.
Instalacin: el sistema se pone en marcha en produccin (se libera al cliente y usuario final) y
se realizan actividades (empaque, instalacin, asistencia a usuarios, etc.) para entregar el
software a los usuarios finales.
Administracin del proyecto: involucra actividades con las que se busca producir un producto
que satisfaga las necesidades de los clientes.
Administracin de configuracin y cambios: describe cmo controlar los elementos producidos
por todos los integrantes del equipo de proyecto en cuanto a utilizacin/actualizacin
concurrente de elementos, control de versiones, etc.
Ambiente: contiene actividades que describen los procesos y herramientas que soportarn el
equipo de trabajo del proyecto; as como el procedimiento para implementar el proceso en
una organizacin.
Algunos aspectos que diferencian a RUP de las dems metodologas y lo que lo hace nico es que
en RUP, los casos de uso no son slo una herramienta para especificar los requisitos del sistema, sino
que tambin guan su diseo, implementacin y prueba. Los casos de uso constituyen un elemento
integrador y una gua del trabajo.
Adems de utilizar los casos de uso para guiar el proceso, se presta especial atencin al
establecimiento temprano de una buena arquitectura que no se vea fuertemente impactada ante
cambios posteriores durante la construccin y el mantenimiento. Tambin este propone que cada fase
se desarrolle en iteraciones.
105 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Cmo hace una organizacin para implementar algo que nunca ha desarrollado antes, para un
cliente que nunca lo ha utilizado anteriormente, para miembros de un equipo sin experiencia alguna y
para usuarios finales que nunca la haban sentido nombrar?. Esa es la pregunta que se plante Scott
Granieri, proyect manager de la empresa Tantus Technologies, cuando se dispusieron a explorar como
hacerle frente a un determinado componente del plan estratgico de un cliente federal. El siguiente
documento detalla la experiencia interna de cmo se implement Agile, sin contratar personal
capacitado en esta nueva metodologa y como se capacito al personal, clientes y usuarios finales
debido a las limitaciones presupuestarias.
El cliente, en 2011, decidi incorporar Agile como metodologa de trabajo debido a las tendencias
de la industria y del sector, tanto pblico como privado, en ese momento.
Las empresas de productos, as como los proveedores de servicios estaban adoptando esta nueva
metodologa de trabajo de manera exponencial, incluso las empresas de desarrollo de software ms
tradicionales, haban reconocido este movimiento metodolgico que sacuda la industria del software.
Para Tantus Technologies, el desafo de implementar un enfoque gil sobre el programa actual, era
complejo. Se enfrentaban a numerosos obstculos al intentar ayudar al cliente a alcanzar el objetivo
estratgico de incorporar un desarrollo gil de software.
La implementacin de prcticas agiles y la creacin de una cultura gil fue un gran desafo para la
organizacin; sin embargo se identificaron las tres categoras especficas de los desafos que tuvieron
que superar para lograr el xito: organizacin, cultural y personal.
Retos organizacionales
106 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Retos culturales
Se puso en marcha la implementacin de una metodologia gil sobre una organizacin con una
larga historia de desarrollo en casada. El programa haba madurado los procesos a lo largo de los aos,
tomando un gran esfuerzo para lograr CMMI y la impresa en el equipo de una cultura de xito a travs
de la conformidad con los procesos. Muchas de las lecciones aprendidas de las victorias del pasando,
deberan ser desafiadas y/o reemplazadas por un nuevo entorno de trabajo gil que incluira lo
siguiente:
En un entorno gil, el tringulo tradicional de prioridades est a la inversa. Lo que una vez fue fijo
(alcance) se convierte en una variable, y las que eran tradicionalmente variables (recursos y tiempo)
se convierten en fijos. Cuando se empez a desarrollar la capacidad gil, no se saba cmo el equipo
lder de programacin iba a reaccionar a este nuevo enfoque de estimacin, especialmente despus
de poner tanto esfuerzo en crear sistemas para identificar y gestionar los horarios y los sobre costos.
Gestin vs liderazgo
Gran parte de la cultura y la estructura organizativa del sistema federal fue construido sobre
cimientos de la visin tradicional de cascada para la gestin de proyectos. Al igual que al reto sobre la
gestin de los horarios y al costo de estimacin, no se saba cmo esta cultura altamente estructurada
y tradicional se adaptara a la naturaleza ms dinmica de requerimientos, diseos y productos de
trabajo final producidos en un ambiente gil. Equipos autodirigidos y un entorno de constante cambio
eran conceptos extraos y potencialmente riesgosos para la jerarqua de la organizacin.
Tanto el personal de trabajo de la compaa como el personal del cliente, mostraban una escasez
de conocimientos en un entorno gil, lo que dificultaba el xito a tiempo del proyecto. Debido a esto,
en su momento se pens en contratar personal capacitado para poder enfrentar estos problemas de
experiencia, pero debido a limitaciones presupuestarias, se descartaron dichas opciones.
CMMI: Capability Maturity Model Integration es un modelo para la mejora y evaluacin de procesos para el desarrollo,
mantenimiento y operacin de sistemas de software.
107 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
La solucin
En apoyo para el objetivo estratgico de una implementacin gil, se desarroll y ejecuto un plan
de accin gil. Los componentes claves fueron los siguientes:
Luego de un largo y duro ao de aprendizaje, el proyecto se pudo llevar a cabo con xito.
Lecciones aprendidas
Los principales resultados y factores claves de xito derivados de la experiencia que tuvo Tantus
Technologies son los siguientes:
108 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Es cierto que el punto principal de aplicar una metodologia gil consiste en eliminar las
herramientas burocrticas de trabajo e implementar la comunicacin entre las personas del equipo
pero, sin embargo, siempre es necesario una herramienta de gestin de este tipo.
2. Spotify
Existen muchsimas compaas que desarrollan software de una forma gil y exitosa. Google, por
ejemplo, cuenta con 15.000 desarrolladores trabajando en una rama del cdigo. Lanzan cambios varias
veces al da y realizan 75 millones de tests automticos diariamente.
Una empresa que ha sabido adaptarse perfectamente a las metodologas giles es Spotify, haciendo
especial hincapi en la figura del Scrum Master. Muchas veces contratan un Agile Coach externo con
una gran experiencia en el campo para liderar los proyectos. Vemos aqu la importancia de contar con
roles especializados que conozcan las metodologas giles para llevar un proyecto de este tipo al xito.
Ya no solo el Scrum Master, sino tambin otros roles como el Product Owner, responsable de entender
al cliente y al usuario para saber trasladar en tiempo y forma la informacin adecuada al equipo de
desarrollo.
Spotify es consciente de la metodologa de trabajo de su competencia (Google o Apple por
ejemplo), por lo que decidieron acercarse al Scrum de forma muy sistemtica. Compitiendo contra
semejantes corporaciones, saban que en cualquier momento podran ser derrotados a menos que
fuesen ms rpidos, ms baratos y mejores.
En Spotify los equipos se organizan por escuadrones (squads), pequeos equipos de Scrum con la
habilidad de implementar el software desarrollado al final de cada sprint, sin romper ningn otro
equipo. Una caracterstica curiosa del funcionamiento de Spotify es que cada uno de estos pequeos
grupos tiene una parte del producto que es totalmente suyo. Despus crean tribus (tribes) agregando
distintos escuadrones.
Aun as, Spotify necesita implementar, cambiar y actualizar su cdigo constantemente sin romper
nada ms. Para ello es necesaria una buena coordinacin central de la compaa.
Para ser rpido tambin es necesario deshacerse de todas aquellas partes del proceso que
entorpezcan el avance. En Spotify, por ejemplo, contaban con un equipo de operaciones que se
encargada de las implementaciones, pero el funcionamiento era demasiado lento. Por eso
decidieron eliminar esta fase y hacer que los propios desarrolladores implementasen sus trabajos.
Cada vez son ms las empresas que operan en el mundo digital y necesitan optimizar sus procesos
al mximo para asegurarse la primera posicin en el mercado. Es por ello que las metodologas giles
como el Scrum estn adquiriendo una importancia especial dentro de las organizaciones y los
profesionales especializados en la gestin de este tipo de proyectos son cada vez ms demandados.
109 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
1. Healthcare
Healthcare es un proyecto del gobierno americano diseado para ofrecer toda la informacin y
transparencia sobre el mercado de los seguros sanitarios, para que los consumidores puedan
asegurarse de obtener el mejor valor. Jeff Sutherland, cocreador de Scrum, lo cita como ejemplo de
mala gestin de un proyecto Scrum.
Las principales causas del fracaso en el desarrollo de Healthcare fueron la falta de coordinacin
entre el Front End y el Back End, la falta de liderazgo en un proyecto con ms de 20 consultoras
implicadas y no haber lanzado el proyecto fase a fase sin testeo ni aprendizaje de por medio, haciendo
que fuese imposible detectar las fases que s funcionaban y las que no.
Segn Jeff Sutherlands, el fracaso de este proyecto no debera sorprendernos tanto ya que se trata
de un proyecto de desarrollo en cascada, y afirma que el 86% de este tipo de proyectos suelen acabar
en fracaso.
Tras trabajar en el desarrollo durante varios aos, slo se tuvieron seis das para testear la
aplicacin debido a las presiones para el inminente lanzamiento. Es de entender que con tan corto
periodo de testing el proyecto no saliese bien lo que provoco que, aunque el equipo del Back End
realmente trabaj como un proyecto gil y en unos meses ya haban terminado su trabajo, el error
estuvo en no respetar el segundo principio del manifiesto Agile de aceptacin del cambio: Aceptamos
que los requisitos cambien, incluso en etapas tardas del desarrollo. Los procesos giles aprovechan el
cambio para proporcionar ventaja competitiva al cliente. Por ms que se haya logrado el desarrollo,
no alcanz para su funcionamiento.
110 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
7. CONCLUSION
111 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
8. REFERENCIAS BIBLIOGRAFICAS
Amador Duran Toro, Beatriz Bernrdez Jimnez, Metodologa para el anlisis de de requisitos
de sistemas de software versin 2.2, Universidad de Sevilla, departamento de Lenguajes y
Sistemas informticos, escuela Tcnica superior de Ingeniera Informtica, Diciembre de 2001.
Roger S.Pressman. Ingeniera del Software: un enfoque prctico, de segunda edicin,
Editorial McGraw Hill. 1990.
Manuel Daz Rodrguez, Antonio Moa Gmez, Ingeniera de Software Especificacin,
Departamento de Lenguajes de Ciencias de la computacin, Universidad de Mlaga.
Bruce I. Blum, Software Engineering: A Holistic View.
Dorothy Graham, Erik Van Veenendaal, Isabel Evans y Rex Black, Foundations of Software
Testing - ISTQB Certification. 2007.
Duvall, Paul M., Continuous Integration. Improving Software Quality and Reducing Risk.
2007.
Hans Van Vliet, Software Engineering. Principles and Practice. Tercera edicin. 2002.
Ian Sommerville, Software Engineering. Sexta Edicin. 2001.
Ivar Jacobson, Grady Booch y James Rumbaugh, The Unified Software Development Process.
1999.
Kent Beck, Test-Driven Development by Example.
Kent Beck, Martin Fowler, Planning Extreme Programming. 2000.
Ken Schwaber, Mike Beedle, Agile Software Development with SCRUM. 2008.
Lawrence-Pfleeger y Shari, Software Engineering: Theory and Practice. 1998.
Mitchel H. Levine, Analyzing the Deliverables Produced in the Software Development Life
Cycle. 2000.
Pierre Bourque y Robert Dupuis, Guide to the Software Engineering Body of Knowledge.
2004.
Robert C. Martin, Agile Software Development, Principles, Patterns, and Practices.
Roger S. Pressman, Software Engineering. A practitioners Approach. Quinta Edicin. 2001.
Ron Burback, Software Engineering Methodology. 1998.
Tong Ka lok, Kent, Essential Skills for Agile Development.
Beck, K. Extreme Programming Explained: Embrace Change. Boston: Addison-Wesley. 2000.
Beck, K. Martin F. Planning Extreme Programming. Boston: Addison-Wesley. 2001.
Cans, J. H.; Letelier, P.; Penads, M. C. Metodologas giles en el desarrollo del software.
Valencia: Universidad de Valencia. 2004.
Cockburn, A. Agile Software Development. Boston: Addison-Wesley. 2001.
Cronin, G. Extreme Solo: A Case Study in Single Developer extreme Programming.
University of Auckland. 2003.
Highsmith, J. Agile Software Development Ecosystems. Boston: Addison-Wesley. 2002.
Reynoso, C. Mtodos heterodoxos en desarrollo del software. Buenos Aires: Universidad
de Buenos Aires. 2004.
112 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Salo, J. H.; Abrahamson, P.; Ronkainen, J.; Warsta, J. Agile Software Development. 2002.
Schwaber, K.; Beedle, M. Agile Software Development with Scrum. Nueva Jersey: Prentice
Hall. 2002.
Wake, W. C. Extreme Programming Explored. Boston: Addison-Wesley. 2002.
Boehm, Barry W., A Spiral Model of Software Development and Enhancement, IEEE
Computer, Vol.21, No 15, pp.61-72. Mayo 1988.
Martin, J., Rapid Application Development, Macmillan Inc., New York. 1991.
Beck, Kent, Extreme Programming Explained, Addison-Wesley the XP Series, 2000.
Alistair Cockburn. Balancing Lightness with Sufficiency. Septiembre 2000.
Prez S. Jess, Metodologas giles: La ventaja competitiva de estar preparado para tomar
decisiones lo ms tarde posible y cambiarlas en cualquier momento. Artculo de Agile Spain.
Grupo ISSI, Metodologas giles en el Desarrollo de Software, Artculo de Grupo ISSI
Noviembre 2003.
Acebal F.Csar, Cueva L. Juan, EXtreme Programming (XP): un nuevo mtodo de desarrollo
de software, Articulo de Novtica.
Letelier P., Penads C., Metodologas giles para el desarrollo de Software: eXtreme
Programming (XP), Universidad Politcnica de Valencia.
Shenone M. Hernn, Diseo de una metodologa gil de Desarrollo de Software, Tesis de
Grado en Ingeniera en Informtica, Universidad de Buenos Aires.
Pgina de Microsoft: MSDN en Espaol, Mtodos Heterodoxos en Desarrollo de Software,
Artculo de Carlos Reynoso Universidad de Buenos Aires, Abril del 2004.
113 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
Sitios web
http://www.agile-spain.com
http://www.agilealliance.org
http://www.ieee.org/portal/site
http://www.agilemanifesto.org
Sitio web de la Organizacin Internacional para la Estandarizacin www.iso.org
http://www.swebok.org
http://www.rena.edu.ve/cuartaEtapa/Informatica/Tema11.html
http://www.inf-cr.uclm.es/www/mpolo/asig/0708/phd/apuntesDoctorado.pdf
http://audiemangt.blogspot.mx/2010/04/metodologia-clasica-en-cascada.html
http://www.agiles.org/agiles-parana
http://www.proyectosagiles.org/
https://www.softeng.es/es-es/empresa/metodologias-de-trabajo/metodologia-scrum.html
http://leansoftwareengineering.com/
http://www.projectperfect.com.au/downloads/Info/info_lean_development.pdf
http://www.poppendieck.com/
http://es.wikipedia.org/wiki/Desarrollo_%C3%A1gil_de_software
http://www.agileshift.cl/Tutorial/DesarrolloAgilParte2.pdf
http://www.willydev.net/descargas/prev/TodoAgil.pdf
http://ingenieriadesoftware.mex.tl/61162_FDD.html
https://agilidaddeldesarrollo.wordpress.com/2012/12/02/adaptive-software-development-
asd/
http://www.microsoft.com/spanish/msdn/arquitectura/roadmap_arq/heterodox.asp#12
http://www.enterprisexp.org
http://www.dsdm.org
https://www.scrumalliance.org/community/articles/2013/november/success-story-
sometimes-it-just-may-take-a-waterfa
http://comunidad.iebschool.com/iebs/agile-scrum/exitos-y-fracasos-en-proyectos-scrum-
spotify-vs-healthcare/
114 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
9. APENDICE
115 | P g i n a
Metodologas de Desarrollo de Software
Tesis Final Ctedra: Seminario de Sistemas
Carrera: Licenciatura en Sistemas y Computacin
______________________________________________________________________
116 | P g i n a