Introduction

Many software design problems are ill-structured [Simo 73] with fluctuating and conflicting requirements. Traditional software design, use and maintenance methodologies are inadequate for dealing with ill-structured problems. Empirical studies have shown that those problems are best understood as design problems in which the design space and requirements unfold incrementally [Fisc 91d]. These problems call for an integrated approach, supporting coevolution of requirements specification and design construction.

Complex systems are not designed from scratch, but they evolve [Dawk 87]. Complex systems evolve faster if they can be build on stable subsystems [Simo 81]. Previously solved design problems and design experiences should be used for informing designers of possible solutions, failures, or justifications of current decisions.

The above requirements have led us to conclude that software should be developed in integrated, domain-oriented, knowledge-based design environments that support the whole lifecycle of software – requirement articulation, design, maintenance, and reuse. Our goal is to empower software designers and to augment their capability and productivity through artificial intelligence and human-computer interaction techniques.

The research described here addresses issues of software reuse in such design environments. Design environments store previously constructed design solutions as domain knowledge. By integrating design creation tools and domain knowledge bases, our environments based on the multifaceted architecture support the cycle of location, comprehension, and modification of prestored design objects in one coherent substrate. One system component, CATALOGEXPLORER, which supports the location phase in design environments, is described.