Much research has been done about the problems of object-oriented programs and their dynamic behavior (Wilde and Huitt, 1992). Walkinshaw, Roper and Wood (2005) have described these problematic topics. The numbering is added.

The cases in the figure below from 1 to 12 are numbered from the easiest to the most difficult. The cases are ordered by their nature (either static or dynamic) and by the complexity or ambiguity of the references they can create from the viewpoint of source code analysis:

  • R1.    JDK references are stored to the model.
  • R2.    Static method calls have their calling semantics with returned values.
  • R3.    A factory design pattern is used  for objects containing states.
  • R4.    References to a super class, including attributes and methods.
  • R5.    Methods are inherited from super classes.
  • R6.    Conditions for overwritten methods must be detected.
  • R7.    Polymorphic calls must be identified according to actual arguments.
  • R8.    Different class instances must be identified.
  • R9.  Threads and other delocalized operations give rise to distributed phenomena.
  • R10.   Object instances and their memory requirements must be identified.
  • R11.   Shared object references should be mastered by a read/write logic.
  • R12.   Selecting a type for an object depends on commands like instanceOf.


The figure is a modification from the one of Neil Walkinshaw (2005).