Software Reuse and Software Product Lines
Since the early 1990s, the common notion of software reuse has gone through the all-too-familiar cycle in software engineering of great hype followed by great cynicism. Common in this case refers to the notion of software reuse by placing reusable chunks of software on a shelf in a reuse library and then hoping that someone will later reuse these already written, already tested, already commercially hardened chunks of code in other applications, with great savings in cost and time.
The analogy to building software like building houses, with parts off the shelf from a building supply store, was too compelling to resist, but unfortunately was also naive. Many organizations that attempted to create software reuse libraries ended up with vast junkyards of idiosyncratic software of unknown pedigree, rarely leading to any reuse or savings. These experiences have led many software developers to the conclusion that software reuse simply doesn't work. It is clearly time for a better approach.
Predictive, Practical, Optimal Software Reuse
In 1992, BigLever Software founder and CEO, Dr. Charles Krueger, authored a widely referenced paper entitled Software Reuse (available from our Publications page) which presents a taxonomy of 8 categories of software reuse. It shows that the common notion of software reuse through libraries of reusable components is among the least effective of the 8 categories. It also shows that there are specific opportunities where software reuse can be very effective. The most effective of the 8 categories are now being used with great practical success in the emerging field of Software Product Lines.
The characteristic that distinguishes software product lines from the common reuse efforts is predictive versus opportunistic software reuse. Rather than put general software components into a library in hopes that opportunities will arise for reuse, software product lines only call for software artifacts to be created when reuse is predicted in one or more products in a well-defined product line.
BigLever Software has taken the notion of software product lines to the extreme and created the tools and methods for one of the most highly optimized, most practical forms of software reuse. With BigLever, development organizations can create and maintain a single collection of core software assets that are reused and shared across a software product line.


