Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you control architecture in an agile project? [closed]

How do you ensure that the project will be build with "good" design decisions enabling a flexible software architecture?

How do you balance between completely leaving the architecture to the teams on one side, and let all architecture control to a few individuals on the other side?

Do you have an "architecture group", "architecture label" or things like that?

like image 304
sthiers Avatar asked Oct 14 '08 12:10

sthiers


3 Answers

A prerequisite for Agile approaches is an architecture you already know how to use.

If the architecture is not well-defined and completely understood, you can't really take an Agile approach.

You need to have some technical spikes that show how the architecture works, and how the various pieces will fit together. You can do these are preliminary sprints, but they won't lead directly to a release to users. They're a special case, required to get to an architecture you can use.

Once you're past this "understand the architecture" effort, you can then start to execute sprints that lead directly to releases for the users.

like image 123
S.Lott Avatar answered Sep 22 '22 11:09

S.Lott


I could explain how I would do it, but this says it better than I could.

like image 36
Andrew Cowenhoven Avatar answered Sep 19 '22 11:09

Andrew Cowenhoven


I would also recomend reading fowlers document Is Design Dead, as far as I understand his arguments if you consider all the agile practices as a whole then you gain the freedom to make large changes and so can evolve an architecture.

Refactoring works most effectivly with continuous interation, testing is enhanced with TDD and continuous integration ... I could go on. Evolving 'architectures' are only limited if you are unable to make the large changes requied to correct 'mistakes'.

Additionally, I think you have an architect as a stakeholder in the project, they contribute user stories which are in turn delivered back to the architect.

This is also a good way to utilise pair programming with the architect working as part of the pair. In this context the architect is not so much a dedicated person more a hat that a member of the development team wears while pair programming.

I think XP does not diminish the role of the architect (and architecture) it just places the resonsibility on all team members to deliver and spreads the cost over the lifetime of the project.

[edit]

Per other comments dont be afraid of some upfront planning, itteration zero is a good time to try and chart a bit of a plan, just dont get to strict about delivering it to a specific time scale.

like image 34
Scott James Avatar answered Sep 23 '22 11:09

Scott James