Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures
Rate it:
Open Preview
1%
Flag icon
Don’t try to find the best design in software architecture; instead, strive for the least worst combination of trade-offs.
2%
Flag icon
One of the most effective ways of documenting architecture decisions is through Architectural Decision Records (ADRs).
2%
Flag icon
Fundamentals of Software Architecture (O’Reilly).
3%
Flag icon
2017 book Building Evolutionary Architectures
3%
Flag icon
Fitness functions validate architecture characteristics, not domain criteria; unit tests are the opposite. Thus, an architect can decide whether a fitness function or unit test is needed by asking the question: “Is any domain knowledge required to execute this test?” If the answer is “yes,” then a unit/function/user acceptance test is appropriate; if “no,” then a fitness function is needed.
4%
Flag icon
Fitness functions represent a checklist of important principles defined by architects and run as part of the build to make sure developers don’t accidentally (or purposefully, because of external forces like schedule pressure) skip them.
6%
Flag icon
Static coupling refers to the way architectural parts (classes, components, services, and so on) are wired together: dependencies, coupling degree, connection points, and so on.
6%
Flag icon
Dynamic coupling refers to how architecture parts call one another: what kind of communication, what information is passed, strictness of contracts, and so on.
7%
Flag icon
“Software architecture” is the stuff you can’t Google answers for.
7%
Flag icon
the first step in trade-off analysis is untangle the dimensions of the problem, analyzing what parts are coupled to one another and what impact that coupling has on change.
7%
Flag icon
Coupling Two parts of a software system are coupled if a change in one might cause a change in the other.
7%
Flag icon
An architecture quantum is an independently deployable artifact with high functional cohesion, high static coupling, and synchronous dynamic coupling. A common example of an architecture quantum is a well-formed microservice within a workflow.
7%
Flag icon
An easy way to think about the difference is that static coupling describes how services are wired together, whereas dynamic coupling describes how services call one another at runtime.
7%
Flag icon
static coupling analyzes operational dependencies, and dynamic coupling analyzes communication dependencies.