There are a few approaches to knowledge-based concept assignment. They differ in the kind of knowledge they use and which technique they apply to find concepts in the source code.
Program plans (also known as program concepts or cliches if they are commonly used) are schemes in which certain programming problems are usually solved. They are specified in terms of control and data flow and other structural information. A parsing approach (or sometimes only pattern matching) will match plans stored in a plan base with the source code to assign concepts.
Human oriented concepts are often rather informal or semi-formal. They can't always be expressed in structural information only. Therefore, a pure parsing approach which depends on structural plans fails to assign human oriented concepts. A more promising approach, called informal reasoning, will take informal knowledge like natural language comments, or grouping into account too. The needed base of knowledge about the problem for the informal reasoning is called domain model. It is assumed that the domain model (problem, program and application) knowledge can be usefully represented as patterns of informal and semi-formal information, which are called conceptual abstractions.