software architecture
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
Decisions at all stages of the life cycle—from architectural design to coding and implementation and testing—affect system quality. Therefore, quality is not completely a function of an architectural design. But that’s where it starts.
Paul Clements • Software Architecture in Practice, 4th Edition
The fidelity of the system increases as extensions are added, or early versions are replaced by more complete versions of these parts of the software. In some cases, the parts may be low-fidelity versions or prototypes of the final functionality; in other cases, they may be surrogates that consume and produce data at the appropriate rates but do... See more
Paul Clements • Software Architecture in Practice, 4th Edition
enabling incremental development
- 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
Every architecture, no matter what it is, partitions possible changes into three categories: local, nonlocal, and architectural.
- A local change can be accomplished by modifying a single element—for example, adding a new business rule to a pricing logic module.
- A nonlocal change requires multiple element modifications but leaves the underlying
Paul Clements • Software Architecture in Practice, 4th Edition
Coding with AI takes (and enables) more discipline.
I need more tests, more checks and constraints. This takes more scaffolding, which is now fast to create.
More “how will I know this works?” and less “how will I implement this?”
I need to learn how to influence the AI, and channel frustration into guidance.
More high-level thinking about what the... See more
I need more tests, more checks and constraints. This takes more scaffolding, which is now fast to create.
More “how will I know this works?” and less “how will I implement this?”
I need to learn how to influence the AI, and channel frustration into guidance.
More high-level thinking about what the... See more
Jessitron • Augmented Coding: an Experience Report
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.