Anytime you open up a design tool, and see something like this ...
... you know you'll need stiff drink at the end of the day. It doesn't matter if the boxes represent tables or classes – it's a complicated mess. In this case, the screenshot is from a Visual Studio 2005 Analysis Services project.
Anyone have some aspirin to spare?
Comments
On a standard page, the diagram is solid black. Not so much because there's a lot of classes (700), but because there are so many linkages and there's no way to arrange those to not look like a mess. Everything just links to everything. In every possible way: inheritance; encapsulation; references; interfaces, you name it.
A: A .22 and 1 bullet
The question is if there is a way to develop an app like that without ending up with a class- or data-model like that. I'd like to hear your thoughts about that, as I'm working on an app that is heading the same way.
The idea in your scenario would be to reduce the coupling between classes (modules, services, pieces of functionality) in the ERP system as much as possible.
I'd look at design patterns and tools that can give you inversion of control and dependency injection. Keep the modules as isolated as possible so that a change in A doesn't ripple into B, and both A and B can be tested in isolation.
I know that the idea would be to reduce the coupling, what I really wanted to know was how much less edges should there be on the diagram before the fear starts to disapear ?
After all, there is only so much coupling you can eliminate.
Well, there will always be edges. I guess the answer would be "it depends".
If you can program to abstractions (like the interface IOrderService) instead of concrete implementations (OrderService) than it can help to keep these different modules/services/areas of functionality loosely coupled.