Perfect software architecture does not exists !
Low cohesion, modularity, dependency inversion, responsibility, interface segregation, overengineering, stovepipe syndrome, silver bullet or shotgun surgery… All of these techniques may lead you to the best solution but the mirror edge is quite thin. At one extreme you will provide an architectural marvel, maybe useless. On the other you may create a genie in a bottle. This article will try to draw some typical situations of the real development world. We can symbolize a software feature by a circle and,…