1

What is complexity related to number of operations/interactions between objects within a system? as that number increases the programmer capability of understanding and maintaining the system degrade.

  • 4
  • @DavidArno This question is not about user experience, but about interaction between classes/objects etc. – Tulains Córdova Oct 4 '16 at 13:08
  • 1
    @TulainsCórdova User interaction was explicitly mentioned in the earlier versions of the question. – Eiko Oct 4 '16 at 13:13
  • 1
    As your question now stands, you are just asking about coupling. You are correct that as the amount of coupling goes up, so the ability to understand and maintain the system goes down. – David Arno Oct 4 '16 at 13:15
  • 1
    The concept of complexity is based in the amount of possible interactions between components, so there is no specific name for what you describe. What you describe is simply called "complexity". – Tulains Córdova Oct 4 '16 at 13:16
3

High coupling may be the closest term. People may argue that having a lot of systems does not necessarily imply high coupling. Hopefully, the systems are well-architected with clearly-defined interfaces and separate concerns. But the OP states that all these systems can interact with every other system. In a streamlined system, every component should not be able to interact with every other component, to address complexity. This is why, for example, networking is laid out in a stack where each layer can only communicate with the layer above and below it.

If there are n components in a system, there are n^2 interactions between components, and 2^n distinct sub-systems. This is a combinatorial explosion in complexity that no developer can manage for even moderate n.

1

It's object abstraction, but usually referred to as abstraction. The principle is that most people can only comprehend 7 +/-2 given objects in short term memory; therefore layers of abstraction through the system should strive to stay within this level.

High Coupling or intracomponent linkage as mentioned by gardenhead is another form of complexity that exists in software systems, but usually the level of intracomponent linkage refers to favoring inheritance over object composition.

But regardless, the four major types of complexity in a software system (abstraction, encapsulation, modularity, hierachy) are correlated. So usually, a breakdown in modularity (coupling) is a breakdown of general abstraction. Specifically, anytime you reduce modularity, you almost always simultaneously reduce encapsulation.

  • It's actually 7 +/- 2. – gardenhead Oct 4 '16 at 16:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.