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?
Although the layered architecture pattern does not specify the number and types of layers that must exist in the pattern, most layered architectures consist of four standard layers: presentation, business, persistence, and database (Figure 1-1).
Definition. ● The layered architecture style is one of the most common architectural styles. The idea behind Layered Architecture is that modules or components with similar functionalities are organized into horizontal layers. As a result, each layer performs a specific role within the application.
In this case there are two approaches: one-pass architecture: control flows sequentially through each layer, until the final layer (Figure 2. 1 (b)) two-pass architecture: control flows up the architecture (the first pass) and then, control flows back down (Figure 2.
Gmail is divided into at least three layers, every one of them has a mission, and they exist separately to handle different processes at different levels. It is an excellent example of layered architecture.
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With