2 Comments
User's avatar
Mauro Chojrin's avatar

Interesting post. Thanks! I'm finding it difficult to grasp the difference with just SOLID, particularly the D. Isn't it the same concept? If I make every method receive an interface instead of a concrete class, isn't the goal achieved?

Expand full comment
Emmanuel Valverde Ramos's avatar

All architectures follow software development principles, so what you mention about the D (in SOLID) is partially true, but only partially. As the beginning of the article states:

“Architecture is about the important stuff… whatever that is.”

— Ralph Johnson, quoted in Fundamentals of Software Architecture

If you keep that in mind, you’ll realize that most architectures typically rely on software design principles, while also adding concepts that help you interpret and reason about that architecture.

For example: the concept of driving and driven ports, the idea of the application layer, and other mental models , these go far beyond what SOLID alone can offer (or even aims to).

I don’t know if this helps, but personally, the best reference for me is DDD (Domain-Driven Design), along with its tactical and strategic patterns.

Expand full comment