An Architect's View

ColdFusion, Software Design, Frameworks and more...

An Architect's View

Layered Design Principles

January 16, 2005 · 1 Comment

This is summarized from Martin Fowler's bliki - attendees at a workshop on enterprise software voted on principles that they felt were important in a layered architecture. Here are the top principles:
  • Business layer only uses abstractions of technological services. 14/0
  • Layers should be testable individual. 12/0
  • Layers are a logical artifact that does not imply distribution between layers. 11/0
  • Separation of concerns. 11/0
  • Low coupling between layers, high cohesion within them. 10/0
  • User interface modules should contain no business logic. 10/0
  • Inbound external interface modules (eg web service handlers) should not contain business logic. 10/0
  • Business logic layers contain no user interface and don't refer to user interface modules. 8/0
  • Layers should be shy about their internals. 8/0
  • No circular references between layers. 8/0
  • Layers may share infrastructural aspects (eg security) 7/0
  • Lower layers should not depend on upper layers. 6/0
These seem like pretty good principles to me (and the ones that got big negative votes seem like bad principles).

Tags: architecture

1 response so far ↓

  • 1 Paul Kenney // Jan 16, 2005 at 11:20 PM

    Another one that was mentioned (unfavorably) was (re)throwing of exceptions at the layer boundaries.

Leave a Comment

Leave this field empty: