Clean Architecture: A Craftsman's Guide to Software Structure and Design
Rate it:
Open Preview
6%
Flag icon
When software is done right, it requires a fraction of the human resources to create and maintain.
6%
Flag icon
The goal of software architecture is to minimize the human resources required to build and maintain the required system.
6%
Flag icon
The measure of design quality is simply the measure of the effort required to meet the needs of the customer. If that effort is low, and stays low throughout the lifetime of the system, the design is good. If that effort grows with each new release, the design is bad. It’s as simple as that.
7%
Flag icon
These developers buy into a familiar lie: “We can clean it up later; we just have to get to market first!” Of course, things never do get cleaned up later, because market pressures never abate. Getting to market first simply means that you’ve now got a horde of competitors on your tail, and you have to stay ahead of them by running as fast as you can.
7%
Flag icon
The only way to go fast, is to go well.
8%
Flag icon
The second value of software has to do with the word “software”—a compound word composed of “soft” and “ware.” The word “ware” means “product”; the word “soft”… Well, that’s where the second value lies.
8%
Flag icon
If you give me a program that does not work but is easy to change, then I can make it work, and keep it working as requirements change. Therefore the program will remain continually useful.
8%
Flag icon
The first value of software—behavior—is urgent but not always particularly important. The second value of software—architecture—is important but never particularly urgent.
10%
Flag icon
Notice how well those three align with the three big concerns of architecture: function, separation of components, and data management.
15%
Flag icon
OO is the ability, through the use of polymorphism, to gain absolute control over every source code dependency in the system. It allows the architect to create a plugin architecture, in which modules that contain high-level policies are independent of modules that contain low-level details. The low-level details are relegated to plugin modules that can be deployed and developed independently from the modules that contain high-level policies.
16%
Flag icon
Event sourcing is a strategy wherein we store the transactions, but not the state. When state is required, we simply apply all the transactions from the beginning of time.
26%
Flag icon
Gather together those things that change at the same times and for the same reasons. Separate those things that change at different times or for different reasons.
26%
Flag icon
26%
Flag icon
A good architect finds a position in that tension triangle that meets the current concerns of the development team,
29%
Flag icon
Common Closure Principle (CCP),
29%
Flag icon
Stable Dependencies Principle (SDP),
32%
Flag icon
The strategy behind that facilitation is to leave as many options open as possible, for as long as possible.
32%
Flag icon
The primary purpose of architecture is to support the life cycle of the system.
32%
Flag icon
Good architecture makes the system easy to understand, easy to develop, easy to maintain, and easy to deploy. The ultimate goal is to minimize the lifetime cost of the system and to maximize programmer productivity.
33%
Flag icon
A good architect maximizes the number of decisions not made.
43%
Flag icon
An Entity is an object within our computer system that embodies a small set of critical business rules operating on Critical Business Data.
43%
Flag icon
The Entity object either contains the Critical Business Data or has very easy access to that data. The interface of the Entity consists of the functions that implement the Critical Business Rules that operate on that data.
45%
Flag icon
Growing Object Oriented Software with Tests