Dimensionality
It very much depends who you are talking to. I find the best way is to find a similar metaphor from their experience.
In my particular case, most of the people I work with have some kind of engineering or mathematical knowledge, and I find that the metaphor of a problem space helps... and once you can work with that, the dimensionality of the problem space is a useful metric to work with when discussing complexity.
Warning: Impending Complex Explanation!
It's not the easiest metaphor to start with, but when you start to get it, it's a great way to explain complexity, how it grows and the impact it has.
Think of every single thing the user has to think about or decide when looking at what you are designing as a dimension in a matrix or graph. Those dimensions then define orthogonal axes in a volume - call it the problem space. Every possible option that the user could choose or want to choose is in that problem space. As in, axes that are at right angles to each other. Up to 3 axes, this is easy enough to visualize, but after that it gets hard.
If you've only got one variable or choice, your problem space is a line
Linear choices are easy. They're either A or B or a point on the line from A to B.
If you've got two variables or choices the problem space is a 2d shape
They're usually easy enough. You're either looking at the corners of a square or all of the cells in a grid.
If you've got three variables or choices, it's a 3d problem space.
Most people do okay when dealing with specific examples of this that they already understand, but adding an extra dimension like this increases the number of combinations available to the user (the volume of the problem space) exponentially rather than linearly. It's also harder to represent on a 2d screen.
If you've got more dimensions than that, life gets complicated.
What to do about high-dimensionality
When I'm working with a design and trying to identify & reduce complexity, I start by working out how many dimensions exist in my problem-space. I work out all the choices the user has to make, and all the variables required to represent those choices. That tells me how many dimensions there are in the problem-space. As a general rule, the answer to "how many dimensions?" is "too many" at first.
I then look for strong correlations between values on those dimensions. Stuff like:
- "If X is high then Y is always also high, if X is low then Y is also low"
- "If X is high then Y is always low, if X is low then Y is always high"
- "These values for X only exist when Y is 1, and those values for X only exist when Y is 0"
- "Only one of X, Y or Z can be true at a time"
- "These settings only have a value at all if that setting is TRUE"
Where those kinds of strong correlation exist in a way that can be conveyed to the user, you don't need to present the user with each of those dimensions anymore. You can instead present the user with a single combined dimension instead of those two - if the values must be directly related or opposed then it's effectively just one decision for the user and is best presented as such.
What if it's still too complex?
Once I've done that round of reduction and dividing, I start looking at slightly less strong correlations. If there's a pretty strong correlation between two possible choices, but one or two users or use cases don't fit that correlation, the questions become "why don't they fit?" and "is this the right tool/feature/product for them?". It usually means we're a bad user/product fit for them, that they're doing something misguided or that we've just missed something and need to add another dimension again to cover it.
All of these are good things to know, and investigating that will usually lead to a conclusion that, whilst it might not make everyone happy, will achieve the most happiness overall.
A strong metric
It may not be quite what you're after, but working out the dimensionality of any given area of a product can be a handy metric for complexity. If the dimensionality gets too high, it tells you that you might need to rethink in some way, or it might provide context for why users are struggling.
This approach might not solve every problem, or help you find pre-existing problems in a product that's already out in the world... but it might well help you put a problem you're already aware of into context and help you move forward. It's also something that you can build into a design review / critique process as a metric to compare against metrics from stats & user testing.
You'll also notice that I don't particularly talk about choices about which UI components to use... because that's not the level where the complexity usually hits. It's about the choices a user needs to make and the information they need to have in their head to make them. Choosing the controls the user uses to express a decision is important, but minimizing the number of decisions to be made is considerably more so!
Hopefully that helps. If it's not very clear, I have some of the ideas from this in a (quite possibly even less clear) blog post over here.
Impact on UI Design
(added by request of the question author)
When it comes to applying this to UI design, I've generally found that the UI design questions become a lot simpler and less numerous when you've first worked to reduce the dimensionality of the problem space.
With a reduced number of decisions to be made, the UI design process immediately becomes simpler.
Also, if you identify that groups of those settings do not influence each other at all (changes to them are completely separated from each other in the problem space)... then that suggests they should be separate controls or groups of controls - further reducing the complexity.
Using your definitions above, reducing the dimensionality immediately reduces the density of controls. With less controls, you have more room to move in the design of the UI.
By reducing the density of controls, you're also making diversity of controls less of an issue - with fewer controls, it's a lot easier to focus down on building a set of common UI components to allow the user to interact with them, lowering the barriers to getting a good design language / system.
To sum up, reducing the dimensionality also removes a lot of the barriers to producing a strong UI design. It won't do the design work for you, but it will reduce the amount and complexity of what you need to do, and the process of doing it will often suggest UI approaches that you might not otherwise have considered.