Haters Build Software - Not Architectures #3
vbilopav
started this conversation in
Software Design
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
In all seriousness, and in my opinion - I don't think the goal of a software design should ever be to satisfy some particular architectural style.
I think that's nonsense, really do.
First and foremost, the primary goal is, of course, to satisfy your functional requirements.
The secondary goal is to achieve specific system attributes (also known as the "ilities" - look it up).
There are quite a number of these. In fact, Wikipedia says there are 80+ attributes your system may have.
That's a lot, but that's not the only issue.
Some ilities will be derived from your functional requirements. For example:
But that's not all.
Some "ilities" (or architecturally significant requirements to be academic about it) - are in direct contradiction with each other (or you can't have them all).
For example, you want high Maintainability (which implies Changeability and Flexibility), and you also want high Security.
Not happening.
Well, high Security assumes that you'll be introducing a couple of new layers of security; you want to have, of course, fine-grained user roles; of course, you'll need to have attached permission on those roles, permissions will have policies, and then you'll need to defined policies, perhaps on a row- level, then you need to think about row-level policy execution, etc., etc., and of course, you'll need a special and separate application that will manage all that, and finally, someone (meaning you) will have to maintain all of that, so much for maintainability.
And, finally, those "ilities" may apply to just one portion of a system, may depend on your environment, etc.
The point is that the goal of software architecture is not to achieve the pureness of a particular architectural style (Clean Architecture, for example).
Your goal should be to satisfy architecturally significant requirements (or "ilities") that are the result of careful and thorough analysis, so you may end up with a system that has specific system attributes you designed for.
That's a mouthful, but it is what it is, which brings me finally to the Clean Architecture (TM).
Correct me if I'm wrong, but according to Lindkein's posts and comments, the number one benefit of Clean Architecture is as follows:
... umm, I have questions ... 🤔
So basically, your "ilities" are already set for you; you don't have to do anything - regardless of your system's unique requirements.
And I need to figure out where even to start with this...
Since I'm now considered as the "Clean Architecture" hater (ok, I admit, I am), and, also, I'm asked to provide an alternative, so here it is:
I'm not in a business telling other people what to do, I'm in business telling computers what to do.
But I wanted to say this given the amount of discussions lately over the Clean Architecture.
Beta Was this translation helpful? Give feedback.
All reactions