Just Enough Software Architecture: A Risk-driven Approach
This is a practical guide for software developers, and different than other software architecture books. Here's why:
It teaches risk-driven architecting. There is no need for meticulous designs when risks are small, nor any excuse for sloppy designs when risks threaten your success. This book describes a way to do just enough architecture. It avoids the one-size-fits-all process tar pit with advice on how to tune your design effort based on the risks you face.
It democratizes architecture. This book seeks to make architecture relevant to all software developers. Developers need to understand how to use constraints as guiderails that ensure desired outcomes, and how seemingly small changes can affect a system's properties.
It cultivates declarative knowledge. There is a difference between being able to hit a ball and knowing why you are able to hit it, what psychologists refer to as procedural knowledge versus declarative knowledge. This book will make you more aware of what you have been doing and provide names for the concepts.
It emphasizes the engineering. This book focuses on the technical parts of software development and what developers do to ensure the system works not job titles or processes. It shows you how to build models and analyze architectures so that you can make principled design tradeoffs. It describes the techniques software designers use to reason about medium to large sized problems and points out where you can learn specialized techniques in more detail.
It provides practical advice. Software design decisions influence the architecture and vice versa. The approach in this book embraces drill-down/pop-up behavior by describing models that have various levels of abstraction, from architecture to data structure design.
RiskDriven Software Architecture
Other editions - View all
agile agile software development allocation viewtype analysis analysis paralysis Anti-pattern apply architects architectural style architecture drivers architecture models architecture-focused design beneﬁt boundary model build chapter choose client-server clients code model component assembly component instances component types conﬁguration constraints D’Souza database deﬁned deﬁnition describes design decisions design intent design model difﬁcult domain model elements encapsulation engineering risks etal evolutionary design example express Figure ﬁle ﬁlters ﬁnd ﬁrst ﬂow functionality scenario identiﬁed implementation inﬂuence internals model invariants iteration latency layers master model Moby-Dick modiﬁability module viewtype NextGenVideo object-oriented programming patterns peer-to-peer pipe-and-ﬁlter port prioritize problem programming languages provides quality attribute scenarios refactoring reﬁnement relationship requirements risk-driven model runtime viewtype Section server shows software architecture software development software development process source code speciﬁc spiral model structure sufﬁciently system context diagram techniques tecture tradeoffs understand views write Yinzer system