<snip>
In many (maybe most?) enterprise systems, tiers are built by different
developers. E.g. HTML/ASP/ASP.NET is written by one guy, business logic (VB
com(+), VC/ATL com(+), C#. VB.NET) by another, and database structure and
stored procs - by yet another.

Yet, for scalable systems, when implementing a feature you have a mix and
match between all three tiers, and ultimately all developers need to
understand issues in all of them (data/biz/prez).
</snip>

Developers should definitely try to understand performance and scalability
implications in whichever tier they are working on.  General knowledge of
the "the next level down" gives the developer a good context for some
decisions they make.  However, to suggest that the presentation guy needs to
know how the business logic, or db procs are working internally indicates a
poorly factored system.  You should be able to define non functional
requirements that detail exactly what the performance and scalability
characteristics for both the integrated system and its components.

Don't get me wrong.  I think it is important (for a lot of reasons) that
developers cross these boundaries, but they shouldn't _have_ to know the
details of the other guy's work.

<snip>
So how do we
(philosophically) solve this contradition?
</snip>

1)  Well factored software architecture that clearly defines
responsibilities and normalizes dependencies.
2)  Frameworks to support the architecture.
3)  Architectural patterns - to provide specific implementations by inputing
well defined requirements into generalized solutions

Cheers,
Ed

You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced 
DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to