LISA

Language

Component

Architecture

Architectural Patterns

Notation

Implementation

References

Examples

FAQ

The Author


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

Copyright (C) 2003, Marcus Andersson