Applications supporting a graphical user interface (GUI) are difficult to write. While existing tools can accelerate software development, they suffer from a number of problems that limit their helpfulness. They offer too little functionality, and support only a small part of the GUI software development task. They lack architectural models...