Clean Architecture: A Craftsman's Guide to Software Structure and Design
Rate it:
Open Preview
44%
Flag icon
Use cases do not describe how the system appears to the user.
44%
Flag icon
How the data gets in and out of the system is irrelevant to the use cases.
44%
Flag icon
The use case class accepts simple request data structures for its input, and returns simple response data structures as its output. These data structures are not dependent on anything. They do not derive from standard framework interfaces such as HttpRequest and HttpResponse. They know nothing of the web, nor do they share any of the trappings of whatever user interface might be in place.
44%
Flag icon
The business rules should be the most independent and reusable code in the system.
44%
Flag icon
Imagine that you are looking at the blueprints of a building.
44%
Flag icon
If the plans you are viewing are for a single-family residence, then you’ll likely see a front entrance, a foyer leading to a living room, and perhaps a dining room.
44%
Flag icon
The architecture would scream: “HOME.”
44%
Flag icon
Now suppose you were looking at the architecture of a library. You would likely see a grand entrance, an area for check-in/out clerks, reading areas, small conference rooms, and gallery after gallery capable of holding bookshelves for all the books in the library. That architecture would scream: “LIBRARY.”
44%
Flag icon
So what does the architecture of your application scream? When you look at the top-level directory structure, and the source files in the highest-level package, do they scream “Health Care System,” or “Accounting System,” or “Inventory Management Sy...
This highlight has been truncated due to consecutive passage length restrictions.
44%
Flag icon
Go back and read Ivar Jacobson’s seminal work on software architecture: Object Oriented Software Engineering.
44%
Flag icon
A good software architecture allows decisions about frameworks, databases, web servers, and other environmental issues and tools to be deferred and delayed. Frameworks are options to be left open.
50%
Flag icon
Practical Guide to Structured Systems Design,
52%
Flag icon
Think of Main as a plugin to the application—a plugin that sets up the initial conditions and configurations, gathers all the outside resources, and then hands control over to the high-level policy of the application.
52%
Flag icon
When you think about Main as a plugin component, sitting behind an architectural boundary, the problem of configuration becomes a lot easier to solve.
52%
Flag icon
One of the big supposed benefits of breaking a system up into services is that services are strongly decoupled from each other.
52%
Flag icon
Yes, services are decoupled at the level of individual variables. However, they can still be coupled by shared resources within a processor, or on the network. What’s more, they are strongly coupled by the data they share.
54%
Flag icon
The extreme isolation of the tests, combined with the fact that they are not usually deployed, often causes developers to think that tests fall outside of the design of the system. This is a catastrophic point of view. Tests that are not well integrated into the design of the system tend to be fragile, and they make the system rigid and difficult to change. The issue, of course, is coupling. Tests that are strongly coupled to the system must change along with the system. Even the most trivial change to a system component can cause many coupled tests to break or require changes.
61%
Flag icon
We’ve seen several of these oscillations just in the last decade or so since the web became prominent. At first we thought all the computer power would be in server farms, and the browsers would be stupid. Then we started putting applets in the browsers. But we didn’t like that, so we moved dynamic content back to the servers. But then we didn’t like that, so we invented Web 2.0 and moved lots of processing back into the browser with Ajax and JavaScript. We went so far as to create whole huge applications written to execute in the browsers. And now we’re all excited about pulling that ...more
78%
Flag icon
Object Oriented Design with Applications by Grady Booch.
79%
Flag icon
You can’t make a reusable framework until you first make a usable framework.
1 3 Next »