safe runway metodologia framework español architectural architecture agile

architecture - runway - scala agile framework



¿Cómo se controla la arquitectura en un proyecto ágil? (6)

En mi experiencia, la mejor manera de hacerlo es contar con desarrolladores / arquitectos experimentados trabajando en los proyectos que impulsan la visión de la arquitectura día a día.

Yo sugeriría que esté hasta el líder del desarrollo en el proyecto para controlar la arquitectura y asegurarse de que todo el trabajo nuevo se ajuste a ella.

¿Cómo se asegura de que el proyecto se construya con decisiones de diseño "buenas" que permitan una arquitectura de software flexible?

¿Cómo se equilibra entre dejar por completo la arquitectura a los equipos de un lado y dejar que toda la arquitectura controle a unas pocas personas del otro lado?

¿Tiene un "grupo de arquitectura", "etiqueta de arquitectura" o cosas por el estilo?


Manejo esto haciendo algo de planificación por adelantado; en general, tengo experiencia previa con una aplicación similar para ayudar con esto. Si no, haré una exploración en el espacio para tener una idea. Una vez que se haya diseñado una arquitectura básica, comenzaré a desarrollarla teniendo en cuenta mis historias priorizadas. Luego, me refactoro a medida que avanzo para abordar deficiencias o errores en la arquitectura.


Podría explicar cómo lo haría, pero esto lo dice mejor que yo.


Sin hacer un gran diseño por adelantado, generalmente hay un diseño básico que se aplica a cada proyecto. Por lo general, esto define las capas básicas a respetar en el diseño de la aplicación. La mayoría de las decisiones de diseño las toma cada desarrollador.

Nuestro proceso de desarrollo se basa en ráfagas cortas de desarrollo con frecuentes revisiones por pares. La calidad de la decisión de arquitectura de cada desarrollador se valida en el momento de la revisión por pares. Esto también incluye validar que el código sigue la arquitectura del producto .

Según el tipo de proyecto y las herramientas disponibles, también utilizamos herramientas como macker para validar automáticamente la integridad del pastel de capas.


También recomendaría leer el documento de cazadores Is Design Dead , por lo que entiendo sus argumentos si considera todas las prácticas ágiles como un todo, entonces obtiene la libertad de hacer grandes cambios y así puede evolucionar una arquitectura.

La refactorización funciona más eficazmente con interacción continua, las pruebas se mejoran con TDD y la integración continua ... Podría continuar. Las ''arquitecturas'' en evolución solo son limitadas si no puede realizar los grandes cambios necesarios para corregir ''errores''.

Además, creo que tiene un arquitecto como parte interesada en el proyecto, que contribuye historias de usuario que a su vez se devuelven al arquitecto.

Esta es también una buena forma de utilizar la programación de pares con el arquitecto que trabaja como parte del par. En este contexto, el arquitecto no es tanto una persona dedicada más un sombrero que un miembro del equipo de desarrollo usa durante la programación de los pares.

Creo que XP no disminuye el rol del arquitecto (y la arquitectura) simplemente pone la responsabilidad de todos los miembros del equipo para entregar y distribuye el costo a lo largo de la vida del proyecto.

[editar]

Por otros comentarios, no temas la planificación anticipada, el cero de la iteración es un buen momento para intentar trazar un plan, pero no te pongas estricto sobre cómo llevarlo a una escala de tiempo específica.


Un requisito previo para los enfoques ágiles es una arquitectura que ya sabe cómo usar.

Si la arquitectura no está bien definida y completamente entendida, realmente no se puede adoptar un enfoque ágil.

Debes tener algunos picos técnicos que muestren cómo funciona la arquitectura y cómo encajarán las distintas piezas. Puede hacer estos son sprints preliminares, pero no conducirán directamente a un lanzamiento para los usuarios. Son un caso especial, requerido para llegar a una arquitectura que puede usar.

Una vez superado este esfuerzo de "comprender la arquitectura", puede comenzar a ejecutar sprints que conducen directamente a lanzamientos para los usuarios.