You may find the following reference useful:

von Mayrhauser, A. and. Vans, A., (1995). Program Understanding:
Models and Experiments, In M.C. Yovits and M.V. Zelkowitz reds),
Advances in Computers, Vol. 40, (pp. 1 - 38), Academic Press, Inc

It is a survey of various cognition models that describe how
programmers understand programs, as well as empirical studies that
test these models.

Note that the first author changed her name from Anneliese von
Mayrhauser to Anneliese Andrews several years ago,  in case you are
interested in following up on her later research.



On Wed, Oct 22, 2008 at 9:34 AM, Miguel P.  Monteiro
> I would like to thank all who replied to my previous post, regarding 
> complexity.
> As I said in that post, my interest in cognitive psychology is motivated by 
> software
> engineering (SE). I agree that abstraction, as well as language/tool support 
> for it,
> is generally considered the way to tackle complexity. There is even a workshop
> dedicated to the topic (The Role of Abstraction in Software Engineering 
> Workshop).
> However, there seem to be very few studies of abstraction from the side of 
> cognitive
> psychology.
> I've also tried, without much success, to find out material on what cognitive
> psychology has to say about abstraction as a mechanism of the human mind. In
> particular, I'm interested in studying the connection between abstraction and 
> the
> hierarchical nature of mental models.
> It may be useful to distinguish between abstraction and generalisation, 
> though I'm
> interested in both. I refer to abstraction as an information filtering 
> process that
> extracts the properties of an object according to some focus, leaving aside 
> all
> properties deemed not relevant to the focus. In SE, this seems to be often 
> confused
> with generalisation, an information increasing process through which 
> information
> about a number of objects is collected and used to yield a single description 
> that
> applies to a larger set of objects.
> From what I could learn, both abstraction and generalisation seem to be ways 
> to
> "navigate" through hierarchical structures of concepts. These are useful to 
> compress
> information in an efficient way: a concept at one level can subsume all 
> concepts at
> lower levels (I suppose this is abstraction). In addition, different levels 
> of the
> hierarchy support different inferences. An inference about a concept at one 
> level
> does not necessarily apply to a concept at a more abstract level. This seems 
> to be
> related to generalisation.
> Representations of the world tend to be set-subset hierarchical structures, 
> one
> example being the taxonomy proposed by classical physics, which decomposes 
> objects
> into molecules, atoms, subatomic particles. Traditional programming languages 
> are
> another example, by organizing the modules into hierarchical structures, 
> according
> to a given decomposition criterion. In fact, the choice of decomposition 
> criterion
> defines the programming paradigm.
> For instance, a very successful decomposition criterion is that of 
> object-oriented
> programming (OOP). However, no single decomposition is adequate for problems 
> and
> systems: some concerns do not align well with the chosen decomposition. In 
> the case
> of OOP the so-called non-functional requirements are cause of problems. The 
> "more
> than hierarchical" nature of problems in modern SE provides the motivation 
> for my
> specific field of research - aspect-oriented software development (AOSD).
> AOSD focuses on systems and problems whose concerns map to more than one
> decomposition criteria. When a problem or system is "more than hierarchical", 
> i.e.,
> includes concerns that map to distinct decompositions, not all concepts can be
> cleanly represented within the modules provided by the chosen paradigm, 
> whatever
> that is. AOSD strives to obtain and manage modularity in the presence of such
> complex problems and systems.
> One thing that I recently realised is that though it is true that the human 
> mind
> tends to build hierarchical structures, it also able to manage _multiple_
> hierarchies, by relating a given concept from one hierarchy to a concept from 
> a
> different hierarchy. This seems to happen when we deal with different 
> subjective
> views of the same concept. One example is the concept of tree, which may 
> interest a
> woodsman from the point of view of its height, caloric consumption and yielded
> fruits. The woodsman may also build a hierarchy of trees based on this 
> criteria. A
> tax assessor, by contrast, may approach the concept of tree from the point of 
> view
> of estimated value, tax value and cost of cutting it down. The tax assessor 
> may
> build a different hierarchy of trees along these different criteria.
> The human mind seems capable of taking a view of a concept and polymorphically
> switch to another view of the same concept, and proceed "navigation" from that
> point, along the different conceptual hierarchy. Unfortunately, most 
> programming
> languages do not provide support for such kind of "multi-dimensional 
> polymorphism".
> My aim is to have a more precise and complete notion of mental models and its
> capabilities and limitations, in the hope of using this knowledge to build a 
> model
> to which programming languages and paradigms can be assessed.
> Thanks for any pointers,
> mpm
> --
> Miguel P. Monteiro          | cell phone +351 96 700 35 45
> Departamento de Informatica | Phone +351 21 294 8536 ext. 10708
> Faculdade Ciencias e Tecnol.| Fax: +351 21 294 8541
> Universidade Nova de Lisboa | URL: http://ctp.di.fct.unl.pt/~mpm
> 2829-516 Caparica, PORTUGAL | Skype: miguel.p.monteiro

Reply via email to