Software reuse reduces the cost of developing and maintaining new software. This has been a driver for the widespread adoption of the Service Oriented Architecture (SOA) approach to building systems. SOA technologies, such as Web Services, allow applications to be constructed from reusable components which can be shared between applications. Industry standards have led to high levels of interoperability, so simplifying the process of combining services into applications. This has encouraged the recent growth in the use of workflow languages such as BPEL, which support the rapid integration of services through the provision of simple, visual design tools. Software reuse is therefore decreasing the time spent on developing and maintaining new software and is helping to decrease the Total Cost of Ownership.
Data reuse encourages the exploitation of valuable information resources throughout the enterprise, while reducing the cost of maintaining and synchronising duplicated data. One effect of the move to SOA is to break down application silos, in which application logic and data are tightly coupled, into a set of services that can be combined in bespoke ways to build new applications (illustrated above). Exposing data as services in this way makes it easier to construct applications that share data, obviating the need for each application to manage its own copy.
Hardware reuse increases utilization and reduces the number of separate boxes that must be purchased, maintained and managed. It is achieved by allowing a hardware resource to support a set of applications, rather than dedicating each resource to only one application.