Reusability is the ability of software elements to serve for the construction of many different applications.The need for reusability comes from the observation that software systems often follow similar patterns; it should be possible to exploit this commonality and avoid reinventing solutions to problems that have been encountered before. By capturing such a pattern, a reusable software element will be applicable to many different developments.
Reusability has an influence on all other aspects of software quality, for solving the reusability problem essentially means that less software must be written, and hence that more effort may be devoted to improving the other factors, such as correctness and robustness.the more autonomous the modules, the higher the likelihood that a simple change will affect just one module, or a small number of modules, rather than triggering off a chain reaction of changes over the whole system.
Here again is an issue that the traditional view of the software lifecycle had not properly recognized, and for the same historical reason.you must find ways to solve one problem before you worry about applying the solution to other problems.But with the growth of software and its attempts to become a true industry the need for reusability has become a pressing concern.A simple architecture will always be easier to adapt to changes than a complex one.
Reusability will play a central role in the discussions of the following chapters, one of which is in fact devoted entirely to an in-depth examination of this quality factor, its concrete benefits, and the issues it raises.The object-oriented method is, before anything else, a system architecture method which helps designers produce systems whose structure remains both simple and decentralized.