My TypeScript Software Design & Architecture book just prelaunched! Check out


The Dependency Rule
Updated Sep 17th, 2019 / 4 min read
A software architecture rule that specifies the relationship between layers, namely that an inner layer should never rely on anything from an outer layer.
Stable Abstraction Principle (SAP)
Updated Sep 15th, 2019 / 1 min read
The more stable a component is, the more abstract it should be
Stable Dependency Principle (SDP)
Updated Sep 15th, 2019 / 2 min read
Components dependencies should be in the direction of stability
Acyclic Dependency Principle (ADP)
Updated Sep 15th, 2019 / 2 min read
One of several component design principles that states that the "dependency graph of components should have no cycles"
Conway's Law
Updated Jul 3rd, 2019 / 3 min read
Any organization that designs a system (defined more broadly here than just information systems) will inevitably produce a design whose structure is a copy of the organization's communication structure.
Active Record
Updated May 25th, 2019 / 1 min read
An `Active Record` is a model that stores an in-memory representation of a database row or document.
Clean Architecture
Updated May 25th, 2019 / 1 min read
Clean architecture refers to organizing the project so that it's easy to understand and easy to change as the project grows.
3 Categories of Hard Software Problems
Updated May 15th, 2019 / 3 min read
Generally speaking, there are 3.
Abstract Factory
Updated Apr 16th, 2019 / 5 min read
The abstract factory pattern provides a way to encapsulate a group of individual factories that have a common theme without specifying their concrete classes.
Updated Apr 10th, 2019 / 1 min read
'You aren't gonna need it'
Class Invariant
Updated Apr 9th, 2019 / 1 min read
Invariants are a form of ensuring data integrity of an object.
Anemic Domain Model
Updated Apr 9th, 2019 / 6 min read
When the classes that describe the model and the classes that perform operations on the model are separate. The services contain all the domain logic while the the domain objects themselves contain practically none.
Concrete class
Updated Apr 4th, 2019 / 6 min read
Classes that are complete with fully implemented methods.
Dependency Inversion
Updated Apr 3rd, 2019 / 5 min read
A de-coupling technique where both high-level and low-level classes depend on the same abstraction, inverting the dependency relationship.