Share this Page URL

Chapter 44. Abstract Objects > The Context Concept - Pg. 142

Abstract Objects 142 The advent of elegant and powerful visual development tools, such as Borland's Delphi or IBM's Visual Age, seems to have further promoted a primitive mode of engineering and even elevated it to the level of standard practice. With these modern tools, people design user interfaces not by design but by construction. They paste together objects, manipulating real list boxes and data grids and others of the growing panoply of modern GUI widgets. Of course, real sticklers for accuracy and object-oriented purity might be quick to point out that some putatively object-oriented visual development environments are more accurately labeled instanced-based rather than object-orien- ted, but the best and the worst of the tools all support much the same degree of concrete reasoning with apparently real widgets. Within these tools, things stand for themselves, and that's that. A form is a form is a form. About as abstract as most user interface designers might get is to draw up a quick sketch on paper, replete with sloppy icons and skewed scroll bars. When the users complain about readability or crack wise about the dearth of artistry among the designers, developers quickly abandon sketches for software. After all, it is faster and easier just to throw some real widgets on a form with Visual Objects or Visual Basic or Visual Age or Visual Goober. In mere minutes, a user interface can be created that actually runs. It looks and feels like the real thing because it is. And, like many a real thing in real software, it went directly from impulse to fingertips and onto the screen without passing through deliberate design. The responsibility for this sorry state of affairs rests not entirely with the tools or their makers any more than with the practitioners who use them. Object-oriented methodologies and tools do not offer effective models to represent user interface designs in the abstract. In order to represent the architecture of user interfaces in the abstract, we need three things. First, we need a way to represent the various contexts within which users will interact with the system without committing to whether the final realization will be a window or a screen, a form or the panel of a tabbed dialogue. Second, we need ways to represent the contents of these various interaction