Balancing Coupling in Software Design (Pearson, 2024)
Learn How Coupling Impacts Every Software Design Decision You Make–and How to Control It
“Coupling is one of those words that is used a lot, but little understood. Vlad propels us from simplistic slogans like ‘always decouple components’ to a nuanced discussion of coupling in the context of complexity and software evolution. If you build modern software, read this book!” –Gregor Hohpe, author of The Software Architect Elevator
If you want to build modular, evolvable, and resilient software systems, you have to get coupling right. Every design decision you make influences coupling, which in turn shapes the design options available to you. Despite its importance, coupling often doesn’t receive the attention it deserves–until now.
Since the dawn of software engineering, it’s been clear that proper management of coupling is essential for architecting modular software systems. This topic has been extensively researched over the years, but some of that knowledge has been forgotten, and some of it is challenging to apply in this day and age. In Balancing Coupling in Software Design, author Vlad Khononov has built a model that not only draws on this accumulated knowledge, but also adapts it to modern software engineering practices, offering a fresh perspective on modular software design.
With principles grounded in practice, Vlad teaches you not only to navigate the multi-dimensional nature of coupling but also to use coupling as a tool for managing complexity and increasing modularity. And who knows, maybe this book will change the way you think about software design as whole.
- Defines the concept of coupling and the role it plays in system design and architecture
- Explains how coupling can both increase complexity and foster modularity of a system
- Introduces a holistic model that turns coupling into a tool for designing modular software
- Shows how to evolve design decisions to support continuous growth of software systems
- Illustrates the discussed principles with detailed examples based on real-life case studies
Balancing Coupling in Software Design is available on Amazon, InformIT, and other major book stores.
Learning Domain-Driven Design (O’Reilly, 2021)
Building software is harder than ever. As a developer, you not only have to chase ever-changing technological trends but also need to understand the business domains behind the software. This practical book provides you with a set of core patterns, principles, and practices for analyzing business domains, understanding business strategy, and, most importantly, aligning software design with its business needs.
Author Vlad Khononov shows you how these practices lead to robust implementation of business logic and help to future-proof software design and architecture. You’ll examine the relationship between domain-driven design (DDD) and other methodologies to ensure you make architectural decisions that meet business requirements. You’ll also explore the real-life story of implementing DDD in a startup company.
With this book, you’ll learn how to:
- Analyze a company’s business domain to learn how the system you’re building fits its competitive strategy
- Use DDD’s strategic and tactical tools to architect effective software solutions that address business needs
- Build a shared understanding of the business domains you encounter
- Decompose a system into bounded contexts
- Coordinate the work of multiple teams
- Gradually introduce DDD to brownfield projects
Learning Domain-Driven Design is availalbe on Amazon and other major book stores.
What is Domain-Driven Design? (O’Reilly, 2019)
The majority of software projects are delivered late or over budget, or they fail to meet the client’s requirements. Attack the problem head-on and build better software with domain-driven design (DDD)—a methodology that aligns software design with a business’s domain, needs, and strategy. In this report, Vladik Khononov introduces the key patterns and practices of domain-driven design and shows you how to apply them to improve the success rate of your projects.
You’ll discover how to explore, analyze, and model your company’s business domain along with techniques for implementing that knowledge. Once you understand the fundamentals, you’ll be able to selectively apply DDD concepts to analyze and simplify your codebase, explore new requirements, and more.
You’ll learn:
- Key domain-driven design concepts, including ubiquitous language and bounded contexts
- How to employ “event storming” to streamline the process of discovering domain knowledge and building a ubiquitous language
- Patterns and techniques for implementing business logic and architecting solutions that deliver business goals
- How to maintain and evolve both tactical and strategic designs over time
What is Domain-Driven Design is available exlusively on O’Reilly online learning platform.
Domain-Driven Design: The First 15 Years
I was honored to participate in this project, alongside Martin Fowler, Mel Conway, Rebecca Wirfs-Brock, and other industry leaders:
The book can be downloaded for from leanpub.