This paper presents a baseline model of program understanding. Its components are the working representation, the knowledge base, the goals and the strategies. According to the schema-based approach of program understanding, it is assumed that the activation of knowledge structures stored in memory called either schemas, plans or scripts create expectation systems about information in the program. These expectations can either succeed or they can fail. The originality of our model is to stress the fact that the mechanisms of understanding are either data-driven or conceptually-driven according to the understanding situation which is characterised by the match between the program characteristics and the readers' knowledge characteristics. Furthermore, different kinds of difficulties which programmers may encounter are highlighted and different kinds of strategies which they use for recovery from understanding failures are presented.