- variability across systems and over time is why reuse in software engineering is nontrivial." The key word here is "variability." Problems and their solutions in the software world vary all over the map, and having a "close" solution just isn't good enough. There is so much variability across and within domains that the likelihood of someone having previously faced the identical problem you are currently facing is nearly nil.
One person who read my writings on the subject said that I had "set software reuse back by twenty years," to which I replied (in one of those rare, "clever-comeback" moments), "You simply don't realize that it is twenty years behind where you think it is!"
Now that I've thrown cold water on the subject of reuse, let me share one piece of positive reuse data that may astound you (and will certainly make you wonder about which side of this fence I am really on). At the NASA-Goddard SEL, they have found that they can build software consisting of roughly 70 percent reused components. How does the SEL do it? They have a narrow application domain-flight dynamics software-consisting of problems whose solutions over the years are very similar to one another. So if you narrow that variability down sufficiently-by working in a focused problem domain whose fundamental-solution approaches rarely change-you can achieve some pretty potent reuse benefits. But variability is still the key factor.
Let's end this column with a little pop quiz. What's the problem with reuse? (100 points if you answered, "It's the variability in the problems we solve, and in the solutions we create.") Is that problem likely to go away soon? (I hope you'll agree with me when I say, "Only if we can find ways to diminish the problem of variability.")
I am reminded of an old saying: "There is no scientific reason why the bumblebee should be able to fly" (because of its "impossible" weight-to-wingspan ratio). When we confront that conundrum, the sensible among us don't question the practice of bumblebee flying, we question the theory that says it is impossible. It's high time for theory to incorporate studies of practice into its way of moving the field forward. Until we do that, we will be stuck either trying to discourage bumblebees from flying, or criticizing them for ignoring theory.