I designed an application framework by considering the SOLID design principles and supported by design patterns. However, I wonder if there are any automated tools or well-known approaches to evaluate whether the SOLID design principles are satisfied or violated in the proposed design?
3
At least the S, O, and L in SOLID stand for semantic principles – one has to understand what the code does and what its purpose is to validate those things. I am pretty sure A.I. research has not gotten so far (at least, not yet) to make a computer really understand the meaning of programs. So don’t expect anything automatic nowadays.
But you have also asked for “well-known approaches” – well, there is one very well-known approach, it is called “code review by an expert” and I am pretty sure you have heard of it 😉 So the best suggestion I can give you is to post some parts of your code at https://codereview.stackexchange.com/ and discuss it there.
1
Even if it were possible, I think the effort might be wasted. What you can do is measure the impact of adherence to the principles has on the maintainability of your code. Coupling, cohesion, and cyclomatic complexity can all be measured by static analysis tools.
Also, if you’re using .NET, you might be able to leverage StyleCop to create rules for adherence to certain guidelines. Again that might be more effort than it’s worth. Either way, it can’t hurt to use it.