software architecture
A system’s ability to meet its desired (or required) quality attributes is substantially determined by its architecture. If you remember nothing else from this book, remember that.
Len Bass • Software Architecture in Practice, 4th Edition
Software architecture is a manifestation of the earliest design decisions about a system, and these early bindings carry enormous weight with respect to the system’s remaining development, its deployment, and its maintenance life. It is also the earliest point at which these important design decisions affecting the system can be scrutinized.
Rick Kazman • Software Architecture in Practice, 4th Edition
architecture maniffests early design decisions
When production code is important, then it is a minority: most project code is scaffolding. Tests, deployments, linting, verification, utilities for local development, handy admin interfaces–scaffolding is code that helps us safely and efficiently change production code.
Augmented Coding: an Experience Report
If you want your implementation to conform to an architecture, then it must conform to the design decisions prescribed by the architecture. It must have the set of elements prescribed by the architecture, these elements must interact with each other in the fashion prescribed by the architecture, and each element must fulfill its responsibility to... See more
Paul Clements • Software Architecture in Practice, 4th Edition
architecture should prescibe constraints on implementation
Architecture represents a common abstraction of a system that most, if not all, of the system’s stakeholders can use as a basis for creating mutual understanding, negotiating, forming consensus, and communicating with each other. The architecture—or at least parts of it—are sufficiently abstract that most nontechnical people can understand it to... See more
Paul Clements • Software Architecture in Practice, 4th Edition
helps with communiation among stakeholders
The software development community is coming to grips with the fact that roughly 80 percent of a typical software system’s total cost occurs after initial deployment. Most systems that people work on are in this phase. Many programmers and software designers never get to work on new development—they work under the constraints of the existing... See more
Rick Kazman • Software Architecture in Practice, 4th Edition
- If your system requires high performance, then you need to pay attention to managing the time-based behavior of elements, their use of shared resources, and the frequency and volume of their interelement communication.
- If modifiability is important, then you need to pay attention to assigning responsibilities to elements and limiting the
Paul Clements • Software Architecture in Practice, 4th Edition
Once an architecture has been defined, it can serve as the basis for incremental development. The first increment can be a skeletal system in which at least some of the infrastructure—how the elements initialize, communicate, share data, access resources, report errors, log activity, and so forth—is present, but much of the system’s application... See more
Paul Clements • Software Architecture in Practice, 4th Edition
enabling incremental development
once the architecture has been agreed upon, it becomes very costly—for managerial and business reasons—to significantly modify it. This is one argument (among many) for analyzing the software architecture for a large system before settling on a specific choice.
Paul Clements • Software Architecture in Practice, 4th Edition
influences on organizational structure