What is name of this type of complexity?

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.


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.

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.


Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *