Even if you are using Agile, you would need a high level architecture before you can start implementing the project.
By high level architecture, I mean dividing project into small parts, infrastructure stuff, distributed/web-based/thick client etc…
Are there any books/articles on this topic??
I’ve had this argument with Kent Beck on more than one occasion, and he would say that you’re just wrong, that you don’t need to make these architectural decisions, or rather that you should choose the Simplest Thing That Could Possibly Work and proceed from there.
The problem I see is that you can be a long way down the tracks before you discover that the STTCPW won’t, in fact, work, and leave you with a lot of rework. Now, if you’re doing things properly incrementally, or even better with a risk-driven model so you examine the riskiest decisions first, then hopefully you will have spotted these things relatively early, but there’s certainly no guarantee.
The other side of that is that a whole lot of Agile projects are in contexts where most of the architecture is pre-determined, eg, Ruby on Rails or J2EE. Those systems reduce the risk considerably, because you have a decided environment.
I don’t know of any particular books on the topic, although I’m thinking of writing one; this is still pretty much up for debate in the Agile Community.
Probably my favorite fora for this are Martin Fowler’s bliki, and InfoQ, with the caveat that I’m about to start posting to infoQ and so may be prejudiced.