Critical analysis of SOLID
Though I have realized in time (certainly like many others) that the SOLID principles apply almost as well to information systems as to object-oriented classes and interfaces, some parts deserve discussion. Indeed, like for any other principle, a strict, not thoughtful, application may lead to problems. And even when the principles apply well to a given context, they may have strong side effects that make them ultimately more harmful than helpful. The necessary measured approach has led to lots of polemics and you must be careful in handling these principles.
Limits of the separation of responsibilities
The first (and maybe most important) principle, namely the one about separation of responsibilities, is sometimes hard – perhaps impossible in some cases – to apply to services or high-level modules of an application. With classes, there is always the possibility to decompose a class without much impact on the whole application, once compiled...