Craig Larman Jefe Cientfico, Valtech EE.UU. craig@craiglarman.com Philippe Kruchten Fellow Racional, Rational Software Canad pbk@rational.com Kurt Bittner Gerencia General Manager, Procesos y Proyectos Unidad de Negocio, Rational Software kbittner@rational.com
Resumen: El Proceso Racional Unificado constituye un marco til para abordar el negocio del desarrollo de software. Como marco de referencia, sin embargo, debe adaptarse a las necesidades de cada equipo de proyecto y sus circ unstancias, sino que est destinada a ser aplicada en una luz y el estilo gil, y no se ha adoptado como un proceso de una sola talla para todos. Este artculo comparte una serie de errores comunes que experimentan los equipos que intentan adaptar el Rational Unified Process para sus ne cesidades, presentado con un poco de la lengua en la mejilla.
El Rational Unified Process (RUP ) [1] [2] se ha convertido en un popular estndar de facto desarrollo moderno de software de procesos que sentimos con buena razn. Combina las mejores prcticas reconocidas como de adaptaci n, iterativo y el desarrollo impulsado por riesgo, ha sido desarrollado por los lderes de clase mundial con experiencia tanto en el desarrollo de sistemas pequeos y grandes, es flexible en su aplicacin y ampliacin, y se h a documentado en forma coherente tanto impresin y el producto en lnea RUP. Sin embargo, hay factores que inhiben la adopcin exitosa de las RUP, dando lugar a mucho menos que los resultados ptimos. Hay patrones en estos fracasos si desea aprender de ellos, para lo cual, si su objetivo es el fracaso espectacular con el RUP, le recomendamos los siguientes pasos.
1/14
Este es un ejemplo de una relacin lineal, secuencial cascada ciclo de vida, y es la primera estrategia, el mejor, y el ms comn para el fracaso RUP total. Si el proceso se siente algo como lo anterior, usted sabe que no s e han adoptado con xito el RUP. Se ha argumentado [3] que el ciclo de vida de cascada como se haba previsto no dara lugar al grado de fracaso que ha engendrado, y es ms bien debido a un malentendido que se ha aplicado torpemente. Buen punto, pero estamos hablando de la cascada como es comnmente aplicado o mal aplicado hoy. Con respecto a los niveles de falla, tenga en cuenta que un anlisis del xito del proyecto y el fracaso en 1994 [4], cuando la mayor parte del desarrollo fue puramente ad hoc o sobre la base de las prcticas Proceso en Casca da (como hoy, diramos), que se estima que slo el 70% del software proyectos fueron terminados, que ms del 50% del costo de por lo menos el doble de su estimacin original, y que 81 mil millones dlares EE.UU. se destinaron a proyectos cancelados en los EE.UU. solamente. Este es un tipo de problema extraordinario, lo de siempre no funciona. Para su crdito, el Departamento de Defensa de EE.UU., un importante contratista de servicios de desarrollo de software, que originalmente promovieron procesos de cascada y actitudes, al observar tanto fracaso con el enfoque, no slo ha cado este requisito (retirado en 1988 en STD-2167A) , pero en un informe de 1994 empez a animar activamente ms modernos ciclos de vida iterativos para reemplazar la cascada [5]. Sin embargo, la inercia es un problema y no queda superposicin de actitudes en cascada a los proyectos: Felicidades, el Departamento de Defensa se utilizar un proceso iterativo para este proyecto. Ahora, el primer paso: Por favor, enve los requisitos completos para que podamos firmar con ellos. Entonces vamos a concretar el diseo, ... Los procesos inspirados en cascada, eran una reaccin a la dcada de 1960 antes de enfoques ad hoc para el desarrollo de software. A diferencia de la anterior falta de estructura, fue una respuesta racional y, de hecho, los m todos de cascada de esta poca fueron llamados estructurada para enfatizar este punto. El enfoque se inspir, como suele ser el caso en las nuevas fronteras-de lo que fue conocido y familiar, es decir, fro m ingeniera y con struccin en otros mbitos, como la construccin-do con los requisitos, a continuacin, hacer el diseo, y luego construir. Lamentablemente, el enfoque fue adoptado y enseado sin la investigacin crtica sobre su idoneidad p ara el verdadero desarrollo de software, y varias generaciones de estudiantes y educadores simplemente aprende y repite el consejo. Algunas cosas deben ser construidas como edificios, como, bueno ... edificios. Sin embargo, resulta que el software no es generalmente uno de ellos . Hay un nmero de razones para esto. La ms convincente es la suposicin errnea de que la mayora de los requisitos se pueden definir en la primera fase del proyecto. La investigacin deconstruir el mito incluye obras de Cape rs Jones [6]. Como se ilustra en la Figura 1, en este estudio muy grande de 6.700 proyectos, arrastrndose los requisitos-no prev cerca de la puesta son un hecho muy importante de la vida de desarrollo de software, que van desde alrededor de 25% en proyectos de promedio de hasta 50% en las grandes . Boehm y Papaccio presentan similares basadas en la investigacin conclusiones en [7].
2/14
Actitudes cascada, que lucha en contra (o, simplemente, negar) este hecho al asumir los requisitos y los diseos pueden-con el suficiente esfuerzo y habilidad-se ha especificado correctamente y congelados, son absolutamente i . Hay varias razones para esta falta de habilidad en el desarrollo de software de precisar los requisitos antes de diseo e implementacin. Ellos incluyen: o La flexibilidad sin precedentes y las opciones disponibles para el software ; fuerzas o psicolgicas y organizativas que impiden aprovechar en su totalidad, precisa y adecuada especulativamente definir un sistema de software (sin adaptacin ciclos de retroalimentacin), o Los idiomas imprecisas de espe ; o diseos imperfectos e implementaciones ; o que cambian rpidamente las fuerzas del mercado, que motivan cambios, etc . Cualesquiera que sean las razones, la respuesta no es hbil para combatir el cambio y esforzarse ms para precisar los requisitos abajo (al igual que la respuesta de cascada), sino ms bien, como Kent Beck ha sugestivamente lo expres [8], para aceptar el cambio como motor central en el proceso. Por consiguiente, en el RUP, el desarrollo procede lugar a travs de una serie de iteraciones, cada uno de los cuales es timeboxed para una duracin fija (por ejemplo, exactamente cuatro semanas), y que termina en una versi n estable interna de un subconjunto del sistema final. Timeboxing es un concepto clave en el desarrollo iterativo: se trata de fijar la fecha de finalizacin de la iteracin, y normalmente no permiten el deslizamiento de lafecha. Si todos los objetivos no se pueden cumplir, requisitos se eliminan de la iteracin, en lugar de ampliar la duracin de iteracin. Dentro de una iteracin, hay algo as como un miniwaterfall. Un pequeo conjunto de requisitos es elegido y analizado con ms detalle (tal vez priorizadas por riesgo alto valor o de negocios); unos das se gastan en diseo, y luego el equipo se enciende rpidamente implementacin, integracin y pruebas de sistema realista y el estrs de una parte de el sistema. Al final de cada iteracin los resultados en un sistema en
Copyright Valtech Technologies & Rational Software, 2001
3/14
ejecucin parcial, que gene ra retroalimentacin, que conduce a la adaptacin de los requisitos y de diseo en las versiones futuras. Con el tiempo, estos retroalimentacin adaptacin ciclos iterativos revelar una serie adecuada de las necesidades y un diseo robusto, probado y ejecucin. Tenga en cuenta que un enfoque en cascada secuencial se aplica a la escala de semanas, no meses o aos,
y que no existe un mecanismo integrado para la retroalimentacin y adaptacin. En la escala de tiempo de algunas semanas, un ciclo de vida secuencial puede trabajar, sin embargo, se descompone a medida que aumenta la longitud . Dado que la realidad es que los requerimientos cambian durante el diseo e implementacinsignificativamente-las pospone modelo de cascada que se ocupan de este riesgo importante (y por lo tanto la realidad) hasta el final de l ciclo de vida, a menudo hasta que es demasiado tarde para hacer algo al respecto. Un proyecto cascada ciclo de vida puede ser tan propenso a error ya que los anteriores enfoques ad hoc que reemplaz, pero va sobre l de una manera ms ordenada (el proyecto puede estar en el camino correcto hacia arriba hasta que un fallo catastrfico). Sin embargo, debido a la supuesta falta de una alternativa lgica, muchas personas han sentido que no han teni do ms remedio que seguir utilizando un modelo basado en suposiciones errneas. Las organizaciones se han habituado a la f obvio en cursoailures o dificultades en el desarrollo de software que se basa en los principios de laia son en primer lugar, hay empresas de consultora, directores, maestros y escritores que promueven el ciclo de vida de cascada o actitudes sulting companies, managers, teachers, and writers who promote the waterfall lifecycle or attitudes como hbil, lo cual es lamentable. Por lo tanto, el pensamiento cascada impregna nuestras creencias de desarrollo de manera sistmica y sutil a veces, y como consecuencia de ello, es especialmente comn entre los adoptantes RUP para superponer los valores y pr . Para ser claros sobre los valores cascada y prcticas comunes: o En primer lugar, la mayora de los requisitos, por lo que el supuesto implcito de que los requisitos pueden ser bien definidas por los usuarios de un producto que no han visto antes o Segundo, hacer el diseo detallado en el supuesto de que la solucin a un problema mal definido se puede definir con precisin . o Tercero, poner en prctica, aunque el diseo no est probada y con frecuencia no demostrable . o Cuarto, integrar, probar y desplegar . Dentro del alcance de estas actividades: o Trate a fondo el desarrollo de un artefacto, tales como los requisitos o el diseo, antes de seguir adelante. Trate difcil conseguir que completa y estable. Pulir cuidadosamente . o El posterior descubrimiento que obliga a un cambio significativo en los requisitos, modelos, o el diseo que se esforz por conseguir correcta, en primer lugar, es un signo de algn fracaso. La solucin consiste en esforzar se ms o ser ms hbil de uas ms intensamente en el futuro con el fin de obtener los requisitos o el diseo ms cerca de ser completa y correcta . o Es correcto esperar a ser capaz de entregar una estimacin creble y un plan para un nuevo sistema basado en la nueva tecnologa, muy al principio del proyecto. De lo contrario, es un signo de la falta de esqu ll. Muchos de nosotros fuimos enseados incorrectamente que las mencionadas prcticas y actitudes eran hbiles. Sin embargo, no se adopt en el RUP y otros procesos iterativos (como XP). Ellos no son rechazadas por el deseo perverso es contraria o una novela, sino por el reconocimiento de que la solucin no es luchar contra el cambio, pero para abrazarla, y que sea un conductor central en el proceso.
Copyright Valtech Technologies & Rational Software, 2001
5/14
El hecho de que estamos engaados por el enfoque de cascada en el aumento del riesgo de fracaso (en vez de reducirla) va en contra de nuestra educacin y la tradicin antigua de desarrollo de software. Pero no podemos mantene r a los clientes cambien los requisitos, exigindoles que sign-off de las especificaciones ms de lo que podemos alterar las leyes de la fsica. La realidad es que si los requisitos estn equivocados o los cambios en el neg ocio, tenemos que desarrollar el sistema de una manera flexible que nos permite aprender de la experiencia a medida que avanzamos. La superacin de la superposicin consciente o inconsciente de los valores de la cascada en el RUP y el desarrollo iterativo es uno de los mayores desafos que enfrentan un equipo de proyectos. El cambio ms significativo que verdaderamente adoptar el RUP no se encuentra en las habilidades tcnicas, como hacer casos ds los cuales son opcionales), pero en actitud fundamental y ajustes de expectativas relacionadas con el cascada fina ch are optional), but in fundamental attitude and expectation adjustments related to waterfall thinrey.
Las secciones siguientes describen cmo la superposicin de valores cascada y prcticas pueden aplicarse para ayudar a fallar con el RUP.
7/14
dos a seis semanas es la regla de oro RUP. La esencia del desarrollo iterativo y el mtodo RUP es tomar pequeos pasos de compromiso de una aplicacin posiblemente imperfecta, rpidamente hacer la integracin, control de calidad y pruebas, obtener informacin rpidame nte, y luego adaptar los requisitos, el diseo y la ejecucin sobre la base de esa informacin. Pasos cortos, comentarios ,
y la adaptacin son las ideas clave. Iteraciones largas perder el punto, y as proporcionar una excelente estrategia para el fracaso con el Rijp . Por otro lado, un proyecto con 300 desarrolladores no se ejecutar sin problemas con iteraciones de dos semanas, debido a la sobrecarga de un gran equipo. Con el fin de lograr un rendimiento suficiente, la longitud de la iter acin tendr que ser tal vez incluso ocho o diez semanas. Tenga en cuenta que un menor, de manera temporal independiente, equipo subsistema podr dividir la iteracin del proyecto a nivel macro de ocho semanas en locales de m .
9/14
nuestro fracaso est asegurado. El enfoque iterativo permite que aprendamos a medida que avanzamos, como iteraciones proceder tenemos ms informacin acerca de las necesidades reales, una mejor vista de los riesgos reales, y un mejor sentido de nuestras cap acidades para enfrentar los desafos del proyecto. En resumen, la experiencia nos hace mejores planificadores.
A veces, la existencia de un requisito de entrega de precio fijo se utiliza como justificacin para un enfoque en cascada, como si esto justifica la toma de decisiones en ausencia de informacin real. La realidad es que si us ted nunca ha hecho un proyecto de la clase en la que se le pide que entregar una oferta fija, que est dando palos de ciego. Si usted quiere tener xito es mejor que almohadilla sus estimaciones lo ms que puede, contratar ma yor nmero de personas con experiencia en el dominio del problema como sea posible, y esperar lo mejor. La toma de decisiones importantes en la ausencia de informacin es siempre arriesgado. Con un enfoque iterativo, podrs h acer nada mejor en la estimacin inicial, pero pronto lo sabremos qu tan bien est haciendo y usted puede sTarta de negociacin, el establecimiento de las expectativas, y la gestin de alcance mucho antes, cuando en realidadtart negotiating, setting expectations, and managing scope much earlier, when it may actually do some good. Un enfoque racional, propugnada por el RUP, a las ofertas de precio fijo y contratos es una estrategia de dos pasos. En el primer paso, el contrato por un perodo inicial corto (por ejemplo, cuatro semanas) de longitud fija, contrato de precio fijo para hacer investigacin bastante realista y la programacin de exploracin para generar un mbito de aplicacin ms perspicaz, el riesgo y especificacin de requisitos. Esta especificacin mejorada se utiliza a continuacin como base para hacer una oferta en el paso dos (el desarrollo completo). La inversin en el primer paso investigacin no se pierde, el resultado se reduce el esfuerzo para la segunda etapa, y conducir .
11/14
RUP o Aadir un montn de proyectos y la ceremonia proceso formal, e incluso mejor, los comits de proyectos varios . o Fomentar un mecanicista, la sensacin de relojera en el proyecto, con la gente como dientes especializados en la maquinaria del proyecto . El RUP no se entenda por sus autores para ser pesado o predictivo, y es debido a la superposicin de las ideas de proceso incorrectas o mal entendimiento de las RUP, exacerbada por el gran conjunto de detalladas sobre el pro
documentacin que el producto proporciona RUP, que podra ser tan caracterizado errneamente o mal aplicadas. Los autores de las RUP prevista y fomentar que se aplique en una luz, gil, espritu proceso adaptativo. Algunos ej emplos de cmo se aplica esto: o Un conjunto mnimo de actividades RUP y los artefactos se deben crear, slo aquellos que agregan valor real. A medida que avanza el proyecto, si alguna actividad area proceso no agrega valor, se redujo . o No hay planes detallados para todas las iteraciones. Hay un plan de alto nivel (llamado el plan de eliminacin) que estima la fecha de finalizacin del proyecto y otros hitos importantes, pero no detalla la ruta exacta a es os hitos. Un plan detallado (llamado el plan de iteracin) slo planifica con mayor detalle una iteracin de antemano (por ejemplo, las siguientes dos semanas iteracin). La planificacin detallada se hace de forma adaptativa a partir de una iteracin a otra. Esto no quiere decir que es imposible asignar especulativamente algo de trabajo para futuras versiones, pero para apreciar que se trata de especulacin, que es cada vez menos fiable cuanto m s se proyectan hacia el futuro. Adaptacin del plan original no se ve como un fracaso en la planificacin o ejecucin, pero un ajuste razonable a la realidad del proyecto. Las fechas de los hitos a nivel macro y los objetivo as a failure in planning or execution, but a sensible adjustment to project realities. The macro-level milestone dates and objectives are known, but the path to each milestone is left to adaptively evolve.
13/14
En lugar de ensear a la gente que OO es un tipo de diseo, y dndoles diseo principios, la gente ha enseado que OO es el uso de una herramienta particular. Podemos escribir programas buenos o malos con cualquier herramienta. A menos que ensear a la gente cmo disear, el lenguaje importa muy poco. El resultado es que la gente hace malos diseos con estos lenguajes y obtener un valor muy poco de ellos.
o Desarrollar iterativamente
o Los cambios de control o Verificar la calidad o Arquitectura y diseo centrado en componentes o . . . Bien entendido, el desarrollo iterativo es como una revolucin, si una organizacin est pasando de valores cascada y prcticas. En efecto, si una organizacin est pasando de las del RUP, y no experimenta una transformacin profunda y traumtica tal vez a muchos niveles en la forma de pensar sobre el desarrollo de software, esto es probablemente una seal de que no pill el desarrollo iterativo y verdaderamente adoptar. Hay varias maneras de hacer caso omiso de las implicaciones de desarrollo iterativo, algunos una reiteracin de la superposicin de las actitudes cascada, y algunos con un nfasis diferente:
15/14
continuo a decir que es aceptable hacer una respuesta meditada a la nueva informacin.
10/14
significativa entre el equipo de desarrollo y el cliente. Los clientes tienen que ser reeducados darse cuenta de que tienen que tomar un papel activo en la definicin de lo que debe ser desarrollado, y tienen que llegar a entender que hay una interaccin entre lo que un
sistema debe hacer y la inspiracin de las nuevas tecnologas. Tal vez se pregunte por algn tipo de sistema tradicional, sin darse cuenta de las posibilidades que los dispositivos inalmbricos y mviles en red podra traer a la visin. Lo que pasa es que la tecnologa cambia la naturaleza del problema. El Internet es un gran ejemplo de esto: nos permite abordar los problemas de nuevas maneras que no siempre son evidentes para las personas queestn inmersos en un proceso empresarial existente. El mtodo ideal es aquella en la que podemos empezar con una comprensin del problema que hay que resolver y explorar ese problema (sus retos y oportunidades) de manera evolutiva, en una asociacin entre los desarrolladores y los usuarios / clientes. Un enfoque iterativo permite el tipo de respuesta adaptativa que es esencial para este estilo de desarrollo.
11/14
para elegir un arquite cto para su primer proyecto de tecnologa Java que no es un experto en Java y no se puede hacer la programacin Java. Definitivamente evitar el contagio con un mentor que sabe hacer el desarrollo iterativo. Si un mentor experto desafortunadamente se une al proyecto, asegurarse de que tienen un papel sin influencia o liderazgo, y que sus cons ejos se debate, vistos con escepticismo, y finalmente rechazado por el proyecto
liderazgo. Ridiculizar el mentor. Si un mentor debe formar parte del equipo, busque uno que no entiende el RUP y sutilmente superpone actitudes cascada de prediccin, como pensar que la fase de elaboracin es clarificar los modelos que se aplican en la construccin, o que el trabajo para todas las iteraciones deben planearse y asigna cerca del comienzo del proyecto. Deben ser fciles de encontrar .
Tambin hemos observado los llamados expertos RUP hacer declaraciones incorrectas, tales como:
Copyright Valtech Technologies & Rational Software, 2001
12/14
o En el RUP es importante para obtener el 100% de los requisitos definidos antes de iniciar el diseo. o Una buena longitud, tpico en la iteracin RUP debe estar alrededor de 6 meses. Para aumentar sus posibilidades de fallar con el RUP, le recomendamos que aceptar lo que lee o escucha acerca de la RUP sin discriminacin. Hay fuentes actualmente muchos que pueden ayudar a desinformar usted.
Conclusin
Estamos seguros de que al seguir estos siete pasos, y aplicar la lista de verificacin de malentendidos, su adopcin del RUP y el desarrollo iterativo ser un lo espectacular .
Referencias
1. Kruchten, Philippe. El Proceso Racional Unificado-An Introduction, 2 ed. Reading, MA: AddisonWesley (2000). 2. Jacobson, I., Booch, G. y Rumbaugh, J. El Proceso Unificado de Desarrollo de Software. Reading, MA: Addison-Wesley .(1999)
Copyright Valtech Technologies & Rational Software, 2001
11/14
3. Royce, Walker. Software de Gestin de Proyectos, un marco unificado. Reading, MA: Addison Wesley (2000) 4. Johnson, Jim. Caos: Trazando los mares de Tecnologa de la Informacin. Publicado Informe. The Standish Group (fecha? ) 5. Druffel, Larry y Heilmeyer, George. Informe del Grupo de Trabajo de Ciencia de Defensa Consejo de Defensa de la adquisicin de software comercial. (EE.UU. Departamento de Defensa ) 6. Jones, Caper. Applied Measurement Software. Nueva York, Nueva York: McGraw-Hill.
12/14
7. Boehm, B. y Papaccio, P. La comprensin y el control de costes de software, en IEEE Transactions on Engineering Software. Octubre 1988. 8. Beck, K. Extreme Programming Explained-Embrace Change. Reading, MA: Addison Wesley (2000) 9. .
Fowler, Martin Ponga su proceso en una dieta, en Desarrollo de Software. Diciembre 2000. CMP Media.
10. Booch, G. Soluciones del objeto: Gestin del Proyecto orientado a objetos. Reading, MA: Addison Wesley .(1996)
13/14