A meta-analysis of three different notions of software complexity
Discussion of different perspective of what makes software “complex” and how to define and measure complexity.
https://typesanitizer.com/blog/complexity-definitions.html
Hickey states that this notion of simplicity is objective, “we can probably go and look and see, I don’t see any connections, I don’t see where this twists with something else.”
According to Ousterhout, “Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system.”
system is considered to be obvious if “a developer can quickly understand how the existing code works and what is required to make a change” and they “can make a quick guess about what to do, without thinking very hard, and yet be confident that the guess is correct”
“Complexity is caused by two things: dependencies and obscurity”
“A dependency exists when a given piece of code cannot be understood and modified in isolation; the code relates in some way to other code, and the other code must be considered and/or modified if the given code is changed”.
“Obscurity occurs when important information is not obvious.”
“obvious” dependencies are better than “non-obvious” ones
Tellman offers the following definition of complexity: “The sum of every explanation. Weighted heavily towards future explanations.