High-Level Declarative User Interfaces
Sofie Goderis, Vrije Universiteit Brussel
A problem when maintaining user interface logic is that it is entangled with the underlying application logic. With user interface (UI) logic we refer to visualisation and components' behaviour whereas with application logic we mean functional code, business model, etc. The fact that the UI logic is scattered throughout the application logic makes adapting the UI logic and evolving the application logic cumbersome and difficult for the programmer.
In order to solve this problem we need a high level separation between the UI and application, which helps the programmer to deal with UIs. Several techniques, like aspect-oriented and component based software engineering, have been used for handling the application concern, however few have been applied to tackle the UI concern.
In this research we distinguish between three UI concerns : visualisation, behaviour and application interactions. Visualisation is what the UI looks like and what widgets are provided. UI behaviour refers to how widgets relate to one another. The application interactions describe how the UI hooks into the application.
Increasing expressiveness and higher level UI specifications means decreasing the need for the programmer to deal with entangled code. To achieve this we need to write down the different UI concerns declaratively and generate certain parts of UI actions and interactions automatically. To validate this approach we implement a UI specification framework by means of declarative meta programming. The logic language serves to specify the UI logic and the reasoning engine to generate the UI. We do not replace current techniques for creating UIs, such as model-view-controller or builder tools, but we ameliorate them when providing the programmer with support for dealing with UIs. Specifying the UI logic declaratively provides high level expressiveness and removes the need for entangling UI and application logic.
keywords : User Interfaces Specification, Declarative Meta Programming