The Reuse Perspective

As reuse becomes a fundamental part of software engineering, it changes the way we view software. (Software is defined here to be all software content objects, including requirements, architectures, designs, code artifacts at both the system and component level, as well as the relationships among them.) Before reuse, software was only of temporary interest, to be created, delivered, and forgotten - even though it was frequently maintained for decades. The software that was produced got no respect from the industry as an object of inquiry; it was considered to be a special case, one-time effort. The generic methods and processes of producing it were considered to be of much greater interest and importance. The concept of reuse comes from the recognition that, within application domains, software problems and solutions begin to coalesce and stabilize around a certain conventional agreed-upon set of architectures. Design becomes variation on a standard theme. As the problem/solution set is refined and matures, the view of software changes from something that is transient and special case to something that is timeless, enduring, worthy of respect and inquiry. When this point is reached, the software industry is well on its way to becoming a traditional engineering discipline.