People are often intimidated by the word ‘quantum’. It has a whole set of connotations behind it that make people afraid they’re going to get in way over their heads. In truth, quantum mechanics isn’t all that hard to understand, it just isn’t very useful in everyday life. Some of the methods used to analyze quantum mechanical systems, however, have analogues in the world of requirements analysis.
The first thing to understand about quantum mechanics (QM) is that you can’t fully understand anything about a quantum mechanical system. One of the postulates of QM is that you can’t ever know a particle’s total momentum. You can get close, but never pin it down 100%.
The second thing to know about QM is that real systems are incredibly complicated. There is no theoretical reason you can’t describe every atom in the universe with an equation, it’s just that those equations would be mind-bogglingly complex.
How do scientists get around these problems? They use a model that simplifies things in order to gain a better understanding of the system. They also use different types of models to examine different aspects of a system. Through iterative refinements on these models, they learn gain valuable insights into the system without ever knowing everything about it.
The classic model professors use to describe a quantum mechanical system is known as the ‘particle in a box’. By thinking of an electron as a particle in a one-dimensional box, scientists were able to realize that it can only exist in discrete (quantized) energy states. This model is an extreme simplification of the behavior of an electron on an atom, but it still provided early scientists with key insights into the nature of the universe.
How does all of this relate to requirements analysis?
Software systems are nowhere near as complex as quantum mechanical systems, but they can still be quite hard to comprehend. In fact, it may not be possible for one person to fully understand every moving piece of a large enterprise-level system. It can also be hard to nail down everything there is to know about individual pieces of a system.
Models in requirements, as in QM, can help solve these problems. Let’s look at the first one – systems can be very complex and hard to comprehend. Use of a model allows you to pare down your analysis to the parts that are important to you right now. You can use a model to focus on user interface, performance, usage, or any number of other system properties. The important thing to remember here is that the model is only showing one aspect of the system. You need several different models to fully understand what is going on. Furthermore, if you make any single model too complex, you lose the benefit of modeling the system in the first place.
Second, models can allow you to analyze every detail of portions of the system. In this case, you aren’t interested in abstracting detail but rather exploring all the detail you can get. Models help here as well. Having a framework around requirements allows you to iteratively refine the picture, look for gaps and vague areas, and continually improve your picture. Without the model, you wouldn’t know where you needed to improve.
At first, the connection between the world of quantum mechanics and requirements may seem like a bit of a stretch, but the concept of using a model to analyze a system is universally applicable. Next time you start requirements analysis for a complex system, remember that the abstraction, simplification, and structure that models provide can make even the most complex systems easy to understand.