Coverage browser

The top lists show the ratio (number of methods called vs. total number of methods in the selected protocols / classes / applications). The bottom text field shows those parts of individual methods that have already been activated (red). Simply reactivating the window recomputes the ratios. (VW 2.5 / Envy)

Selecting the activations / coverage button enables us to view acummulated numbers of method activations.

The method tracer (actually a Smalltalk interpreter embedded transparently in the Smallltalk environment, so it is easy to change) keeps track of the actual method invocations in message sends (this is, in fact, a natural consequence of the interpreter optimization). This enables the user to focus more selectively on the method implementations. In this example, the #value: message is sent to a block closure, hence we only show this implementor.

Querying the data

Once we start tracing the system, we can query the statistics. For instance (a bit quick and dirty):

AGMessageExpression allInstances select: [ :message | message selector == #and: and: [ message arguments first activations * factor < message receiver activations ]],

i.e. search for all #and: messages where the block argument is called less frequently than the receiver by a certain factor; hence might it be worthwhile to swap the evaluation order?

Or, find all the message expressions that resulted in only one method implementation:

AGMessageExpression allInstances select: [ :message | message methods size = 1 ].


The coverage browser uses the interpreter and browser sources. Both are developed in VisualWorks 2.5. The browser subclasses the Envy application manager browser. See readme for info usage and some tips.

You will also need to download the method wrapper code at John Brant's site (file in the main parcel source code).

New developments

VW5i-compatible version. The categories are filtered according to the selected namespace (or optionally, a namespace and all its sub-environments).

Cliking on a variable (the screendump somehow discards the "hand" cursor) shows the variable's actual type(s).

Cliking on a message (keyword) shows the message's actual implementors. Select an element to jump to the corresponding implementor.

Internet business application framework

Highly configurable Internet business application development framework, driven by self-descriptive dynamic object-models. (VW 5i / VWave session management)

Advanced users create new applications in the framework (these applications may also be accessed in client-server mode in an intranet, without Web browsers). This process typically starts by extending / refactoring the object model and defining an application environment (see publications for more info).

Now we have a fully operational default application, where users can enter and query data, import and view documents, access thesaurus and inbaskets, ...

End-users then configure this application, for instance by means of list and form layouts, queries and business rules. In general, few (if any) scripting is needed.

Then the users are ready to configure the Internet server. This requires no knowledge of HTML. They simply re-use applications, views, stored queries, ... configured and maintained in the framework. The Web server is another client of the framework, and generates forms, query screens and queries on the fly, using the meta-information at run-time. Since the framework is self-descriptive, object model, business rules, ... can be viewed (and in a later stage managed, given the right privileges, of course) through the web as well.

Access to the information maintained in the database is organized in one or more hierarchies. Each node in the hierarchy represents a query. Selecting the node results in an appropriate query screen, based on the meta-information.

From the results of the query, users can browse the information by following the associations or they can retrieve attached documents, in a similar way as in the framework. No coding is required.

In addition to the standard framework tools, we provide additional list and form layout tools that enable us to combine layout specifications with user-defined HTML-templates.

For this particular type of information we selected a list layout using HTML templates. The template applies to each individual object in the list.

Note: I found these cute icons on the web. If you happen to know they are protected by copyrights, please let me know.