Software reuse is widely believed to be a key to improving software productivity and quality in conventional software. In expert systems, much of the knowledge has been compiled (i.e., compressed and restricted into effective procedures) and this makes reusability difficult. One of the issues in modeling expert systems for enhanced reusability is capturing explicity the underlying problem solving designs. Principled knowledge representation schemes have been used to model components of complex software systems. However, the potential for applying these principled modeling techniques for explicitly capturing the problem solving designs of expert systems has not been fully explored. To overcome this omission, we use an Artificial Intelligence knowledge representation scheme for developing an ontology of the software components to facilitate their classification and retrieval. The application of our ontological approach is of both theoretical and practical significance. This method facilitates the reuse of high-level design. We illustrate the application of principled domain modeling using two real world applications of knowledge-based systems.