A software development environment that assists in the use and design of reusable modules

Reusability falls into five basic areas: reusable data, reusable architecture, reusable programs and common systems, reusable designs, and reusable modules. This research project is concerned with the last two areas and defines reusability as the reuse of software components in systems other than the original system for which the components were designed. Very little assistance is offered the user in the actual selection of modules for reuse. In order for reusability to reach its full potential of reducing software development costs and time, better assistance must be provided. This research holds that given a proper environment, the incorporation of reusable modules into the design is a useful approach for reducing the cost and time of software development. This software development environment (SDE) should provide (1) intelligent assistance to help the user choose which modules to incorporate into the developing software, (2) an interface that is easy and quick to use yet provides exact input necessary for the SDE to make module selections, (3) a simple method for adding reusable modules and automatically incorporating new options into the SDE, (4) automatic linking modules into the software product, and (5) a mechanism for viewing the software product at several different levels of detail. The central component of the environment is a knowledge-based system that contains knowledge about the modules and selection rules for each module. A basic premise of this research is that the domain of the developing software is more important in selecting modules than the data structures or programming language used in the software. Thus, knowledge centered around a specific domain is gathered from experts, publications, legislation, etc. and made available to the user for assistance in design decisions. In order to demonstrate the usefulness and to confirm the requirements and design of the SDE, a prototype was designed and implemented. With respect to the list of requirements for the SDE, the following were incorporated into the prototype: (1) a knowledge-based system for intelligent assistance, (2) a menu driven user interface, (3) a subsystem that assists the user in adding new modules and automatically incorporates them into the menu system, (4) a subsystem that automatically links reusable modules, and (5) a hypertext system that links graphic designs of the software and its components. The prototype was then tested in a payroll accounting domain. Experiences with the SDE prototype established that a knowledge-based environment provides fast software development through the use of reusable modules.