In this paper we discuss issues of case retrieval and adaptation in case-based reasoning systems focusing on design expert systems. We also propose an analogical reasoning algorithm, analogy by abstraction (ABA), that uses previously solved problems as cases to solve new design problems. ABA employs a classification hierarchy of previous problems to find wider similarities for case retrieval. ABA also uses a concept hierarchy for problem descriptions to modify a similar case for case adaptation efficiently. The major steps ofABA are SEARCH, ABSTRACT, REFINE, APPLY, and VERIFY. These steps are designed generally so that they can be applied to various task domains in synthesis type of expert systems. We exemplify the effectiveness of ABA with a case study of invention of a simple mechanical device.