ABSTRACT

The triumph of the graphical user interface has been one of the most impressive developments in software during the past three decades.1 Today the concept is so familiar as to need no description. Although from the beginning, windows, icons, menus, and pointing have been intuitive and easy to grasp for users, they remain a challenge for programmers. The internal GUI architecture baffles many newcomers, who often find it strange, backwards, mind-boggling, or weird. GUI programming is different because unlike traditional data processing, it is entirely event-driven. Events

can occur at any time in any order. The application always must be prepared to handle them. GUI is an example of a complex reactive system.