views:

193

answers:

2

I know it probably sounds like very trivial question but I couldn't find any resources on the internet.

Could you please tell me what are open and closed layered architectures and why open layered architecture is apparently more difficult to maintin? Are there any disadvantages of using closed/open layered architectures?

+1  A: 

Here's one of the earliest definitions of open and closed architectures from Bob Martin:

http://www.objectmentor.com/resources/articles/ocp.pdf

Open architectures, by definition, are changing. They're hard to maintain because it's difficult to see into the future when designing the API and anticipate every possible need. But if the API remains constant, and you've designed effective mechanisms for modifying by addition rather than rewriting (e.g. declarative configuration, data-driven applicatons), open architectures can be very effective.

There's nothing wrong with a closed architecture for those problems that are well known and relatively static. Open isn't always necessary. The choice has to do with the nature and rate of change.

duffymo
+5  A: 

A closed layered architecture means that any given layer (or tier) can only use the services of the next immediate layer, whereas in an open layer architecture a given layer can make use of any of the layers (or tiers) below it. Closed layer architecture promotes independence between layers by reducing dependencies.

http://books.google.com/books?id=z5XX4gYuMs0C&pg=PT160&lpg=PT160&dq=%22closed+layer+architecture%22&source=bl&ots=-iCw2be77_&sig=zQvScA2oIud_rNJNMziZXNMSnJo&hl=en&ei=u4UZSt7MKoX2tAOW-8jaCA&sa=X&oi=book_result&ct=result&resnum=5#PPT160,M1

Robert Harvey
+1 from me, Robert. I didn't think of it that way.
duffymo