updated 3d ago
Software Architecture: The Hard Parts
An architect implements fitness functions to build protections around unexpected change in architecture characteristics. In the Agile software development world, developers implement unit, functional, and user acceptance tests to validate different dimensions of the domain design. However, until now, no similar mechanism existed to validate the arc
... See morefrom Software Architecture: The Hard Parts by Zhamak Dehghani
Glenn Goodrich added 4mo ago
Architects must watch out for composite architecture characteristics—ones that aren’t objectively measurable but are really composites of other measurable things. For example, “agility” isn’t measurable, but if an architect starts pulling the broad term agility apart, the goal is for teams to be able to respond quickly and confidently to change, ei
... See morefrom Software Architecture: The Hard Parts by Zhamak Dehghani
Glenn Goodrich added 4mo ago
Static coupling Represents how static dependencies resolve within the architecture via contracts. These dependencies include operating system, frameworks, and/or libraries delivered via transitive dependency management, and any other operational requirement to allow the quantum to operate.
from Software Architecture: The Hard Parts by Zhamak Dehghani
Glenn Goodrich added 4mo ago
While experience is useful, scenario analysis is one of an architect’s most powerful tools to allow iterative design without building whole systems. By modeling likely scenarios, an architect can discover if a particular solution will, in fact, work well.
from Software Architecture: The Hard Parts by Zhamak Dehghani
Glenn Goodrich added 4mo ago
High functional cohesion refers structurally to the proximity of related elements: classes, components, services, and so on. Throughout
from Software Architecture: The Hard Parts by Zhamak Dehghani
Glenn Goodrich added 4mo ago
Architects shouldn’t break a system into smaller parts unless clear business drivers exist. The primary business drivers for breaking applications into smaller parts include speed-to-market (sometimes called time-to-market) and achieving a level of competitive advantage in the marketplace. Speed-to-market is achieved through architectural agility—t
... See morefrom Software Architecture: The Hard Parts by Zhamak Dehghani
Glenn Goodrich added 4mo ago
Each understands the common scope under question: architects understand the coupling characteristics, developers understand the scope of behavior, and the operations team understands the deployable characteristics.
from Software Architecture: The Hard Parts by Zhamak Dehghani
Glenn Goodrich added 4mo ago
Thus, here’s our advice for modern trade-off analysis in software architecture: Find what parts are entangled together. Analyze how they are coupled to one another. Assess trade-offs by determining the impact of change on interdependent systems.
from Software Architecture: The Hard Parts by Zhamak Dehghani
Glenn Goodrich added 4mo ago
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.
from Software Architecture: The Hard Parts by Zhamak Dehghani
Glenn Goodrich added 4mo ago