views:

91

answers:

5

Can Agile/XP go together with layered approach?

Should Agile/XP go together with layered approach?

Breaking the source code into layers requires extra efforts and thereby increases the development-time significantly.

N.B : By 'Layers' I mean separate assemblies with POCO, DA, etc.

+1  A: 

Agile/XP is an approach to managing your project activities, deliverables and timelines.

Layered (N-tier) applications are a way to improve maintainability, scalability, and the ability for team members separate areas of responsibility.

They don't have much to do with each other, except that they both will require an additional investment in time if you're not familiar with each. Both will tend to improve the quality of your project if used properly, compared to traditional alternatives.

Eric J.
Layers and tiers are different concepts.
Nat
I guess it depends on who you ask. What do you see as the difference?
Eric J.
Well, if you ask someone who knows the difference, they will consider them to be different concepts :-)Layers: http://en.wikipedia.org/wiki/Abstraction_layerTiers: http://en.wikipedia.org/wiki/Multitier_architecture
Nat
From your link: "The concepts of layer and tier are often used interchangeably". People I work with tend to use those terms interchangeably as well, and speak of the logical vs. physical model when making the distinction you are after. So yes, it depends on who you ask.
Eric J.
Just because they are used interchangeably doesn't mean it's correct to use them interchangeably. Plenty of people conflate terms and confuse technical discussions as a result.
Nat
For example, the original question is asking about layers, not tiers, but most answers are about tiers, not layers.
Nat
It's a fact of life that terms are overloaded, and mean different things to different people. Yes, that makes things harder than they need to be and causes confusion. But unless you can point to a widely accepted standard that defines "layered approach" to always mean abstraction layer and never mean tiered architecture, I can't agree with you that "most of the answers" assign an incorrect meaning to the term.
Eric J.
A: 

The two are entirely orthogonal.

In XP you develop the system feature by feature. As you add features you continually refactor the system to ensure that it's implementation is as clear as possible. Layers usually fall out of that refactoring. As do tiers if that architecture is appropriate, or other large-scale architectural structures such as SEDA or REST.

Nat
Do you have a pointer to documentation on the 'layered' approach. This term is new to me and I'd like to learn.
lexu
http://en.wikipedia.org/wiki/Abstraction_layer
Nat
A: 

It seems to me instead that the agile warning "You Ain't Going to Need It" is not to avoid complexity altogether, but to avoid adding NEEDLESS complexity. Indeed, one of the benefits of unit testing is to set up a discipline wherein you can fearlessly refactor so stuff ends up where it belongs, rather than where it may have started.

So the point is not to avoid layers (or tiers, if you must) -- the point is to avoid layers that suck.

John Lockwood
A: 

I think they real question here is should have developers divided up by layers on a team- should you have an html dev, a js dev, a middle tier person, a messaging system person, and a dba all working together to build a CRUD form, or should you build by feature and let one person own the thread. The latter is preferable in agile- specializing generalists are preferred to specialists.

MattMcKnight
A: 

Is it sensible to have several teams working together on an Agile project? Yes: I've worked on a large-scale project with 200+ developers across 15+ teams. There were about 20 or 30 services in all.

Can this be done with specialised teams? Not really.

Can the members of the teams have specialisations? Yes, but you really need generalists with strengths in some areas rather than people who only know one thing and won't touch anything else.

Jeremy McGee