Computer programmers and architects both build models. While they are quite di erent from one another in terms of the media they use, they do share some features. We usually think of architectural models as miniature scaled-down physical objects, built to show the overall geometry and sometimes the colors of a proposed building. The models that programmers build describe relationships of cause and e ect within a software system. Both kinds of models are simpli ed or abstract representations of information and processes, simpler than the reality they mean to capture, focused on the essential aspects of the situation, used to enable control or make predictions, because they behave correctly in the limited reality they represent. For instance, an architectural study model is often proportionally correct, but materially inaccurate (few buildings are built of cardboard, balsa, or basswood), and while it may have the correct exterior geometry it often has no interior partitions.