Object-oriented design methodology to facilitate reuse

Date of Completion

January 1998


Computer Science




The primary goal of developing reusable software is to reduce the time and effort of the development and maintenance of other similar systems. The object-oriented (OO) paradigm assists us in creating reusable software because of its mechanisms to encapsulate related data and functions, to hide private information, and to easily extend existing program units. However, programming using an OO language does not automatically produce reusable software. Further, popular OO design methodologies do not include techniques or guidelines for constructing reusable systems.^ Our research focuses on developing a framework to analyze the reusability of OO designs and software, which can be applied iteratively at early and all stages of the design and development process. The framework can be incorporated into a design/development environment, so that portions of the analysis can be automated and reusability improvements can be part of "business as usual" for an organization. The essential components of our approach are two reuse-specific and subjective characterizations of OO classes and hierarchies, and a set of metrics, which objectively measures the dependencies among design components based on those reuse-specific characterizations.^ One benefit of our approach is that design portions, which are expected to be reused, are clearly identified and will be able to be reused as is. This is because non-reusable dependencies are pointed out and guidelines for (re)moving these non-reusable dependencies are provided. Another benefit is, the reusable portions will contain many reusable dependencies; this is good for reuse because they represent valuable design knowledge. We also demonstrate how this technique can be used with any OO design methodologies to guide designers in producing reusable subsystems. ^