Académique Documents
Professionnel Documents
Culture Documents
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
El rol de la arquitectura de software en las metodologas giles. Lineamientos para su implementacin Lic. Valerio Adrin Anacleto Epidata Consulting S.R.L. Buenos Aires, Argentina adrian@epidataconsulting.com Diciembre de 2005 Abstract. El rol de la arquitectura de software en las metodologas giles no se encuentra lo suficientemente documentado ni formalizado a travs de un proceso acorde a la filosofa. El presente trabajo tiene como aportes: 1) Definir lineamientos para implementar un proceso de arquitectura gil capaz de implementarse dentro de cualquier metodologa. 2) Se sientan las bases para la definicin de un proceso de arquitectura gil.
ndice
Tabla de contenidos
ndice I ntroduccin Metodologas giles Qu es desarrollo de software gil (Agile Software Development)? Las tcnicas de diseo en las metodologas giles El cdigo NO es el diseo Aprehendiendo y tomando ideas Las prcticas de Arquitectura de Software, el diseo y las metodologas giles Definicin de arquitectura El doble rol de la arquitectura en un desarrollo de software La arquitectura y su rol actual dentro de las metodologas giles Toda decisin en ingeniera de software implica un compromiso (tradeoff) Hacia un proceso de arquitectura de software gil No jerarquizar el Rol Un solo arquitecto para definir la arquitectura Requerimientos de calidad Usar SAAM Requerimientos de calidad tratados como riesgos Utilizar la categorizacin de riesgos del SEI Mantenga una adecuada administracin de los riesgos del proyecto
1 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
Dejar de lado la tentacin de la clarividencia (Resuelva el problema actual) Dejar de lado el mito del sentido comn Plantear la arquitectura como un servicio Armar grupos de arquitectura transversales Hablar Patterns Utilizar ABAS Crear Tracer Bullets Definir un leguaje de alto nivel profesional Compartir las decisiones conflictivas Slo involucrarse en las decisiones de mayor impacto arquitectnico Confianza en el equipo Testear los requerimientos de calidad Puntos de control y tests de integracin No transferir responsabilidades Realizar una arquitectura comprensible Arquitectura Simple Defina claramente los requerimientos Releases I ncrementales Busque mejorar sus habilidades constantemente. Aportes Trabajo Futuro Conclusiones Referencias
Introduccin
Desde sus comienzos a esta parte, las metodologas giles han logrado una gran conjunto de adeptos. Hoy en da, una considerable cantidad de proyectos se desarrollan siguiendo algn tipo de metodologa gil y una proporcin muy grande de las que no utilizan una metodologa gil formal, sigue, al menos, lineamientos e ideas provenientes de stas. I ncluso algunas metodologas consideradas poco giles, como RUP, ensayan nuevas aproximaciones que las hagan ver ms giles. Varios ejemplos y referencias pueden encontrarse en {28} En este contexto, la Arquitectura de Software como prctica de diseo no parece ser tratada con el detenimiento que se merece. Prueba de ello es la escasa informacin disponible sobre esta prctica en la documentacin de las distintas metodologas giles. Otro factor de influencia, es la falta de documentacin estandarizada; hoy por hoy, no existe un lenguaje DDL estndar para definir arquitecturas. Esto implica que no existe un formalismo estndar, como son los diagramas de clases de UML, para documentar arquitecturas. En estos momentos, UML an no decidi cul ser, de los muchos lenguajes DDL existentes, el que se incluya en sus futuras versiones. Creemos que el hecho de no tener debidamente en cuenta la Arquitectura de Software como un proceso en s mismo, dentro de cualquier proceso de desarrollo de software, repercute en proyectos ms riesgosos, con tareas y asignaciones distribuidas de manera incorrecta y, por sobre todas las cosas, se evidencia en la calidad final del producto
Metodologas giles
Qu es desarrollo de software gil (Agile Software Development)?
A finales de los 90, varias metodologas comenzaron a atraer la atencin del pblico en general. Cada una de estas metodologas era
2 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
una combinacin de ideas viejas, ideas nuevas, y variaciones de ideas viejas. Pero todas tenan algo en comn: enfatizaban la colaboracin entre equipos de programadores y expertos de negocio; promovan la comunicacin cara a cara (como una manera ms eficiente que la documentacin escrita); realizaban entregas frecuentes de nueva funcionalidad de negocio; contaban con equipos de desarrollo auto organizados; tenan maneras de estructurar cdigo fuente y equipos de desarrollo con el fin de que los requerimientos ms importantes no entren en crisis. {18} A principios de 2001, los pioneros y creadores de estas metodologas reunieron, en una figura nica, todo lo que sus metodologas tenan en comn, utilizando el trmino gil como definicin comn a todas ellas. De esta forma, crearon lo que acordaron se en llamar: el manifiesto para desarrollo de software gil {19}. Algunos de los principios ms importantes definidos en este manifiesto son: {18} 1. I nteraccin personal de individuos por sobre los procesos y las herramientas 2. Trabajar con el cdigo por sobre documentacin escrita 3. Colaboracin del cliente por sobre negociacin de contratos 4. Responder al cambio antes que seguir y mantener un plan. El trmino gil no describe una metodologa particular, por el contrario, expresa la existencia de una familia de metodologas, las cuales comparten las bases y lineamientos entre los que se encuentran los enumerados anteriormente. Como ejemplo de metodologa gil, podemos citar, entre muchas otras, a Scrum, ))FeatureDriven Development((, DSDM, Crystal, XP. {29, 30, 31, 32 y 6} respectivamente.
El cdigo NO es el diseo
Debido a las fuertes crticas recibidas por la carencia de diseo formal, se han escrito algunas contrapropuestas interesantes que defienden la postura de las metodologas giles. La mayora de las respuestas giran en torno al siguiente planteo, realizado por Fowler, el cual puede encontrarse en {13}. El planteo dice lo siguiente: As que ha muerto el diseo? De ninguna manera, pero la naturaleza del diseo ha cambiado. El diseo gil busca las siguientes habilidades: 1. Un deseo constante de mantener el cdigo tan claro y simple como sea posible. 2. Habilidades de refactoracin, para que puedas confiadamente hacer mejoras cuando veas la necesidad. 3. Un buen conocimiento de patrones: no slo las soluciones, sino tambin apreciar cundo usarlos y cundo evolucionar hacia ellos. 4. Saber cmo comunicar el diseo a la gente que necesita entenderlo, usando cdigo, diagramas y, sobre todo, conversacin. Otra justificacin, un poco menos formal, pero an as de amplia aceptacin, es la siguiente: el cdigo fuente es el diseo{20}{21}. En sta se argumenta lo siguiente: puede verse al cdigo fuente como el resultado final y visible del diseo, y en dnde quedan plasmados todos los aspectos de ste. Esta idea, que es tomada de {21}, es llevada al extremo en algunas metodologas giles, en donde el diseo no existe como etapa de desarrollo ni como generador de algn artefacto formal. Slo se tiene en cuenta como algo informal, til para
3 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
transmitir ideas entre desarrolladores. La justificacin es que con el refactoring continuo, el buen diseo se va encontrando de a poco. Estas ideas definen la opinin sobre el diseo de muchas de las metodologas giles y, sobre todo, de muchos de sus cultores. Si bien estas opiniones son un tanto controversiales, es interesante rescatar su enfoque evolutivo, en contra de la postura predictiva que tuvo histricamente el diseo.
otros, los siguientes beneficios:{11} Work break down: la separacin y asignacin de tareas de grupos de trabajo. Principalmente, esto se debe a que, al identificarse los componentes principales de la aplicacin, se les pueden asignar grupos de trabajo. Facilita la estimacin: permite estimar componentes y conectores por separado, teniendo en cuenta, luego, tiempos de integracin, estabilizacin, etc. Look ahead: minimizar riesgos: Lidia con los requerimientos no funcionales:
4 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
marco de trabajo fuerte, permitiendo el intercambio de profesionales entre grupos de trabajo y definiendo estndares de trabajo, sin una sobrecarga de burocracia. Simultneamente, lo que podra considerarse sobrecarga de burocracia, debera quedar plasmado en documentos destinados a la gerencia del proyecto. Estos documentos son requeridos por la gerencia en la mayora de los casos. En este trabajo, se propone realizar estos documentos en las etapas adecuadas del proyecto y beneficiarse de contar con fuertes (fuerte no implica inflexible) lineamientos arquitectnicos durante todo el desarrollo. Al tomar en cuenta los lineamientos de arquitectura, el diseo interno del componente puede manejarse de manera gil, dejando la especificacin formal (si la complejidad y/o el contexto de ste lo requiere) para el momento en que sta sea necesaria.
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
La Arquitectura de Software puede y debe desempear un rol fundamental, en un escenario donde el desarrollo de software tiende hacia formalizacin y automatizacin de procesos de ingeniera, que brinden la seguridad y capacidad de prediccin de otras disciplinas, como la ingeniera civil. Sera de gran importancia contar con un proceso de Arquitectura de Software capaz de acoplarse a cualquier metodologa de desarrollo de software, en el que se distingan claramente los beneficios de aplicarlo en cada etapa y las consecuencias de no tenerlo en cuenta. Se plantean aqu algunos lineamientos y prcticas tiles para ser utilizados en cualquier proceso de desarrollo de software, independientemente de la metodologa utilizada. Algunos de estos lineamientos son tomados de otros autores, en cuyo caso se hace referencia a la fuente.
No jerarquizar el Rol
Ser arquitecto es slo un Rol. Este rol puede ser desempeado por cualquiera que tenga las habilidades necesarias. Habra que considerar como muy importante no darle una concepcin divina al Rol. Quien lo desempea no se encuentra en una posicin superior, en el organigrama, a ningn otro miembro del equipo.
Requerimientos de calidad
Los arquitectos deben tener una lista de requerimientos funcionales para el sistema y una lista priorizada de atributos de calidad (tales como modularidad, modificabilidad, etc). {11} Los atributos de calidad pueden estar categorizados y no deberan limitarse solamente a la calidad del producto final, sino tambin a los requerimientos de calidad de diseo, de cdigo, de testing, de performance, etc.
Usar SAAM
Usar el Software Architecture Analysis Method {11} para analizar distintas arquitecturas candidatas es un mtodo en extremo sencillo y es muy til para comunicar ideas. Se puede usar en lugar de mtodos ms complicados, como ATAM {23}, que deberan ser tenidos en cuenta slo para determinados casos.
6 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
7 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
Hablar Patterns
Utilizar como parte del lenguaje cotidiano de trabajo los patterns, aunque sea slo aquellos ms conocidos. Hoy por hoy, es difcil ver un desarrollador que no haya ledo un libro de patterns. La comunicacin es un factor principal en un equipo que pretende utilizar una metodologa gil. Resulta importante poder subir el nivel de abstraccin y saber que todos los miembros del equipo de desarrollo entienden cuando alguien dice: esto es un composite, un delegate o un DAO. Algunas decisiones de diseo pueden tener implicancias sobre los atributos de calidad del diseo y de la aplicacin.{35}
Utilizar ABAS
Un ABAS (AttributeBased Architectural Style){24} puede pensarse como una parte preanalizada de una arquitectura de software. Un ABAS se encuentra conformado por: (1) un Architectural Pattern (Style); (2) la descripcin de los componentes de software y sus relaciones; (3) atributos de calidad relativos a estos componentes y cmo estos se conectan; (4) un framework analtico que permita razonar sobre los atributos de calidad. La utilizacin de ABAS permite la reutilizacin de partes de arquitecturas ya definidas. Adems, permite dar una aproximacin segura, comprobada y medible a los atributos de calidad relacionados con el architectural style. Es factible pensar que el correcto uso de architectural styles agilizar y facilitar la toma de decisiones sobre arquitecturas. El uso de ABAS tambin facilita la comunicacin, de igual manera que hablar patterns.
Conanza en el equipo
8 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
El arquitecto debe conocer a su equipo de trabajo, de manera que pueda generarse en l la confianza necesaria. De esta manera, el arquitecto podr y deber confiar en el equipo, debido a que ste confa en l para que defina la mejor arquitectura posible dentro del contexto del proyecto. Los lazos de confianza profesional son difciles de mantener si no hay un sentimiento recproco.
No transferir responsabilidades
El desempeo de un profesional en un determinado rol le confiere derechos y obligaciones. El rol de arquitecto tiene la obligacin de no transferir la responsabilidad por las decisiones tomadas y por el resultado final de la arquitectura. Si la arquitectura no cumple con los requerimientos especificados, es pura y exclusivamente responsabilidad del arquitecto.
Arquitectura Simple
Mantenga la arquitectura lo ms simple posible. Si la simpleza se traduce en facilidad de uso de la arquitectura, facilidad para entender los conceptos involucrados y est bien documentada, es muy probable que el nivel de productividad aumente. La simpleza de la arquitectura es tambin un requerimiento de calidad.
Releases Incrementales
I mplemente releases incrementales que sean certificadas por el grupo de arquitectura. Cada release debe ser arquitecturalmente vlida. Esto quiere decir que la release debe respetar la arquitectura actual. Es necesario tener en cuenta que la arquitectura, por estar comprendida dentro de un entorno gil, muy posiblemente evolucione y cambie, pero siempre deber respetar los requerimientos de calidad.
9 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
Aportes
En el presente artculo, se muestra la necesidad de implementar prcticas tradicionales de Arquitectura de Software con un enfoque gil, en proyectos que implementen cualquier tipo de metodologas. Se aportan lineamientos tiles para la implementacin de las prcticas de arquitectura de manera gil. En este trabajo no se discute cmo deben aplicarse estos lineamientos, ni en qu estadio del proceso. Se sientan las bases para desarrollar un proceso de arquitectura gil, que sea posible implementar dentro del contexto de cualquier metodologa y/o proceso de desarrollo.
Trabajo Futuro
Como extensin al trabajo realizado, podemos plantear la definicin de un proceso de desarrollo y especificacin de arquitecturas de software gil que pueda implementarse en el contexto de cualquier metodologa. Muchos de los lineamientos expuestos aqu pueden ser extendidos, mostrando ejemplos de uso, contextualizndolos en un dominio de problema adecuado.
Conclusiones
En este artculo se plantea la necesidad de definir un proceso de Arquitectura de Software que sea capaz de asociarse con cualquier metodologa de desarrollo existente. Se busc tambin, cubrir la necesidad de que este proceso sea gil, de manera tal que pueda ser utilizado tanto en procesos giles como tradicionales. Como una primera aproximacin a la resolucin de este problema, se plantean algunos lineamientos que deberan ser tenidos en cuenta al momento de realizar una arquitectura para cualquier proyecto de desarrollo de software. Algunos de los lineamientos fueron recopilados de la bibliografa existente sobre el tema y algunos otros son aportes originales del presente trabajo. Todos los lineamientos propuestos estn basados en estndares aceptados del mercado o de trabajos de reconocido nivel acadmico. La originalidad del planteo no slo radica en su utilizacin para agilizar un proceso arquitectnico, sino tambin en la propuesta de varios lineamientos.
Referencias
1. Anacleto, Valerio Adrin, Amandi Analia, Marisa Bauza, Perfiles de Usuario para Agentes de I nterfaz: Un anlisis de tcnicas de aprendizaje Tesis de licenciatura. Departamento de Computacin, Universidad de Buenos Aires. 2003. 2. Gamma E, Helm R, Johnson R, and Vlissides J, Design Patterns: Elements of Reusable Object Oriented Software, Addison Wesley, 1995 3. Fowler M. Analysis Patterns: Reusable Object Models, AddisonWesley?, 1997
10 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
4. Fowler M, UML Distilled: Applying the Standard Object Modeling Language, Addison Wesley, 1997. 5. Booch G, Jacobson I and Rumbaugh J. The Unified Modelling Language for ObjectOriented? Development (version 0.91) , Rational Software Corporation 6. Beck, Kent. Extreme Programming explained. Reading, Mass: AddisonWesley? Longman, I 2000. nc. 7. Beck, Kent and Martin Fowler. Planning Extreme Programming. Reading, Mass: AddisonWesley? Longman, I 2001. nc. 8. Jacobson, I var; Booch, Grady; Rumbaugh, James. The Unified Software Development Process. AddisionWesley, 1999. 9. Sommerville, I Software Engineering. Addison Wesley. 5st ed. 1995. an. 10. Bass, Len. Clements, Paul. Kazman, Rick. Software Architecture in Practice. Addison Wesley. 1998. 11. Christine Hofmeister, Robert Nord, Dilip Soni, Applied Software Architecture. AddisonWesley?. 1st edition 1999 s 12. Fowler, Martin I Design Dead? http://www.programacionextrema.org/articulos/designdead.es.html . 2000. 13. http://www.june19th.com/ili/xp/index.html 14. Extreme Programming Practices, http://www.ootips.org/xp.html 15. History Of Extreme Programming, http://www.cs.wm.edu/~noonan/ExtremeProgramming /HistoryOfExtremeProgramming.html 16. http://www.xprogramming.com/index.htm 17. http://www.agilealliance.org/programs/roadmaps/Roadmap/index.htm 18. Manifesto for Agile Software Development: http://www.agilemanifesto.org/ 19. The Source Code I The Design:http://c2.com/cgi/wiki?TheSourceCodeI s sTheDesign 20. Code as Desgin, Jack W. Reeves, 1992 http://www.developerdotstar.com/mag/articles/reeves_design_main.html 21. Malan, Ruth, and Dana Bredemeyer, "Less is More with Minimalist Architecture", published in I EEE's I Professional, T September/October 2002. 22. Rick Kazman et all: Steps in an Architecture Tradeoff Analysis Method: Quality Attribute Models and Analysis 23. http://www.sei.cmu.edu/publications/documents/97.reports/97tr029/97tr029title.htm 24. Extreme Programming Myths: http://c2.com/cgi/wiki?ExtremeProgrammingMyths 25. Alistair Cockburn; The Methodology Space: http://alistair.cockburn.us/crystal/articles/ms/methodologyspace.htm 26. Agile Modeling, http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm 27. Martin Fowler; The New Methodology: http://www.martinfowler.com/articles/newMethodology.html 28. Ken Schwaber, Mike Beedle. Agile Software Development with SCRUM. Paperback. 29. Stephen R Palmer, John M. Felsing. A Practical Guide to FeatureDriven? Development (The Coad Series). Paperback 30. DSDM Consortium, Jennifer Stapleton. DSDM: Business Focused Development, Second Edition. Paperback 31. Alistair Cockburn. Crystal Clear : A HumanPowered? Methodology for Small Teams. Paperback. 32. Valerio Adrin Anacleto: http://www.epidataconsulting.com/tikiwiki/tikiread_article.php?articleI d=2 33. Valerio Adrin Anacleto. Asignacin catica de profesionales a proyectos. 34. Valerio Adrin Anacleto. Che Loco, alcnzame un Coso sobre ambigedades cosomtricas. http://www.epidataconsulting.com/tikiwiki/tikiread_article.php?articleI d=16 35. Software Engineering I nstitute (SEI http://www.sei.cmu.edu/ ). 36. http://www.sei.cmu.edu/risk/main.html 37. Brian Gallagher. Taxonomy of operational risk. http://www.sei.cmu.edu/risk/taxonomy.pdf 38. M. Carr et all. Taxonomy based risk I dentification. SEI1993 http://www.sei.cmu.edu/publications/documents/93.reports /93.tr.006.html 39. Andrew Hunt, David Thomas: The pragmatic programmer (Paperback) 40. Dan Pilone y Neil Pitman, UML 2.0 in a Nutshell First Edition June 2005 41. Emilio Rasic, El rol de los Arquitectos de Software http://www.epidataconsulting.com/tikiwiki/tiki read_article.php?articleI d=7 42. Eliyahu M Goldratt The Goal 3ra Edicin. Lic. Valerio Adrin Anacleto
- Deploying ideas Epidata Consulting Maip 521 1er piso Of. A Ofi: 5031 0060 / 61 www.epidataconsulting.com
11 de 12
3/31/2011 4:36 PM
http://www.epidataconsulting.com/tikiwiki/tiki-print_article.php?articleId=28
12 de 12
3/31/2011 4:36 PM