User Interface
A User Interface is a type of Language. A Component implements a User
Interface Language for communication with the user. A User Interface
Component depends on an Application Component.
User Inteface Scope
The scope of the User Interface is very narrow and only concerned with
the immediate interaction with the user.
Command Line Interface (CLI): Command line parameter parsing,
text formatting, text output.
Graphical User Interface (GUI): Widget management, graphical
rendering, event handling.
User Interface Complications
A User Interface Language is typically very difficult to program
in. For a GUI, the available data has been coded into a two
dimensional array of dots with different colors. The data has almost
been encrypted, or at least obfuscated, from the programmers point of
view, and it is very difficult to extract the content
programmatically.
A User Interface Language is best treated as any other presentation
format, like pictures, sound or text layout. The UI should be
completely separated from the rest of the Application. No or very
little policy should be coded into the UI. The Application supplies a
Language for the UI to use. The Application Language supplies data for
presentation and accepts commands from the UI. The Application
Language also specifies which commands currently are allowed to be
executed.
User Interfaces are often difficult to reuse and test. Therefore, they
should be kept as thin as possible.
Human-Computer Interaction
UI construction and data visualization is not something a programmer
is generally good at, and should be left to artists, industrial
designers and human-computer interaction gurus. The programmer should
focus on constructing a language suitable to be presented in a
GUI. This is what a programmer is good at, language construction.
UI Tools
Tools for UI construction should be designed with the notion that the
UI is a presentation layer, not the core of an application.
|
|
Related Topics
Application Architectural Patterns Client-Server Component Examples Implementation Language Model-View-Controller Process Use Cases
|