However, the types of some program elements may not be readily discernible by examining their implementation artifacts. For example, in some implementations it is not possible to distinguish a pool from a global variable whose current value is a dictionary with strings for keys. More generally, it is not possible to synthesize the original initialization expressions for global variables. It is only possible to produce expressions that reproduce their current values. Lack of a program definition in traditional Smalltalk environments leads to an undue reliance on the virtual image.
Images can become obsolete or broken.
Because the program is encoded in the image, the program is in danger of becoming inaccessible if the image becomes outmoded or corrupt. Smalltalk s imperative program construction model also requires that the same virtual image be used both for program creation and program delivery. This makes it very difficult to support situations where the development must be performed in a computing environment that is different from the target execution environment. The imperative expressions that extend the virtual image into an application program are either entered interactively using programming environment tools or read from an external file. A browser is used for defining classes and methods.