Http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
Over the past few years, we have seen a lot of articles on system architecture, including:
- Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted by Steve Freeman, and Nat Pryce in the IR wonderful bookgrowing Object oriented software
- Onion Architecture by Jeffrey Palermo
- Screaming Architecture from a blog of mine last year
- DCI from James Coplien, and Trygve Reenskaug.
- BCE by Ivar Jacobson from his bookObject oriented software engineering:a use-case driven approach
Although these architectures differ in detail, they are very similar in general. They all focus on the goal of separation. These goals are to tier software. Each layer contains at least a business rule or interface (interface).
These architectures have the following characteristics:
1. The Independent framework
These schemas do not depend on the loading of some particular library. This way you can take the framework as a tool and be constrained by the constraints of the framework.
2. testability
Business rules can be tested without a user interface, a database, a Web server, or other external factors.
3. Stand-alone user interface
The user interface can be easily changed without changing the rest of the system. A Web user interface can be replaced with a console without changing the business rules.
4. Stand-alone database
You can switch to Oracle, or SQL SERVER,MONGO,BIGTABLE,COUCHDB, or any other database. Your business rules are not tied to a specific database.
5. Independent external agents
In fact, your business rules should not be touched by the presence of the outside world.
The idea behind the beginning of the article is to integrate the ideas that make these architectures.
The rest of the parts are not translated. You need to see the original.
The Clean Architecture