In this paper an approach for the inference of recurrent design patterns directly from the code is proposed. No assumption is made on the availability of any pattern library, and the concept analysis algorithm -- adapted for this purpose -- is able to infer the presence of class groups which instantiate a common, repeated pattern. In fact, concept analysis provides sets of objects sharing attributes, which -- in the case of object oriented design patterns -- become class members or inter-class relations.
The approach was applied to 3 C++ applications for which the structural relations among classes led to the extraction of a set of design patterns, which could be enriched with non structural information about class members and method invocations. The resulting patterns could be interpreted as meaningful organizations aimed at solving general problems which have several instances in the analyzed applications.