Archiv pro Červenec 2019
Complex software systems
If you have an experience with complex software systems, especially those that grow continuously for years, you realise that in such systems any internal factor can potentially interact with any other factor. What means in the most extreme situation all factors can interact with all others. If you have n factors in your system, there can be maximum n . (n - 1) / 2 interactions, what means it is a cubical function. What such a factor in a systém is? It is any relevant business element/value, represented by a property or a variable. And what is such an interaction? It is any activity, which is influenced/modified by such factors.
In reality there are many many factors in systems. And there is much much less interactions among them than is the theoretical max limit. But what is important, that at any time a task or a need can come which links any two factors in your system. You never know.
There are some recommendations or standards how to build bigger software systems, but I am not sure if any of them takes in consideration the fact mentioned. Usually it is considered that there are some ‘conventional’ (usual, expected) factor relations in systems. And if a requirement of a ‘non-standard’ interaction comes, it is solved using some specific technique. One usual architectureal standard is system layering, where lower layers can’t see the upper ones. But in reality such a need can come. It is then really exception from rule.
But where I’m aiming. If you are a fan of some strict software approaches, like consistent dependency injection and you rigidly refuse static entities in your system, you can (and you most probably will) get into trouble in regard of flexibility, considering the feature of complex software systems mentioned.
12. 7. 2019 | ctverec F1 | 0