Métodos Heterodoxos en Desarrollo de Software
Acceso en:
http://www.microsoft.com/spanish/msdn/arquitectura/roadmap_arq/heterod
ox.asp
Resumen:
Introducción
Los métodos Ágiles, tales como Lean Development, eXtreme Programming
y Adaptive Software Development, son estrategias de desarrollo de
software que promueven prácticas que son adaptativas en vez de
predictivas, centradas en la gente o en los equipos, iterativas,
orientadas hacia prestaciones y hacia la entrega, de comunicación
intensiva, y que requieren que el negocio se involucre en forma
directa. Comparando esos atributos con los principios fundacionales
de MSF, se encuentra que MSF y las metodologías ágiles están muy
alineadas tanto en los principios como en las prácticas para el
desarrollo de software en ambientes que requieren un alto grado de
adaptabilidad. - Documentación de Microsoft Solutions Framework 3.0 []
Ni duda cabe que a finales de la década de 1990 dos grandes temas
irrumpieron en las prácticas de la ingeniería de software y en los
métodos de desarrollo: el diseño basado en patrones y los métodos
ágiles. De estos últimos, el más resonante ha sido la Programación
Extrema (XP), que algunos consideran una innovación extraordinaria y
otros creen cínica, extremista , falaz o perniciosa para la salud de
la profesión . Patrones y XP se convirtieron de inmediato en hypes de
discusión masiva en la industria y de fuerte presencia en la Red. Al
primero de esos temas el mundo académico lo está tratando como un
asunto respetable desde hace un tiempo; el otro recién ahora se está
legitimando como tópico serio de investigación. La mayor parte de los
documentos proviene todavía de los practicantes, los críticos y los
consultores que impulsan o rechazan sus postulados. Pero el
crecimiento de los métodos ágiles y su penetración ocurre a un ritmo
pocas veces visto en la industria: en tres o cuatro años, según el
Cutter Consortium, el 50% de las empresas define como "ágiles" más de
la mitad de los métodos empleados en sus proyectos [].
Los métodos ágiles (en adelante MAs) constituyen un movimiento
heterodoxo que confronta con las metodologías consagradas, acordadas
en organismos y apreciadas por consultores, analistas de industria y
corporaciones. Contra semejante adversario, los MAs se expresaron a
través de manifiestos y libros en tono de proclama, rehuyendo (hasta
hace poco) toda especificación formal. El efecto mediático de esos
manifiestos ha sido explosivo y ocasionó que la contienda entre ambas
formas haya sido y siga siendo enconada. Lejos de la frialdad
burocrática que caracteriza a las crónicas de los argumentos
ortodoxos, se ha tornado común referirse a sus polémicas invocando
metáforas bélicas y apocalípticas que hablan de "la batalla de los
gurúes" [], "el gran debate de las metodologías" [], "las guerras
religiosas", "el fin del mundo" [], un "choque cultural" [], "la
venganza de los programadores" [] o "la muerte del diseño" [].
Lo que los MAs tienen en común (y lo que de aquí en más obrará como
una definición de los mismos) es su modelo de desarrollo incremental
(pequeñas entregas con ciclos rápidos), cooperativo (desarrolladores
y usuarios trabajan juntos en estrecha comunicación), directo (el
método es simple y fácil de aprender) y adaptativo (capaz de
incorporar los cambios). Las claves de los MAs son la velocidad y la
simplicidad. De acuerdo con ello, los equipos de trabajo se
concentran en obtener lo antes posible una pieza útil que implemente
sólo lo que sea más urgente; de inmediato requieren feedback de lo
que han hecho y lo tienen muy en cuenta. Luego prosiguen con ciclos
igualmente breves, desarrollando de manera incremental.
Estructuralmente, los MAs se asemejan a los RADs (desarrollo rápido
de aplicaciones) más clásicos y a otros modelos iterativos, pero sus
énfasis son distintivos y su combinación de ideas es única.
Si hubo una sublevación no fue inmotivada. Diversos estudios habían
revelado que la práctica metodológica fuerte, con sus exigencias de
planeamiento y sus técnicas de control, en muchos casos no brindaba
resultados que estuvieran a la altura de sus costos en tiempo,
complejidad y dinero. Investigaciones como la de Joe Nandhakumar y
David Avison [], en un trabajo de campo sobre "la ficción del
desarrollo metodológico", denunciaban que las metodologías clásicas
de sistemas de información "se tratan primariamente como una ficción
necesaria para presentar una imagen de control o para proporcionar
estatus simbólico" y que dichas metodologías son demasiado ideales,
rígidas y mecanicistas para ser utilizadas al pie de la letra. Duane
Truex, Richard Baskerville y Julie Travis [] toman una posición aún
más extrema y aseguran que es posible que los métodos tradicionales
sean "meramente ideales inalcanzables y `hombres de paja' hipotéticos
que proporcionan guía normativa en situaciones de desarrollo
utópicas". En su reclamo de un desarrollo a-metódico, consideran que
las metodologías estándares se basan en una fijación de objetivos
pasada de moda e incorrecta y que la obsesión de los ingenieros con
los métodos puede ser inhibidora de una adecuada implementación,
tanto a nivel de sistemas como en el plano de negocios.
Pero también hay cientos de casos documentados de éxitos logrados con
metodologías rigurosas. En ocasiones, el entusiasmo de los promotores
de las revueltas parece poco profesional, como si su programa de
crítica, muchas veces bien fundado, fuera de mayor importancia que su
contribución positiva. También ellas, sin embargo, tienen su buen
catálogo de triunfos. Algunos nombres respetados (Martin Fowler con
el respaldo de Cutter Consortium, Dee Hock con su visión caórdica,
Philippe Kruchten con su RUP adaptado a los tiempos que corren) e
incluso Ivar Jacobson [] consideran que los MAs constituyen un aporte
que no sería sensato dejar de lado. No habría que tratarlo entonces
como si fuera el capricho pasajero de unos pocos hackers que han
leído más arengas posmodernas de lo aconsejable.
En este documento se presentará una breve reseña de los MAs junto con
una descripción sucinta de la situación y las tendencias actuales. No
se pretende que el texto brinde una orientación operativa ni tampoco
una evaluación de los métodos; se trata sólo de una visión de
conjunto que tal vez ayude a comprender una de las alternativas
existentes en la organización del proceso de desarrollo. Se ha
procurado mantener una distancia crítica; no se encontrarán aquí las
expresiones que suelen proliferar en los textos y en la Red en las
que se "define" a XP afirmando que es "un conjunto de valores,
principios y prácticas para el desarrollo rápido de software de alta
calidad que proporciona el valor más alto para el cliente en el menor
tiempo posible". No es que la postura de este estudio sea
equidistante, como procuran serlo, por ejemplo, los exámenes de
Robert Glass [] o Barry Boehm []; sencillamente, la presente es una
introducción analítica y no una tabla de evaluación.
Se podrá advertir en el cuerpo de este texto que las referencias
comparativas y contextuales a los MAs apuntan muchas más veces a la
ingeniería de software que a la arquitectura; la razón es que la
elaboración metodológica de la arquitectura es reciente y se está
formulando en el SEI y en otros organismos contemporáneamente al
desarrollo de los MAs. Recién ahora, en otras palabras, la
arquitectura de software está elaborando sus metodologías para el
ciclo de vida; si éstas se asemejan más a las ágiles que a las
ortodoxas es una pregunta importante que se habrá de responderse en
documentos separados.
Una vez más, se examinará con detenimiento la relación de
concordancia y complementariedad entre los métodos ágiles y los
principios que articulan Microsoft Solutions Framework (MSF), un tema
sustancial al que se ha dedicado una sección específica [pág. 55].
También se ha incluido un capítulo sobre el uso de patrones en MAs y
otro sobre la respuesta crítica de la comunidad metodológica frente
al avance arrollador de los nuevos métodos []. Otros documentos de
esta serie detallarán algunos aspectos que aquí se desarrollan
concisamente, tales como la relación entre los métodos ágiles con el
paradigma de las ciencias de la complejidad y el caos.