When I want to design something, I get an urge to sculpt it with my hands. So the idea is have a tool that lets me design a system manually. I want to have pieces of the system look like I want them. Objects shouldn't all look the same just because they're all objects. Instead, the appearance of an object should match how I think of it. So a controller object is spiky and tall, while a collection object looks like a pool of water.
It would be object-based, rather than class-based. So a sketch can contain more than one object of the same type. And pointer relationships can be sketched by connecting the objects with links. Most things can be annotated. The system as I'm currently envisioning it would be centered on self-contained data structures. Network connections, user-interfaces, etc, are not easily represented. It's designed for sketching out the relationships between various bits and pieces, not for actually implementing them.
An important part of programming is the ability to understand a system's dynamic behavior. So we provide before and after pictures for various actions. Or maybe there's just a collection of pictures, with no before and after distinctions. For illustrating algorithms, we need the ability to see an image changing. So we have animations. Temporary variables are shown in a little floating window. To direct your attention to the animating parts, elements can be highlighted. A recording facility makes the generation of animations simple.
The idea is that the document is a work-in-progress. So we must be able to re-organize very easily. This means the system doesn't enforce things like type constraints. Also, changing the overall design would obviously break lots of before/after and algorithm animations. These animations should go into a broken state, rather than interfering with the work. They should also rememer what things looked like before they broke, so they can be played even though the model has changed.
To provide refinement of the system, methods and attributes could be assigned types, which are aware of the modelling process. So you can label an attribute as a String. If you tried to connect it to a Date, it would turn red or something. Types would mainly be used for automatic verification/animation of the system.
Last updated April 9th, 1997
Back to Kimberley's Code.
Back to Kimberley's Home Page.